diff --git a/kubernetes/infrastructure/cilium/helmrelease.yaml b/kubernetes/infrastructure/cilium/helmrelease.yaml index 044977db..1886933e 100644 --- a/kubernetes/infrastructure/cilium/helmrelease.yaml +++ b/kubernetes/infrastructure/cilium/helmrelease.yaml @@ -33,6 +33,24 @@ spec: remediation: retries: 3 values: + # Roll the agent DaemonSet when cilium-config changes. Cilium reads + # datapath options once, at agent start, and the chart puts no config + # checksum on the pod template — so a changed ConfigMap leaves every agent + # running the previous datapath until something restarts it. Nothing did. + # + # This is not hypothetical. vlan-bpf-bypass reached cilium-config and every + # v30iot macvlan workload stayed broken until the agents were deleted by + # hand, one node at a time (issue #592). policyMapMax has the same + # exposure, and its comment below says "takes effect on agent restart" — + # documentation standing in for automation. + # + # The trade: any cilium-config change now rolls the CNI cluster-wide, + # node by node. That is disruptive-ish, but it is what a datapath change + # already required — the difference is that it now happens on its own + # instead of being forgotten. Reloader is already deployed for exactly + # this pattern; named per-ConfigMap rather than blanket, as elsewhere. + annotations: + configmap.reloader.stakater.com/reload: cilium-config # Which pod labels feed security-identity computation. Patterns are # start-anchored regexes; a leading "!" excludes while keeping the default # set. Woodpecker stamps every step pod with woodpecker-ci.org/task-uuid