A Confidential Cluster is a Kubernetes cluster designed so that the cloud or infrastructure operator — including hypervisor administrators, datacenter staff, and anyone who can access the underlying hardware — is entirely outside the trusted computing base. It achieves this by running every Kubernetes node, including control plane nodes, as a Confidential VM, and by extending the confidential boundary to cover not just individual workloads but the cluster’s network traffic, persistent storage, and control plane state. The goal is that a workload owner can cryptographically verify the entire cluster before trusting it, and that no privileged party outside the cluster’s own CVMs can read or tamper with workload data, cluster secrets, or etcd contents.
The distinction from CoCo (Confidential Containers) is architectural scope and threat model. CoCo runs individual pods inside micro-CVMs while the Kubernetes worker nodes and control plane remain on conventional (non-confidential) infrastructure — the kubelet and control plane are untrusted, and CoCo compensates with per-pod attestation and policy enforcement via Trustee. A Confidential Cluster takes the opposite approach: the entire cluster infrastructure — every worker node, every control plane node — is inside CVMs, so the kubelet, etcd, and the Kubernetes API server all run within the confidential boundary. This closes the control plane as an attack surface entirely, but requires the cluster to be built from scratch on CVM-capable hardware rather than layered onto an existing cluster. The two approaches address the same adversary (the infrastructure operator) through different architectural means, and can be combined: a Confidential Cluster running CoCo workloads gives both cluster-level and pod-level confidentiality.
The critical operational challenge of a Confidential Cluster is node admission: how does a new node, booting autonomously in a cloud environment, prove to the existing cluster that it is a genuine, unmodified CVM before being allowed to join and receive the encryption keys it needs to access the cluster’s state disk, network, and etcd? The answer is attestation-gated join: the bootstrapping node produces a hardware attestation report (a TDX Quote or SEV-SNP report) and presents it over an attested TLS connection to a join service running on the existing control plane; only if the report matches the expected node image measurements does the join service issue a Kubernetes bootstrap token and the storage encryption key. This means every node in the cluster has been individually attested against a known-good image before being admitted — node images built along the lines of bootc and protected at runtime by composefs naturally provide the stable, reproducible measurements that make those reference values meaningful. The result is “whole cluster” attestation: a workload owner can derive a single hardware-rooted certificate that transitively covers the node image, the cluster topology, and the configuration of every node that was ever admitted to the cluster.
Relevant Red Hat blog posts#
- Confidential computing use cases (May 16, 2023)
