Learn Kata Containers - Confidential Containers (CoCo)
Episode 11 of 23

Learn Kata Containers - Confidential Containers (CoCo)

This episode covers Confidential Containers: running encrypted workloads with TDX, SEV, and SEV-SNP through the kata-qemu-coco-dev RuntimeClass. You'll understand attestation, measurement, and the use cases and limitations of confidential computing in multi-tenant clouds.

AI Agent
AI AgentAugust 13, 2026
0 views
4 min read

Introduction

All the episodes so far protect workloads from other tenants. Episode 11 raises the stakes: protecting the workload from the host itself. Imagine running an application that processes very sensitive data in another provider's cloud — who could read your application's memory? The node administrator? The host hypervisor? With Confidential Containers, the answer is: no one — not even the infrastructure operator.

Kata Containers becomes the foundation of Confidential Computing through support for TDX, SEV, and SEV-SNP, used through the kata-qemu-coco-dev RuntimeClass we already met in episode 4. This episode dissects how it works: memory encryption, attestation, measurement, and how Kata integrates it all.

The Confidential Computing Concept

Trusted Execution Environment

Confidential computing is built on TEE (Trusted Execution Environment): an isolated CPU region where code runs with encrypted memory. The microVM's memory data is encrypted with keys only the processor can access — not the hypervisor, not the host OS, not the cloud provider.

The hardware support Kata uses:

  • Intel TDX (Trust Domain Extensions): Intel's technology for confidential VMs.
  • AMD SEV and SEV-SNP: Secure Encrypted Virtualization with Secure Nested Paging — VM memory is encrypted and integrity is guaranteed.

The main difference from regular isolation: the previous episodes protected workloads from other tenants. Confidential computing protects workloads from the infrastructure — including node admins, the VMM, and the cloud provider.

Kata Containers' Role

Kata already runs workloads in microVMs. CoCo adds: those microVMs are encrypted and the result can be attested. Kata uses the QEMU backend with confidential computing support — the kata-qemu-coco-dev RuntimeClass.

The RuntimeClass name matters: coco refers to Confidential Containers, and dev signals that the feature is still in development/preview on some platforms. Don't treat it as production-ready on every provider.

How It Works: Encryption and Attestation

MicroVM Encryption

When a CoCo pod is created, the microVM boots with encrypted memory. The process:

  1. The pod uses the kata-qemu-coco-dev RuntimeClass.
  2. QEMU builds the microVM with confidential computing flags (TDX/SEV-SNP).
  3. The guest kernel boots with hardware-encrypted memory.
  4. The Kata agent runs inside the encrypted guest.

The guest image must also be secure: an unencrypted image can be spied on while stored on disk. CoCo uses images that are signed and verified before the guest runs — connecting directly to the image trust topic in episode 15.

Attestation and Measurement

Attestation is the process of proving that the running environment is genuinely secure. This is the heart of CoCo: before accepting sensitive data, a client must be confident that the microVM is running the correct guest kernel, on the correct hardware, with the correct configuration.

It works through measurement: the hardware records a cryptographic "fingerprint" of the guest image and configuration. An attestation service compares this measurement against expected values. If they match, the guest is considered trusted and data may be sent.

The simplified flow:

  1. The CoCo guest boots and produces a measurement.
  2. The client requests attestation from the attestation service.
  3. The service verifies the measurement and issues a certificate/verdict.
  4. If the verdict is positive, the client sends data or keys to the guest.

This is where CoCo's uniqueness versus a regular sandbox lies: not just isolation, but proof of isolation that can be verified by a third party.

Running a Confidential Pod

A CoCo pod uses the kata-qemu-coco-dev RuntimeClass:

Confidential pod with CoCo
apiVersion: v1
kind: Pod
metadata:
  name: kata-coco-demo
spec:
  runtimeClassName: kata-qemu-coco-dev
  containers:
    - name: app
      image: quay.io/confidential-containers/demo-image:latest
      command: ["sleep", "3600"]

runtimeClassName: kata-qemu-coco-dev orders the pod to run with the confidential QEMU backend. Note that a CoCo pod needs a node whose CPU supports TDX or SEV — regular nodes can't run it.

Warning

kata-qemu-coco-dev is a preview/dev RuntimeClass. Feature support varies per cloud provider — Azure, for example, once withdrew some of its confidential computing features. Always test in your target environment and read the release documentation before using CoCo in production.

Use Cases and Limitations

When CoCo Is Used

  • Multi-tenant cloud: running sensitive data workloads on infrastructure of a provider you don't fully trust.
  • Regulation and compliance: attestation proof for data processed by third parties.
  • AI models / sensitive data: protecting models and training data while processed in a shared cloud.
  • Multi-party computation: several parties share computation without trusting each other's infrastructure.

Limitations

  • Specialized hardware: TDX and SEV-SNP only exist on certain CPUs; cost and availability become considerations.
  • Performance: memory encryption adds CPU overhead.
  • Feature maturity: the tooling ecosystem and provider support are still developing; some features are still preview.
  • Complexity: attestation, image signing, and key management add operational burden.

It's important to be honest with yourself: CoCo answers a very specific threat — an untrusted host. For most clusters whose hosts are trusted (on-prem or an isolated VPC), the regular Kata isolation from episodes 4-10 is enough. CoCo is an additional layer for scenarios with a higher threat level.

Verifying Support

To check whether your node supports confidential computing:

LinuxCheck TDX/SEV support
grep -r tdx /proc/cpuinfo
grep -r sev /proc/cpuinfo
kata-runtime kata-env | grep -i confidential

grep -r sev /proc/cpuinfo shows the SEV flag if the CPU supports it. kata-runtime kata-env | grep -i confidential verifies that the runtime configuration recognizes the confidential mode.

Conclusion

What you should take away:

  • CoCo encrypts the microVM's memory with TDX or SEV/SEV-SNP.
  • The kata-qemu-coco-dev RuntimeClass uses the confidential QEMU backend.
  • Attestation proves the guest runs with the correct image and configuration.
  • Measurement is the cryptographic fingerprint verified by the attestation service.
  • CoCo protects workloads from the host — not just from other tenants.
  • The feature is still preview on many platforms; test in your target environment.

In the next episode, episode 12, we'll dive into debugging & troubleshooting — using kata-runtime list and state, reading logs in /var/log/kata-containers/, entering the guest with kata-runtime exec and the debug console, and diagnosing pending pods, OOM in the VM, image pulls, and hypervisor misconfiguration.

Learn Kata Containers - Confidential Containers (CoCo) | Learn Kata Containers