How Hyperledger Fabric on Kubernetes fits your own infrastructure
Hyperledger Fabric has no single managed Kubernetes integration, so running Fabric CAs, peers and orderers on Kubernetes is a deployment pattern assembled from Fabric's own components and Kubernetes primitives. Your consortium or enterprise must run these nodes in its own cloud accounts or data centers, which means your team owns the clusters, storage, keys and network paths between member organizations. Fabric's deployment guide is direct about the skill this requires: wherever components run, operators need a high degree of expertise in the chosen management system, such as Kubernetes. The same guide states that network structure must fit the business use case and any relevant laws and regulations in your industry, so cluster layout should follow from governance and channel design.
Start by fixing the Fabric version lines, because they set the upgrade path for every later decision. The current releases are v3.1.5 and v2.5.16, both published June 18, 2026. Fabric documentation identifies v2.5 as the long-term support release for production users, and the 3.x and 2.5 LTS lines receive patch releases in parallel. A 3.x network gains the SmartBFT ordering option and Ed25519 alongside ECDSA for MSP signing, but it also requires Kafka ordering to be migrated to Raft and all channels to be moved to the v2.x lifecycle before the upgrade. Ask each member which line it will run, and record that decision before you write image tags, manifests or change plans.
On the Kubernetes side, the project maintains its three most recent minor releases. As of September 2026 these were 1.37 (end of life October 28, 2027), 1.36 (June 28, 2027) and 1.35 (February 28, 2027). Kubernetes ships roughly three minor releases a year, so a cluster built now will need a planned minor-version upgrade within its support window. The version skew policy requires kube-apiserver to be upgraded one minor version at a time, ahead of kube-controller-manager, kube-scheduler and kubelets, and allows kubelets to be up to three minor versions older. Confirm that your chosen distribution is CNCF conformant, which checks that required Kubernetes APIs are supported, and schedule cluster upgrades so they do not coincide with Fabric peer or orderer upgrades.
Treat the skills gap as a design input rather than an afterthought. The work spans Fabric CA database configuration and enrollment, MSP and TLS key handling, etcd backups for the cluster, Kubernetes authentication and Secrets handling, and the operations service endpoints for health, log levels, version and metrics, which are protected with mutual TLS. Before you commit, name the person who will own each area and confirm that they have operated Fabric in production. If that coverage is thin, the gap is your first risk to plan for. Confirm each control in your own environment with your platform vendor and your auditors, and do not assume defaults will satisfy your obligations.
What you need before a Fabric cluster on Kubernetes
Six decisions and checks come before the first Fabric component runs on Kubernetes. They cover the Fabric release line, the Kubernetes versions you can run, the upgrade order, the control plane and etcd shape, and the people and reviews that approve the design.
Choose the Fabric release line
The Fabric documentation names v2.5 as the long-term support release for production users. The v3.x line adds a SmartBFT ordering service that tolerates failures of up to, but not including, one third of ordering nodes, and it adds Ed25519 alongside ECDSA for MSP signing. Both lines receive patch releases in parallel, with v3.1.5 and v2.5.16 published on June 18, 2026. Decide the line before you size the cluster, because it sets the ordering service and the upgrade path you will follow later.
Confirm supported Kubernetes minor versions
The Kubernetes project maintains the three most recent minor releases. As of September 2026 those were 1.37, 1.36 and 1.35, with end-of-life dates of October 28, 2027, June 28, 2027 and February 28, 2027. A cluster built on 1.35 therefore has the shortest remaining support window. Releases arrive roughly three times a year on a cycle of about 14 weeks, so check the releases page on the day you start, because the list changes with each release.
Upgrade the API server first
The Kubernetes version skew policy requires kube-apiserver to move one minor version at a time and to move before kube-controller-manager, kube-scheduler and kubelets. Kubelets may run up to three minor versions behind the API server, which gives room to upgrade nodes in waves. Fabric peers and orderers run as workloads on those nodes, so plan node upgrades around Fabric's own rolling procedure, which upgrades orderer binaries and then peer binaries. Schedule the Kubernetes and Fabric upgrade windows together.
Build a three node control plane
The kubeadm high availability guide describes a control plane with at least three nodes and a TCP load balancer in front of kube-apiserver on port 6443. You choose between a stacked topology, where etcd runs on the control plane nodes, and an external etcd cluster on separate hosts. The load balancer address becomes the endpoint your operators and automation use, so confirm its health checks, failover behavior and firewall rules before any Fabric component is deployed.
Size etcd and plan backups
The Kubernetes documentation says etcd should run with an odd number of members and recommends five members in production, so the cluster keeps quorum through member failures. Count which hosts and zones each member occupies before you pick a topology, because shared failure domains reduce the benefit of extra members. Schedule backups with etcdctl snapshot save and rehearse restores with etcdutl. Secrets are stored unencrypted in etcd by default, so confirm encryption at rest is enabled before any Fabric key material enters the cluster.
Staff the team and start legal review
The Fabric deployment guide says operators need a high degree of expertise in the chosen management system, such as Kubernetes, wherever components are deployed. Name owners for cluster operations, Fabric node administration, certificate authorities and on-call response, and confirm each person has hands-on time with the platform. The same guide requires that the network structure fit the business use case and any laws and regulations that apply to your industry. Start that review with compliance and data protection owners before any component is deployed.
One cluster per organization or a shared cluster: how member networking changes
The first decision for a multi-member Fabric network on Kubernetes is who owns the cluster that hosts each member's CA, peers and keys. A cluster per member organization puts the Fabric CA, peer MSP keys and TLS keys under that member's administrative control, so the member decides who can read Kubernetes Secrets, who can exec into pods and how the cluster is patched. A shared cluster, operated by one party or a hosting provider, reduces the number of control planes to run but moves that control to whoever holds cluster-admin rights. Neither option is a purely technical choice. It follows from governance and trust between members, and the Fabric deployment guide makes the same point when it says the network structure must fit the business use case and the relevant laws and regulations of the industry.
Network design changes with the model. In a per-organization setup, each member exposes its peers and any orderer nodes it hosts through its own ingress or load balancer, and every peer-to-peer and peer-to-orderer connection crosses a boundary between clusters. Each endpoint needs a TLS certificate issued by a CA that the other members trust, and the hostnames, ports and certificate SANs must be agreed in writing before the first deployment. In a shared cluster, members can use internal service addresses for co-located components, but the design still needs an external endpoint for every node that other members reach, and namespace, network policy and RBAC boundaries must keep one member's administrators out of another member's keys. Confirm with each member whether it will accept a shared control plane at all, because that answer decides the rest of the topology.
Orderer placement is where governance shows most clearly. Fabric recommends Raft, which keeps working while a majority of nodes are available, and a five-node cluster tolerates the loss of two nodes. Ask each member how many orderer nodes it will host, in which cluster and in which region, and whether any member will refuse to host orderers. Placing all orderers in one member's cluster concentrates both operational risk and control of channel configuration. Spreading them across clusters means each host operates its own etcd-backed Kubernetes control plane and carries the upgrade and recovery work that comes with it. Document the Raft consenter set, the endpoint for each orderer and the process for adding or removing a consenter before the network goes live.
Upgrades, incident ownership and audit evidence follow the cluster boundary. With one cluster per organization, each member schedules Kubernetes upgrades (the version skew policy requires the API server to move one minor version at a time), and Fabric binary upgrades must still be coordinated across members in the order the Fabric upgrade guide describes: back up the ledger and MSPs, upgrade orderers, upgrade peers, then update channel capabilities. A shared cluster means one maintenance window can affect several members, so the change process must give each member a veto or a defined notice period. For incidents, decide in advance who pages whom when a peer on another member's cluster stops responding, and who can read that member's operations service logs. For audit evidence, each member should be able to show its own key custody, RBAC bindings and backup records without depending on another member's cluster. Ask each member which evidence it must hold itself and which it can accept from a partner.
Hyperledger Fabric on Kubernetes deployment sequence
This sequence takes an empty set of clusters to a production Fabric network in which each organization runs its own CA, keys, peers and orderers on infrastructure it controls. Each step closes with a check that confirms the component works before the next one depends on it.
Build and confirm the Kubernetes control plane
The platform team builds the control plane first, using a highly available topology with at least three control plane nodes and a TCP load balancer in front of kube-apiserver on port 6443. Choose stacked etcd or an external etcd cluster, keep the etcd member count odd, and set up scheduled etcd snapshots with etcdctl snapshot save. Confirm the plan by restoring one snapshot into a scratch environment with etcdutl. The step is done when all nodes report Ready through the load balancer endpoint and the test restore brings the cluster state back.
Deploy each organization's Fabric CA with HA
Each member organization deploys its own Fabric CA inside its own cluster. Replace the default SQLite database with PostgreSQL or MySQL, then run several CA servers against that shared database behind a load balancer such as HAProxy. Confirm with your CA team which database version and driver settings they will support before build. The step is done when a test identity enrolls successfully through the load balancer, and enrollment still succeeds after one CA server pod is stopped.
Set up key storage with HSM or encrypted volumes
Decide where each organization's keys live before peers and orderers are created. Peer and orderer MSP signing keys can sit in an HSM through PKCS#11, but TLS keys must stay file-based, so those files belong on encrypted volumes. The prebuilt Fabric images are not built with PKCS#11 support, so the team builds custom images for HSM-backed nodes and tests them in a non-production cluster first. Ask the HSM vendor to confirm PKCS#11 library compatibility. The step is done when a test signing operation completes through the HSM and the TLS key files are confirmed on encrypted storage.
Deploy the Raft orderer set
Deploy the ordering service with an odd number of Raft nodes, following the Fabric recommendation for the crash fault tolerant Raft service. A five-node cluster tolerates the loss of two nodes, and each orderer runs in the cluster of the organization that hosts it. Use separate failure domains where your infrastructure allows. The step is done when the logs show that one leader was elected and the channel accepts blocks, and when stopping one orderer triggers a new election without losing service.
Deploy peers with the operations service enabled
Deploy peers in each organization's cluster with the operations service turned on. The service exposes /healthz for health checks, /logspec for log levels, /version and a Prometheus /metrics endpoint or StatsD push, and it is secured with mutual TLS client certificates. Plan the client certificates for monitoring and load balancer probes before go-live. The step is done when a health check from an authorized client returns a healthy status from /healthz, /version reports the version your release plan expects, and the metrics scrape succeeds.
Create channels and install chaincode through lifecycle
Create channels with the organizations that need them, join each peer to the channel, and install chaincode using the v2.x lifecycle. Each organization approves the chaincode definition, and the definition is committed once the required approvals exist. Keep channel design and endorsement policy decisions with the business and legal owners before this step. The step is done when every expected peer joins the channel, the chaincode definition shows the approvals you planned, and the committed definition is visible on each peer.
Verify the network end to end
Run an end-to-end verification across all organizations. Submit a test transaction through the client path, confirm it commits on every peer, and repeat after a planned failure of one orderer and one peer. Restore a backup of the ledger and MSPs into a separate environment to prove the backup plan works. Record the Fabric line in use, such as v2.5 LTS or the 3.x line, and document which upgrade steps apply later. The step is done when the test transaction commits on all peers, the failover tests pass, and the restore drill completes with a matching ledger height.
Secrets, HSM and encrypted volume choices for Fabric keys
The first decision for Fabric keys on Kubernetes is which material can move into a hardware security module and which must stay file-based. Fabric uses the PKCS#11 standard to keep peer and orderer MSP keys in an HSM. TLS keys must remain file-based, so the TLS private keys for peers, orderers and the operations service still need to be mounted from a Kubernetes Secret or an external store. Plan for both paths in the same cluster, because a production peer typically carries signing keys and TLS keys that are handled differently. Confirm the exact keystore configuration for your Fabric release against the Fabric HSM documentation before you write the Helm values or operator manifests.
The official prebuilt Fabric Docker images are not built with PKCS#11 support, so an HSM setup requires custom images. Your platform team should build an image that includes the PKCS#11 library supplied by your HSM vendor, pin its version, and run it through the same image scanning and signing process as the rest of your supply chain. Ask the HSM vendor whether the client library is licensed for container redistribution and whether it needs a network path to a licensed appliance or cloud HSM. Each image rebuild also needs a retest of signing, because a library change can alter how keys are located by label or slot.
Kubernetes Secrets are stored unencrypted in etcd by default, so anyone who can read etcd snapshots or the datastore can read the MSP and TLS material. At minimum, enable encryption at rest for Secrets in the API server configuration and verify it by reading a test Secret directly from etcd. Restrict get, list and watch on Secrets with namespace-scoped roles, and do not grant cluster-wide list or watch to operators who only need to deploy a peer. The Secrets Store CSI Driver is an alternative when your organization already runs a central vault: keys are fetched at pod start rather than stored as Secret objects, but you must confirm how rotation and pod restarts are handled for Fabric components that read key files only at startup.
Encrypted volumes and HSMs answer different risks, and the trade-off is mainly operational burden, recovery and audit. Encrypted persistent volumes protect data at rest on disk, are simpler to run, and keep signing keys readable by the peer process, so a compromised pod can still use them. An HSM keeps the private key inside a device that performs signing, which strengthens key custody, but it adds a dependency on device availability, slot and label configuration, HSM backup and key ceremonies, and vendor support. Recovery of an HSM-backed identity depends on the device backup, not on the volume snapshot. Ask the HSM vendor how keys are backed up and restored, what the audit log records, whether a failed device blocks signing, and what the licensing model is for each partition or cluster.
Before you choose, confirm the design with your HSM vendor and your security team. With the vendor, verify the PKCS#11 library version, the supported key types for your Fabric identities, the behavior when the HSM is unreachable, the process for rotating keys and the retention of audit logs. With the security team, agree which identities must be HSM-backed, who holds the HSM administrator and crypto officer roles, how Secret access is logged and reviewed, and which Kubernetes encryption-at-rest provider is approved. Put these answers in the written scope before work starts, because they change the image build, the RBAC model and the disaster recovery runbook.
How Kubernetes identities and Fabric identities map
This table maps each Kubernetes authentication path and each Fabric identity artifact to the source system that issues it, the Kubernetes object that holds it, and the team that owns it. Read it before you design namespaces, Secrets and volumes, because one credential often appears in several places. The main takeaway is that Kubernetes Secrets are stored unencrypted in etcd by default, so encryption at rest belongs in the plan for every row that holds key material.
| Identity or artifact | Source system | Target Kubernetes object | Owner and data held |
|---|---|---|---|
| Operator access to the cluster | Kubernetes API server authentication (X.509 client certificates, OIDC or JWT tokens, webhook or proxy) | RBAC Roles and RoleBindings naming groups or certificate subjects | Cluster platform team. Kubernetes holds no user objects, only the bindings that grant access. |
| Fabric CA registry and administrator identities | Fabric CA server with SQLite (default), PostgreSQL or MySQL database | External database service, or a persistent volume for SQLite, plus a Secret for the database credential | Organization CA operators. Identity records, affiliations, attributes and enrollment state. |
| User registry for enrollment | LDAP directory configured as the Fabric CA user registry | CA configuration file delivered through a ConfigMap, with the bind credential in a Secret | Directory team and CA operators. Lookup of users and groups during enrollment. Confirm bind account rights with the directory team. |
| Enrollment certificates and MSP signing keys | Fabric CA enrollment output for each peer, orderer and admin | MSP folder mounted from a Secret or volume into the peer or orderer pod | Node operators. Signing certificate, keystore, admincerts and cacerts for the MSP. |
| Peer and orderer TLS certificates | Fabric CA TLS profile | TLS Secret mounted as files into each pod | Node operators. TLS certificate and key used for node-to-node and client connections. |
| MSP keys held in an HSM | PKCS#11 HSM configured in the peer or orderer MSP settings | Pod access to the HSM library through a custom image, with the PIN in a Secret | HSM administrators and node operators. Signing keys stay in the HSM. Prebuilt images lack PKCS#11, so a custom image is required. |
| Certificate revocation list | Fabric CA generates the CRL when certificates are revoked | CRL file in the MSP crls folder, then the channel MSP definition through a config update | Organization CA operators. Revoked serial numbers. Confirm the distribution steps for your Fabric version before a revocation event. |
| Peer and orderer state | Ledger, state database and Raft logs written by running nodes | PersistentVolumeClaims bound to StatefulSet pods | Node operators. Block files, state data and Raft logs. Back up the ledger and MSPs before upgrades. |
Hardening a Fabric network running on Kubernetes
A Fabric network on Kubernetes inherits the security posture of the cluster beneath it, and the Fabric identities, keys and operations endpoints add their own exposure. The six areas below are the settings a team should configure and then verify, starting from the cluster and moving up to the Fabric components that run on it.
Encryption at rest for Secrets
Kubernetes stores Secrets unencrypted in etcd by default, so Fabric key material, enrollment credentials and database passwords held as Secrets can be read by anyone who gains access to etcd data or its backups. Configure encryption at rest for the Secrets resource, confirm that existing Secrets were rewritten after the change, and check that etcd snapshots sit under the same controls. Where key material should never be stored in the cluster, evaluate an external store through the Secrets Store CSI Driver. Ask your distribution how its encryption key management is configured.
Least-privilege RBAC
Grant each Fabric workload and each human role only the verbs and resources it needs. Operators who deploy peers should not hold broad rights to read Secrets across namespaces, and list and watch access on Secrets is a common gap because it exposes values without a separate get call. Review the bindings for service accounts used by CA, peer and orderer pods, remove cluster-admin bindings left over from installation, and record who holds each role so access reviews can be repeated.
Pod Security Standards for Fabric pods
Apply the Pod Security Standards at the namespace level to the namespaces that hold Fabric components, starting with the restricted profile where the images allow it. Fabric peers, orderers and CAs need persistent volumes and specific file ownership, so test each workload against the policy in warn or audit mode before enforcing it. Network policy and ingress rules that limit which pods can reach peer and orderer ports are separate controls. Confirm their syntax and enforcement with your chosen distribution and CNI plugin before relying on them.
Mutual TLS on operations endpoints
Fabric peers and orderers expose an operations service with /healthz, /logspec, /version and metrics, either a Prometheus /metrics endpoint or StatsD push. Configure it with mutual TLS so that only clients presenting a trusted certificate can query health, change log levels or scrape metrics. Runtime log level changes can expose sensitive detail, so restrict which identities may call /logspec. Test that an unauthenticated request is rejected and that monitoring agents hold valid client certificates.
Separation of CA administrators from node operators
Fabric CAs register identities, issue enrollment certificates and manage revocation, so whoever administers a CA controls who can become a network member. Keep CA administrator credentials and registration authority roles with a different team from the people who operate peer and orderer pods. Store CA admin credentials apart from node enrollment material, and route CA changes through a recorded approval step. Confirm that Kubernetes RBAC enforces this split, not only the written process.
Benchmark review with the CIS Kubernetes Benchmark
The CIS Kubernetes Benchmark is a published set of configuration checks for Kubernetes control plane and worker nodes. Use it as a structured checklist: run a scanner or manual review against the cluster that hosts Fabric, record each failed check, and decide per item whether to remediate it or document an accepted risk with a named owner. Repeat the review after each Kubernetes upgrade, because configuration can drift during upgrades. Agree with your security team in advance which benchmark version the review will follow.
Common failure points when Fabric runs on Kubernetes
This table lists failure points teams commonly hit when running Fabric CAs, peers and orderers on Kubernetes, with the symptom, likely cause and fix or check for each. Read each row as a review item to confirm before production traffic reaches the network. Most of these failures trace to storage, key placement, cluster sizing or upgrade order decided before the first deployment.
| Failure point | Symptom | Likely cause | Fix or check |
|---|---|---|---|
| Even-sized or undersized etcd or orderer set | Leader elections stall or the network halts after one member fails | An even member count adds no fault tolerance, and too few members leave no spare after a loss | Use an odd member count, with five recommended for production etcd. For Raft orderers, test that the set keeps a majority after one node is lost |
| CA data on local SQLite across replicas | Enrollments fail or identities are missing after a pod is rescheduled to another node | SQLite is the default backend and stores data in a local file, so each CA replica holds its own database | Point all CA servers at one shared PostgreSQL or MySQL database, and confirm enrollment works through the load balancer on every replica |
| Secrets unencrypted in etcd | Key material is readable by anyone who can access etcd or its backups | Kubernetes stores Secrets unencrypted in etcd by default | Enable encryption at rest, limit list and watch access with least-privilege RBAC, or use an external store through the Secrets Store CSI Driver. Verify with a test Secret |
| PKCS#11 requested with a prebuilt image | Peer or orderer rejects the HSM configuration or reports PKCS#11 is unavailable | The prebuilt Fabric Docker images are not built with PKCS#11 support | Build and version a custom image with PKCS#11 support, then test signing against the HSM in a staging network before rollout |
| TLS keys placed in an HSM | TLS handshakes fail or the node cannot start its TLS listener | Fabric requires TLS keys to stay file-based, so the HSM setup covers only MSP keys | Mount TLS keys from a Kubernetes Secret or encrypted volume, and place only peer and orderer MSP signing keys in the HSM |
| Kubelet and apiserver version skew during upgrades | Nodes report NotReady or control plane components behave inconsistently after an upgrade | Components are upgraded out of order, and the skew policy limits how far kubelets may lag the apiserver | Upgrade kube-apiserver one minor version at a time, then the other control plane components and kubelets, checking the skew policy at each step. Back up the ledger and MSPs before Fabric binary upgrades |
| Operations endpoints exposed without mutual TLS | Any pod on the cluster network can read metrics or change log levels through the operations endpoints | The operations service relies on mutual TLS client certificates, which must be configured and restricted to approved clients | Enforce client certificates on /healthz, /logspec, /version and /metrics, add network policies, and confirm that an unauthenticated request fails |
Upgrades and day-two operations on Kubernetes
A Fabric upgrade on Kubernetes is safe only when the prerequisites are cleared before any image changes. Fabric v3.0 removed Solo and Kafka consensus and the v1.x legacy chaincode lifecycle, so a network must migrate Kafka ordering to Raft and move every channel to the v2.x lifecycle before it upgrades to 3.x. Start with an inventory of every channel, its chaincode definitions and its orderer type. Any channel still on the legacy lifecycle or any cluster still on Kafka should be treated as a blocking item with its own change plan, not as a note for later.
The Fabric upgrade guide sets four steps in order: back up the ledger and MSPs, upgrade orderer binaries in a rolling fashion, upgrade peer binaries in a rolling fashion, then update application channel capability levels. On Kubernetes, the backup step means capturing the persistent volumes that hold ledgers and copying MSP material and certificates held in secrets. Roll one orderer at a time and confirm Raft quorum is healthy before moving to the next. Treat the capability level change as a separate decision point. Confirm with the Fabric upgrade documentation how to reverse it before you enable it on a production channel.
The Kubernetes layer has its own order. Under the version skew policy, the kube-apiserver must be upgraded first, one minor version at a time, followed by kube-controller-manager, kube-scheduler and the kubelets. Kubelets may run up to three minor versions behind the apiserver, which gives you room to finish node upgrades without rushing them. Take an etcd snapshot with etcdctl snapshot save before each control plane change. Rehearse a restore with etcdutl in a separate environment, since a backup that has never been restored is an unverified control. Confirm that your etcd cluster has an odd member count, with five members recommended for production.
Day-two monitoring relies on the Fabric operations service on each peer and orderer. It exposes /healthz for health checks, /logspec for runtime log levels, /version for the running release and a Prometheus /metrics endpoint or StatsD push. These endpoints are secured with mutual TLS client certificates, so your Prometheus scrape configuration needs a client identity that is issued and rotated under your certificate process. Fabric Gateway client APIs work with both v2.5 and v3.0, so applications can move on their own schedule. Confirm which release line you will run, since v2.5 is the long-term support release and the 3.x and 2.5 lines both receive patch releases.
Questions buyers ask before running Fabric on Kubernetes
How much does a Fabric on Kubernetes engagement cost?
The main cost drivers are the number of member organizations, the number of orderer and peer nodes, the key storage choice, the cluster ownership model, custom image work and the compliance evidence you need. Each member organization typically needs its own certificate authority, peers and, where it hosts ordering, orderer nodes, so every added party adds design, build and test work. A hardware security module for MSP keys also requires custom images, because the Fabric docs state that the prebuilt Docker images are not built with PKCS#11. DeployOpen does not publish a price list, so a quote follows from a written scope. Ask the quote to separate one-time work (design, build, initial deployment, testing) from recurring work (patching, upgrades, monitoring and any support retainer). Ask which items are fixed in scope and which are priced as options.
How long does a production Fabric on Kubernetes deployment take?
The duration depends on the scope you agree and on whether your team already runs Kubernetes in production. DeployOpen does not publish a standard timeline, so ask for the duration in the written fixed scope before work starts. Teams that already operate clusters with tested backups, identity integration and a release process mainly need Fabric design, certificate and key work, orderer and peer deployment, and testing. Teams starting from bare infrastructure also need cluster build and hardening. The kubeadm high availability guide describes at least three control plane nodes with a TCP load balancer in front of the API server, and etcd needs a backup plan. Expect the plan to include an upgrade rehearsal, since Kubernetes ships about three minor releases per year. Ask for milestones, the change windows your team can offer and the number of review rounds included.
What does our team need to provide for the engagement?
Plan to provide four kinds of input: Kubernetes operating skills, Fabric operating skills, governance decisions and access. On the Kubernetes side, someone must own cluster administration, RBAC, network policy, storage classes and etcd backups. On the Fabric side, someone must understand channels, endorsement policies, MSP structure and the upgrade sequence. Governance decisions include which organizations join which channels, who operates each orderer, which certificate authority issues identities, and how certificates are renewed and revoked. Access means cluster or deployment rights in your cloud accounts or data centers, network paths between member organizations, DNS and TLS certificate issuance, and time with your HSM team if you use one. Name a decision owner for each item before the scope is signed, because open governance questions are a common cause of schedule slippage.
Can an internal team run Fabric on Kubernetes without a partner?
Yes, a capable internal team can run this alone if it covers both skill sets and has time for a build phase. The Fabric deployment guide says that wherever components are deployed, operators need a high degree of expertise in the chosen management system, such as Kubernetes, and that the network structure must fit the business use case and relevant industry laws and regulations. Test your team against specific tasks: building and hardening clusters, running etcd backups and restores, operating Fabric CA and enrollment, rotating MSP and TLS keys, performing rolling binary upgrades, enabling channel capability levels, and monitoring operations service endpoints secured with mutual TLS. Run a short skills review with the engineers who will own the network. If gaps appear, a partner can cover the build while your team takes over operations, and the written scope should state who does what at handover.
Which Fabric version should a production network run today?
The Fabric documentation states that v2.5 remains the long-term support release for production users. The Fabric GitHub releases page lists v3.1.5 and v2.5.16, both published on June 18, 2026, so the 3.x and 2.5 lines receive patch releases in parallel. Fabric v3.0 added a BFT ordering service based on SmartBFT and Ed25519 alongside ECDSA for MSP signing, but it also removed Solo and Kafka consensus and the v1.x legacy chaincode lifecycle. Networks still on Kafka must migrate to Raft, and all channels must move to the v2.x lifecycle before upgrading. Choose the line through a compatibility review of your chaincode, clients and channels, and confirm the upgrade path against the current release notes. Check your Kubernetes version as well, since the project maintained 1.37, 1.36 and 1.35 as of September 2026.
How many orderer nodes should a production Fabric network use?
The Fabric documentation recommends the Raft ordering service, which is crash fault tolerant and keeps working while a majority of nodes are available. A five node Raft cluster tolerates the loss of two nodes. Fabric v3.0 also offers a BFT ordering service that tolerates failures of up to, but not including, one third of ordering nodes. More nodes increase compute, storage, monitoring and upgrade work, so the count should follow your fault tolerance target and the number of organizations that will operate ordering. Spread orderers across organizations and failure domains where your governance allows it. The Kubernetes guidance for etcd is similar: use an odd number of members, with five recommended in production. Ask the partner to show how the orderer count, placement and recovery steps match the governance model you agree.
How should we store keys and certificates for Fabric on Kubernetes?
Decide this early, because it sets the image build, the backup plan and the handover to your security team. Fabric can keep peer and orderer MSP keys in an HSM through PKCS#11, while TLS keys must remain file-based. Because the prebuilt images are not built with PKCS#11, an HSM choice requires custom images and a tested build pipeline. For the Fabric CA database, SQLite is the default, while PostgreSQL and MySQL support several CA servers sharing one database behind a load balancer such as HAProxy. Kubernetes stores Secrets unencrypted in etcd by default, so configure encryption at rest, restrict list and watch access with least-privilege RBAC, or use an external store through the Secrets Store CSI Driver. Confirm with your HSM and security teams who holds which keys, how they are backed up and how revocation works.
Who owns the Kubernetes clusters in a multi-organization Fabric network?
Ownership is a governance decision with technical consequences. Common models are each member running its own cluster in its own infrastructure, one shared cluster hosting several organizations with strict namespace and RBAC separation, or a single operator running clusters on behalf of members. Each model changes isolation, blast radius, audit scope, upgrade coordination and who pays for recurring work. Networking between organizations needs agreed endpoints, TLS, DNS and port rules that every member can verify. Upgrades also need coordination: the Kubernetes version skew policy requires kube-apiserver to be upgraded one minor version at a time before the controller manager, scheduler and kubelets, and kubelets may be up to three minor versions older than the API server. Record the model, the owner of each cluster and the upgrade calendar in the written scope before any build starts.
How DeployOpen scopes and delivers a Fabric deployment on Kubernetes
DeployOpen plans, implements, hardens, documents and supports self-hosted open-source platforms inside your own cloud accounts, data centers or air-gapped networks. For Hyperledger Fabric on Kubernetes, that means the CAs, peers and ordering nodes run in infrastructure you control, under a written scope agreed before work starts.
How we scope
- The written scope names each organization's Fabric CA, peers, orderer nodes and the Kubernetes clusters that host them.
- Scope ties network structure, channels and endorsement policies to your use case and industry regulations.
- Fixed-scope engagements agree deliverables and timelines in writing before work starts, and ongoing support is available as a retainer.
How we build
- Stand up a Kubernetes control plane with at least three nodes behind a TCP load balancer on port 6443.
- Plan etcd as an odd-sized cluster, with five members recommended for production and snapshot backups tested before go-live.
- Decide MSP key storage: an HSM via PKCS#11 needs custom images, and TLS keys stay file-based.
How we hand over
- Handover includes the Fabric CA setup with SQLite, PostgreSQL or MySQL, and load balancing for shared CA servers.
- Runbooks cover rolling upgrades of orderer then peer binaries, with ledger and MSP backups taken first.
- Operations documentation covers /healthz, /logspec, /version and Prometheus metrics, secured with mutual TLS client certificates.
How we support
- Retainers cover ongoing support, upgrades and continuous testing for the network after handover.
- Plan upgrades across the 2.5 LTS and 3.x lines, since both receive patch releases in parallel.
- Agree early who owns Kubernetes, etcd and certificate operations after handover, since Fabric needs that expertise.

