Infra Stack Review

Data Sovereignty Is a Kubernetes Problem Not a Vendor Problem

Kubernetes control planes, not data centers, determine who can legally access your data.

Features Writer · · 10 min read
Cover illustration for “Data Sovereignty Is a Kubernetes Problem Not a Vendor Problem”
PaaS Alternatives · October 5, 2026 · 10 min read · 2,249 words

Data sovereignty is a question of who can be legally compelled to hand over your data, and that question is answered by corporate control, not by which data center the servers sit in. A hyperscaler running infrastructure in Frankfurt still answers to the laws governing its parent company under the US CLOUD Act, so picking a European region does nothing to change who a US court can order to produce your data. Region selection is a geographic control. Sovereignty is a jurisdictional one, and that gap between the two is what most cloud architecture still gets wrong.

The managed data warehouse makes the problem easy to see. When data sits in Snowflake or Redshift, the vendor controls the physical hardware, the hypervisor, the network, and the backup infrastructure. The customer gets contractual protections: a data processing agreement, a promise about where backups live, maybe a clause about notification in case of a legal request. None of that is operational control. The customer cannot independently confirm where the data physically sits at any given moment, and if the vendor holds the encryption keys, the vendor can access the data under the right legal or operational pressure. That is the exact scenario data residency laws exist to prevent.

Regulators, auditors, and procurement teams have converged on a more demanding checklist, and it breaks down into four properties. First, jurisdictional containment: every component that can read tenant data, including the control plane that manages it, has to sit inside the right legal boundary. Second, operational autonomy: the organization needs the ability to rebuild and migrate its infrastructure without depending on a vendor's cooperation. Third, cryptographic key ownership, held by the organization and not the vendor. Fourth, workload portability without a rewrite, so sovereignty isn't a one-way door. Picking Frankfurt satisfies none of these four properties on its own. It only answers where the disks happen to spin.

Where sovereignty authority resides inside a Kubernetes cluster

The same mistake appears one layer down, inside Kubernetes itself. An organization can run tenant workloads in separate regions and still have a single, shared Kubernetes control plane quietly centralizing every administrative decision: policy enforcement, API access, controller behavior, scheduling. Wherever that control plane lives, and whoever governs it, that is the platform's actual sovereignty boundary. Everything downstream of that is cosmetic.

Namespaces don't fix this. A namespace with strong role-based access control can feel like isolation, but custom resource definitions are shared across the cluster, admission webhooks are shared, and a single misconfigured controller can leak data across every tenant in that cluster. Deciding where a workload physically runs says nothing about who controls the system managing it.

Four components define that control. The API server is the entry point for every operation that touches the cluster. Etcd is the authoritative store holding all cluster state, including the data a legal request would actually target. The controller manager and the scheduler round out the set. All four run on the control plane (admission webhooks extend that control plane's behavior but aren't one of its named components). Wherever these four pieces are hosted, and under whose legal authority, determines who can be forced to hand over what.

This is where managed Kubernetes services create a quiet trade-off. GKE Autopilot and EKS with Fargate remove the burden of managing nodes directly, which is a real operational win. But the organization operating the underlying cluster is still bound by its own jurisdiction's laws. The legal target and the technical target become the same entity. An organization that picks a US-headquartered provider to run its Kubernetes control plane, even if that control plane physically sits in a Frankfurt data center, has left the sovereignty boundary unchanged. It has only moved the furniture.

Why a single cluster per jurisdiction falls short

The instinctive fix is to run one full Kubernetes cluster per jurisdiction. It sounds clean on a whiteboard and falls apart in production.

Multiplying dedicated clusters by jurisdiction, environment, and team adds up fast. Each cluster needs its own upgrade cadence, its own monitoring, its own on-call rotation, and its own disaster recovery plan. Costs climb and changes slow down, which is the opposite of what a platform team needs when regulatory requirements shift every few months.

Real platforms don't get the luxury of operating one jurisdiction at a time. A single platform might need to support EU and UK tenant environments simultaneously, each carrying its own compliance and residency rules, while running on shared regional infrastructure underneath. You can separate the data centers, but the risk stays if a shared control plane still sits above both environments. The control plane, not the data center, remains the point where sovereignty either holds or fails.

