Blog
Platform Engineering
minutes

The evolution of Kubernetes mTLS: from manual logic to Ambient Mesh

Manual mTLS vs. Service Mesh: Which is right for your Kubernetes cluster? Explore the operational risks of manual setups and the benefits of node-based encryption.
Pierre Mavro
CTO & Co-founder
Summary
Twitter icon
linkedin icon

Many mature companies, looking for high security, express a desire for mTLS-encrypted traffic across their clusters, often seeking solutions that avoid the typical complexities associated with service meshes. This is a reasonable request with various solutions available, each presenting distinct trade-offs. This post will explore these options.

What is mTLS?

Mutual TLS (mTLS) is bidirectional network encryption, extending standard TLS (HTTPS).

While uncommon for public web browsers, mTLS is crucial for securing internal infrastructure (ex: Kubernetes clusters). It provides the core properties necessary for a zero trust security model:

  • Authenticity: Peers verify each other's identities.
  • Confidentiality: Data is protected from eavesdroppers.
  • Integrity: Data cannot be tampered with in transit.

These security guarantees are essential for meeting various internal, banking transactions systems, governmental compliance requirements (e.g., FIPS), etc…

Solutions

Manual integration

The most straightforward, or "traditional" method to implement Mutual TLS is by modifying every application to handle its own certificate management. At Qovery we’ve seen multiple customers performing mTLS this way. While it works well, it’s time consuming and requires a lot of effort to keep it under control!

This approach quickly becomes difficult for several reasons, scaling from tricky in small deployments to extremely challenging in large, diverse environments.

Provisioning certificates manually is a massive undertaking:

  • PKI Overhead: You must define a naming convention, establish and distribute roots of trust (Certificate Authority), sign certificates, and manage their storage.
  • Rotation: You must ensure a mechanism is in place to automatically and reliably rotate certificates before they expire to prevent critical outages (the dreaded "2AM alert").
  • Integration: While tools like cert-manager or SPIRE exist to help, most large organizations need to integrate with pre-existing, non-Kubernetes Public Key Infrastructure (PKI), making the implementation even more complex.

Once certificates are managed, every application must be modified and maintained to correctly use them:

  • Inconsistent Implementation: Across a polyglot environment (multiple programming languages and frameworks), it is hard to ensure consistent, correct logic for sending and verifying peer certificates.
  • Out of the box softwares: Many applications, especially vendor or open-source tools, cannot (or not easily) be modified and may not support mTLS or your specific certificate scheme.
  • Development Cost: Rolling out a code change to every application in a company is a slow, costly, and high-risk endeavor.

Implementing this change across an existing cluster creates significant operational risks:

  • Non-atomic Rollout: Since you cannot update all services simultaneously, how do you manage the partial state where some services use mTLS and others do not?
  • Verification Gap: How do you guarantee 100% of all inter-service traffic is using mTLS? It is easy to miss a communication path or egress point. Of course you can monitor everything, but the workload is heavy.
  • Risk of Outages: Incorrectly implemented certificate rotation logic or missed expiration dates are major sources of preventable downtime.

The conclusion is that the complexity and operational overhead of manual, application-level mTLS causes a new DevOps overhead. This is where a platform engineering solution like Qovery delivers its most significant value (Kubernetes)

CNI based solution

A common suggestion in security discussions is to use a Container Network Interface (CNI) for implementing Mutual TLS (mTLS). However, this approach has a critical flaw: no current CNI natively supports true Mutual TLS.

So why the confusion? CNIs are often mentioned alongside mTLS for a few reasons, despite not offering the full solution:

  • NetworkPolicy: Most CNIs implement Kubernetes NetworkPolicy. This is a component of a zero-trust architecture, but it only handles basic network segmentation. It does not provide encryption, authenticity, integrity, or confidentiality, the core benefits of mTLS.
  • Other Encryption Mechanisms: Some CNIs offer different forms of network encryption. For instance, Calico and Cilium support protocols like WireGuard or IPSec. While these provide a degree of encryption, they are not mTLS and offer different security guarantees.
  • Cilium's "Mutual Authentication": Cilium offers a feature it calls "Mutual Authentication." Although inspired by mTLS, it does not use the TLS protocol. Therefore, while it provides a form of peer authentication, it is not a technical substitute for the official "Mutual TLS" requirement.

The mTLS naming certainly creates confusion since, while it provides mutual authentication, it is not a technical equivalent due to the absence of the TLS protocol.

Service Mesh: The standard for automated mTLS

The most common and successful way to deploy Mutual TLS (mTLS) broadly across Kubernetes is by using a sidecar-based service mesh architecture. The most popular examples are Istio and Linkerd.

Instead of requiring you to modify your application code (compared to the manual version I explained above), a service mesh automatically deploys a small, dedicated network proxy (the sidecar) alongside every application container in a Pod.

  • Zero-Code mTLS: This proxy intercepts all incoming and outgoing network traffic for the application. It automatically performs the mTLS handshake, certificate management, and encryption/decryption on behalf of the application.
  • Application Transparency: The result is that traffic between any two meshed workloads is secured with mTLS without a single change to the application code.

