Files
home-network-k3s-impl/platform/cilium
jakman85andClaude Opus 5.5 9a69f6906a
gate / gate (pull_request) Successful in 1m47s
gate / conformance (pull_request) Has been skipped
fix(cilium): point cgroup.hostRoot at the host's real cgroup2 root
hostRoot was /run/cilium/cgroupv2 with autoMount disabled, but nothing
mounts cgroup2 there. The agent mounted one from inside its own private
cgroup namespace, so socket-LB attached to the agent's own cgroup and
host processes got no Service/LB translation. k3s-prod-1 (Gateway L2
lease holder + kube-vip VIP) therefore could not reach the Gateway VIP,
and its apiserver's OIDC authenticator has failed since 2026-09-12.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-03 18:07:18 -05:00
..

platform/cilium

Cilium — CNI, kube-proxy replacement, Gateway API ingress, Egress Gateway, and Hubble.

What this stub is

A Flux HelmRelease + HelmRepository stub with placeholder values. No cluster exists (Phase 0); this does not reconcile. Cilium replaces k3s' bundled flannel + kube-proxy + Traefik (ADR-0001/0002).

Bootstrap vs. GitOps (important)

Per docs/02, Cilium's initial install is done by the Ansible k3s bootstrap (Phase 1, WS-INFRA), because a cluster needs a CNI before Flux can run. This HelmRelease manages Cilium configuration thereafter. The Helm values here MUST stay consistent with the Ansible bootstrap values (kubeProxyReplacement, k8sServiceHost, k8sServicePort) — otherwise Flux and the bootstrap fight. Coordinate this contract with WS-INFRA.

TODO (later phases — not Phase 0)

  • Phase 1 (WS-INFRA/WS-NET): align Helm values with the Ansible bootstrap; pin chart version.
  • Phase 2 (WS-NET): default-deny network baseline; Egress Gateway policies; L2 announcement IP pool + CiliumL2AnnouncementPolicy for the ingress VIP; Hubble metrics → kube-prometheus-stack.
  • Phase 3 (WS-NET): egress-class routing integration with the VPN gateway (ADR-0013).