The staffing and cost burden of running separate clusters is a real constraint, not an inconvenience to work around. It pushes organizations back toward managed Kubernetes offerings, bringing back the vendor control that this entire argument started by rejecting. What's needed is control-plane isolation: a dedicated API server, a dedicated etcd store, dedicated admission webhooks, and a dedicated audit log for each jurisdiction, without needing a full, separate cluster operations team standing behind each one.

Tenant clusters as the durable sovereignty primitive

The tenant-cluster pattern solves this directly. Instead of standing up a full physical cluster per jurisdiction, a Kubernetes control plane gets carved out for each isolation boundary and runs as a set of pods on top of a shared underlying cluster. The sovereignty boundary becomes a control-plane boundary, and control planes are cheap to multiply when they run as workloads.

Each tenant cluster gets its own API server, its own controller manager, its own scheduler, and its own data store. One tenant's custom resource definitions, admission webhooks, and audit logs stay fully separate from another's, which is the exact isolation that shared namespaces promised and never delivered. vCluster is one open-source project that implements this pattern: it provisions tenant clusters as pods inside an existing Kubernetes cluster. An organization gets dedicated control planes without standing up separate physical infrastructure for every tenant.

The sovereignty properties that fall out of this design are concrete. Independent control planes mean independent Kubernetes versions and independent upgrade schedules. An organization can run one Kubernetes version in a jurisdiction where a regulator is still reviewing a CVE, while a different jurisdiction moves ahead with the upgrade on its own timeline. You stop managing version skew as a liability, and it becomes a deliberate tool for compliance timing.

The legal separation matters just as much as the technical separation. A CLOUD Act-style request directed at the operator of the underlying shared cluster doesn't automatically produce a tenant cluster's etcd contents, so long as that tenant's backing store is held by a jurisdiction-local operator. The legal target and the technical target are decoupled by design, which is the precise property that managed Kubernetes offerings fail to provide.

Portability follows from the same structure. A tenant cluster exposes a standard, conformant Kubernetes API, so workloads can move to any other conformant Kubernetes environment, hosted or self-managed, without a rewrite. An organization can move from a hyperscaler-backed cluster to sovereign infrastructure and keep its manifests, its CRDs, and its deployment pipeline intact.

This pattern is no longer a research exercise. The Swisscom sovereign Kubernetes reference architecture, published on architecture.cncf.io, uses this exact structure to express jurisdictional boundaries, and it's a strong signal of where the industry is headed. National rail operators, major banks, and European telecoms are already running Kubernetes, GitOps, and policy-driven automation to operate regulated workloads at scale across sovereign environments. The tenant-cluster pattern has moved past theory into infrastructure carrying real regulatory weight.

Policy as code: moving enforcement from contracts to the cluster itself

A dedicated control plane establishes the boundary. Policy as code is what enforces it, continuously and automatically, instead of relying on a contract that gets reviewed once a year.

The enforcement chain runs in a specific order, and every stage of it matters. Admission controllers enforce workload placement before a pod is ever scheduled onto a node. Node affinity rules make sure a workload only lands on infrastructure approved for the right jurisdiction. Namespace isolation draws clear boundaries inside each tenant cluster. Policy engines check every API request against the organization's sovereignty requirements, and they reject anything non-compliant before it reaches production. By the time a workload is running, it has already passed four separate checks tied to where it's legally allowed to exist.

OPA/Gatekeeper and Kyverno are the two tools doing most of this work in production today. Both let an organization encode jurisdictional requirements directly into the cluster. Sovereignty policy lives in Git, gets peer-reviewed like any other code change, runs through CI pipelines for testing, and gets enforced automatically at deployment time. The result is continuous, auditable enforcement. Every policy change leaves a trace. Every deployment decision can be audited after the fact. A compliance team no longer checks sovereignty quarterly; the platform itself enforces it every time code ships.

GitOps extends this across multiple jurisdictions without recreating the centralized control plane the whole architecture is trying to avoid. A single Git repository holds shared configuration alongside jurisdiction-specific overlays. GitOps controllers run inside each tenant cluster and continuously reconcile their own state against that desired configuration, so no central control plane needs to coordinate the process. Each cluster pulls its own configuration and applies it locally, which keeps the sovereignty boundary intact even as the number of jurisdictions grows.

