diff --git a/content/en/docs/next/networking/hairpin-proxy-protocol.md b/content/en/docs/next/networking/hairpin-proxy-protocol.md index 828dda44..b2c214b9 100644 --- a/content/en/docs/next/networking/hairpin-proxy-protocol.md +++ b/content/en/docs/next/networking/hairpin-proxy-protocol.md @@ -119,7 +119,7 @@ Disabling has different shapes on the two layers, by design. The host path has a The platform refuses to render the bare flag flip when a `cozystack.ouroboros` Package CR is already on the cluster — `helm template` / `helm upgrade` fails fast with an error that points at `kubectl delete package.cozystack.io cozystack.ouroboros` (which triggers helm uninstall and the chart's pre-delete cleanup hook) and the acknowledgement field. The vendored chart carries a pre-delete hook (`charts/ouroboros/templates/coredns-cleanup-hook.yaml`) that quiesces the controller and `sed`-strips the `# === BEGIN ouroboros … END ouroboros ===` block from `kube-system/coredns` automatically when helm actually uninstalls the chart — operators do **not** need to run the manual `sed` recipe in the normal disable path. The full host disable sequence is: 1. Flip the upstream LB off PROXY-protocol injection (external traffic precondition). -2. Remove the Package CR with `kubectl delete package.cozystack.io cozystack.ouroboros` (or add it to `bundles.disabledPackages`). This triggers helm uninstall, which fires the chart's pre-delete hook and patches `kube-system/coredns` automatically. +2. Remove the Package CR with `kubectl delete package.cozystack.io cozystack.ouroboros`. This triggers helm uninstall, which fires the chart's pre-delete hook and patches `kube-system/coredns` automatically. Adding the name to `bundles.disabledPackages` is **not** a second way to get there. `disabledPackages` will not remove components that are already installed: the list only stops the platform chart from emitting the Package document, and `helm.sh/resource-policy: keep` leaves the live Package on the cluster along with the HelmRelease it owns. ouroboros keeps running, the pre-delete hook never fires, and no platform values setting reaches it. 3. Set `publishing.proxyProtocol: false` in the platform values. The render guard now passes (the `lookup` for `cozystack.ouroboros` returns nil after step 2), so `publishing.proxyProtocolAcknowledgeUnclean` stays at its default `false`. If the operator has reason to flip `publishing.proxyProtocol: false` BEFORE deleting the Package CR (strict GitOps where `kubectl delete` is not in-band, parallel rollbacks, etc.), set `publishing.proxyProtocolAcknowledgeUnclean: true` together with the flag flip in the same commit, then drive the Package deletion separately. Flip `proxyProtocolAcknowledgeUnclean` back to `false` once the cluster has been clean for one reconcile cycle. This is the escape valve, not the recommended path — the staged sequence above keeps the ack flag at its default and avoids the round-trip. diff --git a/content/en/docs/v1.4/networking/hairpin-proxy-protocol.md b/content/en/docs/v1.4/networking/hairpin-proxy-protocol.md index 828dda44..b2c214b9 100644 --- a/content/en/docs/v1.4/networking/hairpin-proxy-protocol.md +++ b/content/en/docs/v1.4/networking/hairpin-proxy-protocol.md @@ -119,7 +119,7 @@ Disabling has different shapes on the two layers, by design. The host path has a The platform refuses to render the bare flag flip when a `cozystack.ouroboros` Package CR is already on the cluster — `helm template` / `helm upgrade` fails fast with an error that points at `kubectl delete package.cozystack.io cozystack.ouroboros` (which triggers helm uninstall and the chart's pre-delete cleanup hook) and the acknowledgement field. The vendored chart carries a pre-delete hook (`charts/ouroboros/templates/coredns-cleanup-hook.yaml`) that quiesces the controller and `sed`-strips the `# === BEGIN ouroboros … END ouroboros ===` block from `kube-system/coredns` automatically when helm actually uninstalls the chart — operators do **not** need to run the manual `sed` recipe in the normal disable path. The full host disable sequence is: 1. Flip the upstream LB off PROXY-protocol injection (external traffic precondition). -2. Remove the Package CR with `kubectl delete package.cozystack.io cozystack.ouroboros` (or add it to `bundles.disabledPackages`). This triggers helm uninstall, which fires the chart's pre-delete hook and patches `kube-system/coredns` automatically. +2. Remove the Package CR with `kubectl delete package.cozystack.io cozystack.ouroboros`. This triggers helm uninstall, which fires the chart's pre-delete hook and patches `kube-system/coredns` automatically. Adding the name to `bundles.disabledPackages` is **not** a second way to get there. `disabledPackages` will not remove components that are already installed: the list only stops the platform chart from emitting the Package document, and `helm.sh/resource-policy: keep` leaves the live Package on the cluster along with the HelmRelease it owns. ouroboros keeps running, the pre-delete hook never fires, and no platform values setting reaches it. 3. Set `publishing.proxyProtocol: false` in the platform values. The render guard now passes (the `lookup` for `cozystack.ouroboros` returns nil after step 2), so `publishing.proxyProtocolAcknowledgeUnclean` stays at its default `false`. If the operator has reason to flip `publishing.proxyProtocol: false` BEFORE deleting the Package CR (strict GitOps where `kubectl delete` is not in-band, parallel rollbacks, etc.), set `publishing.proxyProtocolAcknowledgeUnclean: true` together with the flag flip in the same commit, then drive the Package deletion separately. Flip `proxyProtocolAcknowledgeUnclean` back to `false` once the cluster has been clean for one reconcile cycle. This is the escape valve, not the recommended path — the staged sequence above keeps the ack flag at its default and avoids the round-trip. diff --git a/content/en/docs/v1.5/networking/hairpin-proxy-protocol.md b/content/en/docs/v1.5/networking/hairpin-proxy-protocol.md index 828dda44..b2c214b9 100644 --- a/content/en/docs/v1.5/networking/hairpin-proxy-protocol.md +++ b/content/en/docs/v1.5/networking/hairpin-proxy-protocol.md @@ -119,7 +119,7 @@ Disabling has different shapes on the two layers, by design. The host path has a The platform refuses to render the bare flag flip when a `cozystack.ouroboros` Package CR is already on the cluster — `helm template` / `helm upgrade` fails fast with an error that points at `kubectl delete package.cozystack.io cozystack.ouroboros` (which triggers helm uninstall and the chart's pre-delete cleanup hook) and the acknowledgement field. The vendored chart carries a pre-delete hook (`charts/ouroboros/templates/coredns-cleanup-hook.yaml`) that quiesces the controller and `sed`-strips the `# === BEGIN ouroboros … END ouroboros ===` block from `kube-system/coredns` automatically when helm actually uninstalls the chart — operators do **not** need to run the manual `sed` recipe in the normal disable path. The full host disable sequence is: 1. Flip the upstream LB off PROXY-protocol injection (external traffic precondition). -2. Remove the Package CR with `kubectl delete package.cozystack.io cozystack.ouroboros` (or add it to `bundles.disabledPackages`). This triggers helm uninstall, which fires the chart's pre-delete hook and patches `kube-system/coredns` automatically. +2. Remove the Package CR with `kubectl delete package.cozystack.io cozystack.ouroboros`. This triggers helm uninstall, which fires the chart's pre-delete hook and patches `kube-system/coredns` automatically. Adding the name to `bundles.disabledPackages` is **not** a second way to get there. `disabledPackages` will not remove components that are already installed: the list only stops the platform chart from emitting the Package document, and `helm.sh/resource-policy: keep` leaves the live Package on the cluster along with the HelmRelease it owns. ouroboros keeps running, the pre-delete hook never fires, and no platform values setting reaches it. 3. Set `publishing.proxyProtocol: false` in the platform values. The render guard now passes (the `lookup` for `cozystack.ouroboros` returns nil after step 2), so `publishing.proxyProtocolAcknowledgeUnclean` stays at its default `false`. If the operator has reason to flip `publishing.proxyProtocol: false` BEFORE deleting the Package CR (strict GitOps where `kubectl delete` is not in-band, parallel rollbacks, etc.), set `publishing.proxyProtocolAcknowledgeUnclean: true` together with the flag flip in the same commit, then drive the Package deletion separately. Flip `proxyProtocolAcknowledgeUnclean` back to `false` once the cluster has been clean for one reconcile cycle. This is the escape valve, not the recommended path — the staged sequence above keeps the ack flag at its default and avoids the round-trip. diff --git a/content/en/docs/v1.6/networking/hairpin-proxy-protocol.md b/content/en/docs/v1.6/networking/hairpin-proxy-protocol.md index 828dda44..b2c214b9 100644 --- a/content/en/docs/v1.6/networking/hairpin-proxy-protocol.md +++ b/content/en/docs/v1.6/networking/hairpin-proxy-protocol.md @@ -119,7 +119,7 @@ Disabling has different shapes on the two layers, by design. The host path has a The platform refuses to render the bare flag flip when a `cozystack.ouroboros` Package CR is already on the cluster — `helm template` / `helm upgrade` fails fast with an error that points at `kubectl delete package.cozystack.io cozystack.ouroboros` (which triggers helm uninstall and the chart's pre-delete cleanup hook) and the acknowledgement field. The vendored chart carries a pre-delete hook (`charts/ouroboros/templates/coredns-cleanup-hook.yaml`) that quiesces the controller and `sed`-strips the `# === BEGIN ouroboros … END ouroboros ===` block from `kube-system/coredns` automatically when helm actually uninstalls the chart — operators do **not** need to run the manual `sed` recipe in the normal disable path. The full host disable sequence is: 1. Flip the upstream LB off PROXY-protocol injection (external traffic precondition). -2. Remove the Package CR with `kubectl delete package.cozystack.io cozystack.ouroboros` (or add it to `bundles.disabledPackages`). This triggers helm uninstall, which fires the chart's pre-delete hook and patches `kube-system/coredns` automatically. +2. Remove the Package CR with `kubectl delete package.cozystack.io cozystack.ouroboros`. This triggers helm uninstall, which fires the chart's pre-delete hook and patches `kube-system/coredns` automatically. Adding the name to `bundles.disabledPackages` is **not** a second way to get there. `disabledPackages` will not remove components that are already installed: the list only stops the platform chart from emitting the Package document, and `helm.sh/resource-policy: keep` leaves the live Package on the cluster along with the HelmRelease it owns. ouroboros keeps running, the pre-delete hook never fires, and no platform values setting reaches it. 3. Set `publishing.proxyProtocol: false` in the platform values. The render guard now passes (the `lookup` for `cozystack.ouroboros` returns nil after step 2), so `publishing.proxyProtocolAcknowledgeUnclean` stays at its default `false`. If the operator has reason to flip `publishing.proxyProtocol: false` BEFORE deleting the Package CR (strict GitOps where `kubectl delete` is not in-band, parallel rollbacks, etc.), set `publishing.proxyProtocolAcknowledgeUnclean: true` together with the flag flip in the same commit, then drive the Package deletion separately. Flip `proxyProtocolAcknowledgeUnclean` back to `false` once the cluster has been clean for one reconcile cycle. This is the escape valve, not the recommended path — the staged sequence above keeps the ack flag at its default and avoids the round-trip.