Sidecar meshes are popular because they resolve all the major operational headaches of manual mTLS implementation:

  • Certificate Management: The mesh automatically handles the secure provisioning, distribution, and rotation of workload certificates.
  • Seamless Migration: Both Istio and Linkerd provide a critical feature for migration: they can automatically send and accept both plaintext and mTLS traffic. This allows you to deploy the mesh incrementally without breaking existing services, before eventually enforcing a strict mTLS-only policy cluster-wide.
  • Consistency: They enforce consistent mTLS implementation across all workloads, regardless of the application's programming language.

While service meshes are the dominant choice for mTLS, mostly to be used in production deployments, they come with a key trade-off:

  • Complexity and Overhead: Service meshes are large platforms that offer many features beyond mTLS (ex: traffic routing, rate limits, observability…). This can lead to a perception of being overkill if your only goal is mTLS, and it adds resource consumption (CPU, memory) and potential latency due to the extra proxy hop.

Node-Based Architecture

The concerns regarding the overhead and complexity of sidecar-based meshes have led to the development of a lighter, more focused architecture known as Ambient Mode (or Node-Based Mesh). Currently, Istio is the primary service mesh offering this approach.

Ambient Mode was explicitly designed to simplify the adoption of security features, with the core goal being "mTLS everywhere with minimal overhead." Instead of deploying a resource-intensive proxy per-workload (the sidecar model), Ambient Mode deploys a proxy per-node. This proxy handles the transparent mTLS encryption for all pods running on that node.

For users whose primary requirement is just mTLS, Ambient Mode often proves a better fit, directly addressing sidecar pain points:

Conclusion

For mTLS on Kubernetes, the best choice today is typically Ambient mode if this is the only requested feature. It's the fastest, lowest-overhead way to deploy mTLS cluster-wide.

The Sidecar approach is also a very popular and viable option, but be aware it adds a lot of extra functionality beyond just mTLS, which might be overkill, and require a high maintenance.

Manual integration is an option of last resort, suitable only for organizations with very specific needs and mature operations, as it is extremely challenging.

Share on :
Twitter icon
linkedin icon
Ready to rethink the way you do DevOps?
Qovery is a DevOps automation platform that enables organizations to deliver faster and focus on creating great products.
Book a demo

Suggested articles

Kubernetes
DevOps
 minutes
Best CI/CD tools for Kubernetes: Streamlining the cluster

Static delivery pipelines are becoming a bottleneck. The best CI/CD tools for Kubernetes are those that move beyond simple code builds to provide total environment orchestration and developer self-service.

Mélanie Dallé
Senior Marketing Manager
DevOps
Cloud
 minutes
Top 10 vSphere alternatives for modern hybrid cloud orchestration

The Broadcom acquisition of VMware has sent shockwaves through the enterprise world, with many organizations facing license cost increases of 2x to 5x. If you are looking to escape rising TCO and rigid subscription bundles, these are the top vSphere alternatives for a modern hybrid cloud.

Mélanie Dallé
Senior Marketing Manager
DevOps
Heroku
 minutes
Top 10 Heroku Postgres competitors for production databases

Escape rising Heroku costs and rigid limitations. Discover the best Heroku Postgres competitors that offer high availability, global scaling, and the flexibility to deploy on your own terms.

Mélanie Dallé
Senior Marketing Manager
DevOps
Kubernetes
Heroku
 minutes
Top 10 GitLab alternatives for DevOps teams

Is GitLab bloat slowing down your engineering team? Compare the top 10 GitLab alternatives for, from GitHub to lightweight automation platforms like Qovery. Escape the monolith and reclaim your velocity.

Mélanie Dallé
Senior Marketing Manager
DevOps
Kubernetes
Heroku
 minutes
Heroku vs. Kubernetes: A comprehensive comparison

Is the "Heroku Tax" draining your budget? Compare Heroku vs. Kubernetes in 2026. Learn how to solve complex orchestration challenges, like queue-based autoscaling and microservice sprawl, without the DevOps toil.

Mélanie Dallé
Senior Marketing Manager
DevOps
Kubernetes
 minutes
The complete guide to migrating from EKS to ECS

Is the EKS operational burden outweighing its benefits? Learn how to migrate from EKS to ECS, the technical trade-offs of AWS-native orchestration, and how to get ECS-level simplicity without losing Kubernetes power.

Mélanie Dallé
Senior Marketing Manager
Kubernetes
DevOps
Platform Engineering
6
 minutes
Kubernetes vs. Docker: Escaping the complexity trap

Is the "Kubernetes Tax" killing your team’s velocity? Compare Docker vs. Kubernetes in 2026 and discover how to get production-grade orchestration with the "Git Push" simplicity of Docker, without the operational toil.

Morgan Perry
Co-founder
DevSecOps
 minutes
Inside Qovery’s security architecture: how we secure your cloud & Kubernetes infrastructure

Discover how Qovery bridges the gap between developers and infrastructure with a "security by design" approach. From federated identities and unique encryption keys to real-time audit logs and SOC2 Type 2 certification - see how we protect your data while eliminating vendor lock-in.

Kevin Pochat
Security & Compliance Engineer

It’s time to rethink
the way you do DevOps

Turn DevOps into your strategic advantage with Qovery, automating the heavy lifting while you stay in control.