Teams running this in production build the guardrails directly into their deployment pipelines. Policies block non-compliant configurations before they ever reach production. GitOps workflows make every change traceable and auditable after the fact. Continuous monitoring catches violations early, before an annual audit would.

None of this is a substitute for deliberate compliance engineering, and the line sits in specific, unglamorous places. Kubernetes network policies alone do not satisfy HIPAA's audit trail requirements. Organizations still need to log every instance of data access with a timestamp and a user identity. That means enabling audit logging at both the kubelet and the API server layer. Policy as code is necessary infrastructure for sovereignty, but it has to be extended deliberately to cover specific regulatory requirements like this one. A platform that treats Kubernetes policy as a complete compliance answer will fail an audit the same way a vendor contract does.

Workload identity closes the remaining gap. SPIFFE/SPIRE gives workloads cryptographic identity that holds across clusters, so when a workload in one jurisdiction talks to a workload in another, that communication carries verifiable identity.

Where the infrastructure layer underneath Kubernetes matters

Policy enforcement inside Kubernetes still depends on what's running underneath it. Genuine infrastructure sovereignty requires four concrete things: control over the physical location of specific, known data centers; ownership of encryption keys, since a vendor holding the keys can be compelled to use them; transparency into access control, including a documented audit trail for any vendor support access; and network isolation inside a VPC or private network governed by policies the organization sets itself.

One production pattern pairs Kubernetes with OpenStack to deliver all four. Kubernetes supplies the policy and enforcement layer described above. OpenStack supplies the infrastructure foundation beneath it. Bare metal provisioning through Ironic removes the need for a proprietary hypervisor. Keystone keeps identity management self-hosted. Neutron handles network isolation under the operator's own control. Ceph provides distributed storage on infrastructure the operator actually owns. You can run the whole stack inside a fully controlled environment, with no license servers, no mandatory telemetry calling home, and no external dependency needed for day-to-day operation.

A joint venture between a hyperscaler and a local partner shows this isn't limited to open-source infrastructure stacks. S3NS has achieved France's SecNumCloud 3.2 certification, which provides protection against extraterritorial laws, including the US CLOUD Act, while running standard Google Cloud services, compute, storage, Kubernetes, and BigQuery, entirely inside that certified environment. A hyperscaler-derived service can satisfy a jurisdictional sovereignty framework when the operational and legal structure behind it gets rebuilt from the ground up as a feature of that structure.

Cloud-account ownership is the piece of this stack that matters most for teams evaluating a platform-as-a-service today. When a platform deploys Kubernetes directly into a customer's own AWS, GCP, or Azure account rather than onto a shared PaaS layer, the billing relationship, the IAM boundary, and the network perimeter all stay under the customer's direct control. This gives a meaningful sovereignty improvement over shared-tenant managed services, and it holds even before a team layers the tenant-cluster pattern on top. A platform running inside a customer's own cloud account means the control plane's jurisdiction and governance are the customer's from the outset, removing the mismatch between legal target and technical target that managed Kubernetes otherwise introduces.

The criterion worth applying when comparing platform-as-a-service options for regulated workloads is whether the platform runs inside infrastructure the customer already controls, or on infrastructure the vendor controls on the customer's behalf. Porter runs production Kubernetes inside each customer's own AWS, GCP, or Azure account rather than on shared infrastructure the vendor operates centrally. That design choice also sidesteps the need described earlier for a vendor to run a growing stable of per-jurisdiction clusters, because each customer's control plane already sits inside that customer's own account boundary, answering to that customer's own jurisdiction. For a team choosing between a shared-tenant PaaS and one that deploys into an owned cloud account, that distinction is the one regulators, auditors, and procurement teams will keep coming back to.

Sources

  1. From data residency to digital sovereignty: Architectural patterns for cloud native platforms
  2. How data sovereignty is changing cloud native infrastructure design
  3. Porter | Platform as a Service, Reimagined.

More in PaaS Alternatives