feat(flux): 分阶段接管 External Secrets
yaml / yaml (pull_request) Successful in 9s

This commit is contained in:
2026-09-10 08:39:22 +00:00
parent 02fd9a932a
commit c4b425b079
8 changed files with 97 additions and 8 deletions
+20
View File
@@ -0,0 +1,20 @@
# External Secrets Operator
External Secrets Operator(ESO)把 OpenBao `kv/k8s/*` 下的值投影为 Kubernetes
Secret。`ClusterSecretStore/openbao` 使用 `external-secrets` ServiceAccount 的短期
JWT 登录 OpenBao,不在 Git 中保存长期凭据。
## Flux 接管
现有 release 是 2026-07-28 手工安装的 chart `external-secrets` `2.8.0`,Helm
revision 1。接管前审计确认:本目录 `values.yaml` 与 Helm stored user values 一致;
用固定 chart 生成的 33,528 行 manifest 与 stored manifest 只有末尾空行差异。
接管分两阶段:本阶段以 `suspend: true` 登记 HelmRepository、values ConfigMap 与
HelmRelease,不执行 Helm action,不应重建三个 controller。合并后确认 source Ready、
release 仍为 revision 1、三个 Pod UID/重启次数不变,再用独立 PR 移除 `suspend`。
子 Kustomization 保持 `prune: false`。
`clustersecretstore.yaml` 和 `externalsecrets.yaml` 是现有 secret delivery intent,
本阶段故意不把它们加入该 Kustomization,避免在 Helm release 接管时同时扩大 Flux
ownership。Helm 接管稳定后再单独审计、纳管这些对象。
@@ -0,0 +1,32 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: external-secrets
namespace: external-secrets
spec:
suspend: true
chart:
spec:
chart: external-secrets
interval: 1h
sourceRef:
kind: HelmRepository
name: external-secrets
version: 2.8.0
driftDetection:
mode: enabled
install:
strategy:
name: RetryOnFailure
retryInterval: 5m
interval: 30m
releaseName: external-secrets
targetNamespace: external-secrets
timeout: 10m
upgrade:
strategy:
name: RetryOnFailure
retryInterval: 5m
valuesFrom:
- kind: ConfigMap
name: external-secrets-values
@@ -0,0 +1,8 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: external-secrets
namespace: external-secrets
spec:
interval: 1h
url: https://charts.external-secrets.io
@@ -0,0 +1,14 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
generatorOptions:
disableNameSuffixHash: true
labels:
reconcile.fluxcd.io/watch: Enabled
configMapGenerator:
- name: external-secrets-values
namespace: external-secrets
files:
- values.yaml=values.yaml
resources:
- helmrepository.yaml
- helmrelease.yaml