Skip to main content

Architecture Overview

Petra is built as four independent layers, each with its own update mechanism, verification chain, and operational lifecycle.

Layered Design​

+------------------------------------------------------------------+
| Layer 4: Applications |
| Customer workloads deployed via Flux from bundled manifests |
+------------------------------------------------------------------+
| Layer 3: Platform Addons |
| Cilium, Flux, Gatekeeper, Tetragon, cert-manager, Velero, |
| external-dns, external-secrets, kube-bench |
+------------------------------------------------------------------+
| Layer 2: Kubernetes Runtime |
| k3s v1.35.3 FIPS (Go 1.24 native FIPS), embedded etcd, single binary |
+------------------------------------------------------------------+
| Layer 1: Operating System |
| Flatcar Container Linux (immutable root, A/B partitions) |
+------------------------------------------------------------------+

Layer 1: Operating System​

Flatcar Container Linux provides an immutable root filesystem with automatic A/B partition updates. The root filesystem is read-only at runtime -- no packages can be installed, no system files can be modified. All mutable state lives on a separate data partition.

Updates are applied atomically: the new OS image is written to the inactive partition, and the system reboots into it. If the new image fails health checks, the system automatically rolls back.

Layer 2: Kubernetes Runtime​

k3s is a lightweight, CNCF-certified Kubernetes distribution compiled as a single binary with embedded etcd. Petra uses the FIPS-validated build with Go 1.24 native FIPS crypto (CAVP A6650). k3s installs to /opt/bin on Flatcar and is managed by systemd.

Updates are orchestrated by the k3s System Upgrade Controller with rolling, node-by-node upgrades.

Layer 3: Platform Addons​

All platform components beyond k3s and Cilium are managed by Flux v2 GitOps controllers. Each addon is defined as a HelmRelease with version pinning and image overrides pointing to cgr.dev/shebash.io.

ComponentFunction
CiliumeBPF networking, network policy, service mesh
Flux v2GitOps reconciliation
OPA GatekeeperPolicy enforcement (admission control)
TetragoneBPF runtime security, syscall monitoring
cert-managerX.509 certificate lifecycle
VeleroBackup and disaster recovery
external-dnsDNS record management
External SecretsSecret synchronization from external stores
Sigstore Policy ControllerImage signature admission control
ReloaderConfigMap/Secret change detection
kube-benchCIS Kubernetes Benchmark scanning

Cilium is installed directly via Helm during bootstrap (not through Flux) because it provides the CNI -- without it, no pods can schedule.

Layer 4: Applications​

Customer workloads are deployed through Flux from bundled Kubernetes manifests or HelmReleases. Applications inherit all platform security controls.

Provisioning Models​

Petra supports two paths that share the same hardened base:

Standalone Mode (petra up) provisions infrastructure directly using the AWS SDK. Designed for single clusters and development environments.

CAPI Mode (petra capi init + petra capi create) uses the Kubernetes Cluster API for fleet management. A management cluster runs CAPI controllers and a Petra ClusterClass. Workload clusters are created by applying a Cluster custom resource.

Both paths produce identical clusters.