1. Start here

1.0 Summary

Requirements: R1, R2, R3, R4, R6, R7, R10, R11, R12, R13, R14, R16, R17, R18, R19, R22, R23, R25, R26, R27, R28, R29, R30, R31, R32.

The whole design in a few pages, for the reader who will not read the rest: what the platform is, the choices that shape it, and what it costs. Every line links to the section that holds the detail; this page adds nothing the sections do not say. It opens the design PDF.

What it is

One Kubernetes platform, one application contract for every cloud – built on Azure (AKS) first. Applications, their manifests and the platform’s in-cluster configuration use only open standards – Kubernetes, OCI, Flux, the Gateway API, External Secrets, OIDC workload identity, OpenTelemetry – and data lives in PaaS services that every major cloud offers over the same protocol. The contract is portable today (section 1.3, R16); the platform under it is an AKS platform that leans on what Azure manages, and a second cloud is another implementation of it.

Overview

The landing zone is hub-and-spoke with one hub and one Azure Firewall Premium per exposure (section 1.1). Inside a cluster, countries are isolation zones: their own nodes, subnets, route tables, Key Vault and policies, with the hub Firewall between them (section 2.1, section 2.4). Inside a zone, every application has its own namespace with default-deny policies, its own workload identity and its own share of the zone’s vault (section 2.5, section 2.6).

Cluster topology

The fleet is fourteen clusters, twenty with the optional stateful clusters: per exposure and environment (dev, acc, prd) two or three stateless cells that can be drained, upgraded or rebuilt at any time, and a stateful cluster only when a workload needs it (section 3.1, section 3.2). An internal application runs in one home cell and is migrated between cells. Everything in a cluster comes from Git, delivered by Flux to the cells and by a pipeline to the stateful cluster (section 3.3); releases and cluster upgrades move through the cells one at a time, behind the cell router (section 3.4, section 3.5).

AI-driven day 2 operations

Day-2 operations are run by agents that change the platform only by pull request, behind a merge gate that humans own (section 6.1). Telemetry goes to one Grafana Cloud stack per environment through Private Link (section 6.2); only persistent data is backed up, immutably, into the paired region, and clusters are rebuilt from IaC and Git (section 6.3).

The choices that shape it

  • Cells and zones: one cluster per cell, the countries as isolation zones inside it; internal and external in separate subscriptions and clusters, with no route between the two hubs (section 3.1).
  • One cell network: Azure CNI Pod Subnet with Cilium, every pod carrying its zone’s address, so every flow between two zones of a cell and every flow out of the cell meets the hub Firewall, which decides egress per application from rule files (section 2.1, section 5.1); classic node pools with the cluster autoscaler (section 2.3).
  • Private by default: no public network access for any platform service, and private API servers over Private Link (section 2.2).
  • Cells and update speeds: three cells in prd, two in dev and acc; two update speeds, with node images pinned per cell (section 3.5).
  • The edge: Gateway API only, the implementation a per-cluster setting; HTTP/2 and TLS 1.3 only in the whole gateway path, Traefik in every cell (section 4.1).
  • Secrets and access: secrets only through External Secrets Operator, separated per namespace by Key Vault ABAC; namespace roles from Entra ID groups with matching vault rights; tenants list nothing (section 2.5).
  • Keys: customer-managed HSM keys per control plane, per cluster’s node disks and per zone’s volumes, with KMS data encryption (section 4.2).
  • The stateful cluster: built only with the first approved exception, on an LTS minor (section 3.1).
  • Agents: they start with a human on every tier above low and earn trust per agent and environment (section 6.1).

What it costs

The structure is fixed; the numbers are measured in acceptance (section 3.2).

  • Fixed per cell: the system pool, the gateways and their load balancers, private endpoints, the hub peering, the Standard tier – paid per cell and exposure, which is why the third cell in prd costs only its fixed part.
  • Fixed per environment: the hub share (a Firewall Premium per exposure, about 1,300 USD a month list each), Key Vaults, the registry (Premium only in prd), Traffic Manager, backups, the Grafana Cloud stack, Log Analytics.
  • Variable: the zone nodes on load (on-demand and spot, amd64 and arm64, chosen per application), PaaS, telemetry volume, Firewall data processing.

Capacity is N+1 per environment: with k cells every cell can carry 1/(k-1) of the environment on top of its own share, on on-demand capacity alone.

How to read the rest

The side navigation lists every page, and the front page says who reads what; how humans and AI share the work is how we work. The design is one PDF, every page of it with this summary first (onek8s-design.pdf).

OneK8s – a design under review; country codes and IP ranges are examples.Source of this pageComments and issues