Skip to content

Build Not yet confirmed elsewhere1 publisher 2 min read Published

Cilium points SPIRE mutual authentication users to ztunnel before a likely v1.21 removal

Cilium committers deprecated SPIRE-based Mutual Authentication as of v1.20 and will most likely remove it in v1.21, per the project's deprecation issue. Anyone who adopted it has to plan a move to ztunnel, the feature that replaces it.

The Engineer · Build desk

Send a correction

Illustration accompanying Cilium points SPIRE mutual authentication users to ztunnel before a likely v1.21 removal
Generated illustration
Moving to ztunnel can break calls and L4 policies How Cilium's deprecation of SPIRE Mutual Authentication and the move to ztunnel reach adopters, clusters, namespaces and network policies.

Mutual Auth adopters: deprecated in v1.20, likely removed in v1.21. Cluster Mesh: must be disabled to enable ztunnel. New ztunnel installs: no encryption until a namespace is labeled. Enrolled namespaces: calls to non-enrolled ones break. L4 policies: fail except on port 15008.

Moving to ztunnel can break calls and L4 policies
WhoHowKindClaim
Mutual Auth adoptersDeprecated as of Cilium v1.20; committers will remove it in a later version, most likely v1.21decision2
Cluster Mesh clustersCluster Mesh must be disabled before enabling ztunnel; enabling both throws a validation errorconstraint10
New ztunnel installsNothing is encrypted until namespaces are opted in with the label io.cilium/mtls-enabled=trueconstraint11
Enrolled namespacesA call from enrolled payments to non-enrolled orders breaks; it does not silently degrade to unencryptedexposure14
Cilium L4 network policiesWon't work, as traffic is encrypted before it leaves the pod, except those targeting HBONE port 15008constraint15

What happened

  • The agent-side removal PR for the old Mutual Authentication feature is already merged.
  • The replacement, ztunnel Transparent Encryption, is under active development and does not need a SPIRE server.
  • After ztunnel is installed, nothing is encrypted until a namespace is labeled io.cilium/mtls-enabled=true.
  • Cilium's docs support traffic only when both the source and destination endpoints are enrolled in ztunnel.

Why it matters

  • Who has to decide decision Enrollment order becomes a dependency question. The write-up says an enrolled payments namespace calling a not-yet-enrolled orders namespace fails outright instead of falling back to plaintext, so callers have to be mapped first.
  • What it limits constraint Clusters running Cluster Mesh cannot adopt ztunnel until they disable it. The docs say the two are incompatible, and enabling both throws a validation error.
  • Who's exposed exposure Enrolling a namespace can change which network policies take effect. The docs say L4 policies stop working except those targeting the ztunnel HBONE port, 15008, because traffic is encrypted before it leaves the pod.
  • What it costs cost The destination is also Beta. ztunnel is under active development, but it carries the same maturity label as the feature it replaces.

A Cilium committer opened the deprecation issue, and the dev.to write-up quotes it: "Given the lack of progress on Mutual Auth, and the presence and at least equal stability of the new feature, as of Cilium v1.20, Cilium committers are marking the Mutual Auth feature as deprecated, and will remove the feature in a later version, most likely v1.21." [2] Removal would likely come one minor release after deprecation. [16]

What adopters are leaving shipped in 2023 as a Beta. It needs a SPIRE server deployed alongside Cilium, switched on with `authentication.mutual.spire.enabled=true`. [3]

The destination works differently. Cilium's docs describe ztunnel as "a purpose-built per-node proxy that provides transparent Layer 4 mTLS encryption and authentication for pod-to-pod communication." [6] Identity comes from two key pairs you generate yourself with the OpenSSL script in the docs. The bootstrap pair secures the connection between ztunnel and Cilium's certificate server. The CA pair is the root for the ephemeral, in-memory client certificates ztunnel issues on request. [8] Four files go into one secret, `cilium-ztunnel-secrets`, in `kube-system`. [7] The install then turns it on: `cilium install 1.20.2 --set encryption.enabled=true --set encryption.type=ztunnel`. [9]

Once a namespace is labeled, ztunnel enrolls every existing pod in it, except the ztunnel pods, and installs iptables rules in each pod's network namespace to redirect traffic to the local ztunnel proxy. Pods created later are enrolled automatically. Removing the label disenrolls them: `kubectl label namespace <namespace-name> io.cilium/mtls-enabled-`. [12]

We think the slow part of this migration is mapping the cross-namespace callers in the cluster, not generating the keys.

The write-up breaks off mid-sentence in its network-policy section, and it does not describe an automated conversion from existing Mutual Authentication settings. Teams on the old feature should read the Cilium ztunnel docs and the deprecation issue directly before scheduling the work.

What to watch

  • Whether the v1.21 release notes confirm removal of Mutual Authentication, or push it to a later version as the deprecation issue allows.
  • Whether ztunnel leaves Beta and gains Cluster Mesh support, since the current incompatibility blocks those clusters from migrating.
  • Whether Cilium's docs add a step-by-step path from existing Mutual Authentication settings to ztunnel.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence62
Adoption
Not scored
Hype gap+8
Incentives
Not scored
Confidence58
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    Cilium's older SPIRE-based Mutual Authentication feature is officially deprecated, with removal targeted for v1.21.

    Reported Supported Source: dev.to write-up originally published on DevToolHubView cited source
  2. [2]

    Per the deprecation issue opened by a Cilium committer: "Given the lack of progress on Mutual Auth, and the presence and at least equal stability of the new feature, as of Cilium v1.20, Cilium committers are marking the Mutual Auth feature as deprecated, and will remove the feature in a later version, most likely v1.21."

    Reported Supported Source: Cilium deprecation issue, as quoted by the dev.to write-upView cited source
  3. [3]

    Cilium shipped the SPIRE-based Mutual Authentication feature in 2023 as a Beta; it requires a SPIRE server deployed alongside Cilium, enabled with authentication.mutual.spire.enabled=true, to issue and verify identity certificates.

    Reported Supported Source: dev.to write-upView cited source

Get this ledger inside ChatGPT. Ask about any of our stories and the answer brings its figure, each claim’s verdict and the sources. Free, no account.

Add to ChatGPTAdd to Claude

Sources

1 independent publisher whose own reporting we read for this story.

  1. dev.to

    1 article · October 15, 2026

    Cilium mTLS ztunnel: Sidecar-Free Encryption Explained

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Topics

Loading related stories