From 531011c25748af5a6959612a2406c52a077b4462 Mon Sep 17 00:00:00 2001 From: panxiao81 Date: Wed, 9 Sep 2026 20:04:34 +0000 Subject: [PATCH] =?UTF-8?q?test(gitops):=20=E6=B7=BB=E5=8A=A0=20Flux=20pru?= =?UTF-8?q?ne=20canary?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 1 + apps/http-echo/README.md | 7 ++++++- apps/http-echo/kustomization.yaml | 1 + apps/http-echo/prune-canary-configmap.yaml | 6 ++++++ 4 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 apps/http-echo/prune-canary-configmap.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a97a08..9477f94 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ What changed in this homelab, when, and why. Newest first. | GitOps | Flux `v2.9.5` 的四个核心 controller 已上线;集群内只读 Gitea source 与 `prune: false` 的 root Kustomization 均在合并 revision `aaa54a1` 上 Ready,完成了首个 pull reconciliation 闭环 | | cleanup | 已把 `bao-acme` HTTP-01 solver 改到 Envoy Gateway 的明文 listener,并删除不再承载流量的 Contour namespace、provisioner、RBAC、GatewayClass 和全部 `projectcontour.io` CRD;Envoy Gateway、证书、DNS 与 Gitea 复查正常 | | GitOps canary | 加入由 Flux 部署到独立 `gitops-canary` namespace 的 `http-echo` Deployment 和 Service;历史 Contour HTTPRoute 明确排除在 Kustomization 之外,初始保持 `prune: false` | +| prune 验证 | 为 `http-echo` 加入无业务依赖的 `flux-prune-canary` ConfigMap;先在 `prune: false` 下确认 Flux inventory,后续通过独立 PR 删除并仅为 canary 开启 prune | `Carried forward`: re-verify OpenBao/ESO recovery and remaining Secret inventory; configure an off-site Git mirror; plan the Gitea upgrade beyond 1.25.5; diff --git a/apps/http-echo/README.md b/apps/http-echo/README.md index 6f730aa..628178d 100644 --- a/apps/http-echo/README.md +++ b/apps/http-echo/README.md @@ -7,7 +7,8 @@ Flux 将它部署到独立的 `gitops-canary` namespace。 | --- | --- | | `deployment.yaml` | 两个 `hashicorp/http-echo` 副本。 | | `service.yaml` | 只在集群内可达的 ClusterIP Service。 | -| `kustomization.yaml` | Flux 实际构建入口,只包含 Deployment 和 Service。 | +| `prune-canary-configmap.yaml` | 无业务依赖的临时资源,用于验证 Flux 受控删除。 | +| `kustomization.yaml` | Flux 实际构建入口;明确排除历史 HTTPRoute。 | | `httproute.yaml` | 保留的历史 Contour 示例,**不在 Kustomization 中,不会部署**。 | ## 验证 @@ -22,3 +23,7 @@ sudo k3s kubectl -n gitops-canary get deployment,service,pod 初始 `prune: false`。验证自动部署后,可以手动把 Deployment replicas 改成 1, 确认 Flux 恢复为 Git 中的 2。删除行为应使用单独的无业务 ConfigMap 和 PR 测试, 验证完成前不得为此路径启用 prune。 + +`flux-prune-canary` ConfigMap 分两次 PR 验证:第一次在 `prune: false` 时创建并 +确认进入 Flux inventory;第二次从清单删除它,同时仅为 `http-echo` +Kustomization 开启 prune,确认 Flux 只删除这个测试对象。 diff --git a/apps/http-echo/kustomization.yaml b/apps/http-echo/kustomization.yaml index a33121c..287f330 100644 --- a/apps/http-echo/kustomization.yaml +++ b/apps/http-echo/kustomization.yaml @@ -2,4 +2,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - deployment.yaml + - prune-canary-configmap.yaml - service.yaml diff --git a/apps/http-echo/prune-canary-configmap.yaml b/apps/http-echo/prune-canary-configmap.yaml new file mode 100644 index 0000000..0d8be6f --- /dev/null +++ b/apps/http-echo/prune-canary-configmap.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: flux-prune-canary +data: + purpose: verify-controlled-flux-pruning