DOM-2 [NO-GO / DO NOT MERGE]: germinate on Cilium CNI — evidence it breaks first-try germination #59
No reviewers
Labels
No labels
bug
discussion
duplicate
enhancement
goal
help wanted
horizon:backlog
horizon:governance
horizon:mvp
invalid
operator-decision
question
roadmap
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
open-platform/mitosis!59
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/dom-2-cilium-fqdn-egress"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
DOM-2 (plat/mitosis#37) asked to swap the germination CNI to Cilium. Per the brief's STRICT-honesty clause, this is a NO-GO: on the k3d/k3s germination stack, neither viable Cilium configuration germinates a full platform first-try. This branch (bin/up:
--flannel-backend=none+--disable-network-policy+--disable-kube-proxy+ Cilium 1.17.17 kube-proxy-replacement) is preserved as evidence — do not merge.Two independent, reproducible blockers (both tested live on vxrail, clusters torn down)
1. kube-proxy PRESENT (Cilium CNI + netpol only): platform reaches the CI-build phase (all 25+ pods Running), then
mcp/agents— and every in-cluster-built app image — failImagePull. Root cause: the platform's registry mirror is reached by containerd over a hostPort (127.0.0.1:31100, theregistry-node-configDaemonSet), and Cilium only programs hostPort when it replaces kube-proxy. Settingenable-host-port=truealone (kpr=false) does not bind the port (verified: nodewget 127.0.0.1:31100→ connection refused).2. kube-proxy REPLACED (kpr=true, auto-enables hostPort): germination hard-fails at 'install Flux + point at gitops'. Flux's 4 controllers + metrics-server + local-path-provisioner all CrashLoopBackOff with
x509: certificate signed by unknown authoritywhen dialing the apiserver via the kubernetes ClusterIP. Cilium routing is correct (service maps10.43.0.1:443 → 172.18.0.2:6443, a pod reaches it and gets 401), but the cert served under kpr routing is not trusted by the pods' ServiceAccount CA bundle (curl--cacert ca.crt→ exit 60).bpf.hostLegacyRouting=truedid not fix it. This is a known k3s/k3d + Cilium-kpr apiserver-trust incompatibility.What DOES work on Cilium (proven, shipping separately)
On the kube-proxy-present run, before the registry blocker, I proved the value of Cilium end-to-end:
cilium statusOK (1.17.17), Controllers healthy.networking.k8s.io/v1NetworkPolicy still enforces natively: default-deny blocked (HTTP 000/timeout), an allow rule restored it (HTTP 200), endpoint ingress ENFORCEMENT=Enabled.api.github.com→200, non-allowlistedapi.gitlab.com/pypi.org→BLOCKED, DNS preserved, egress ENFORCEMENT=Enabled.Recommendation
feat/dom-2-fqdn-egress+ plat/_app-templatefeat/dom-2-allowed-hosts): it is additive, gated default-off behindPLAT_FQDN_EGRESS, tested, and proven to work the moment the platform runs on Cilium.Pull request closed