feat(flux): 分阶段接管 Envoy Gateway
yaml / yaml (pull_request) Successful in 10s

This commit is contained in:
2026-09-10 09:26:54 +00:00
parent 392df6b6e6
commit c6e3abbfc0
7 changed files with 76 additions and 0 deletions
+13
View File
@@ -79,6 +79,19 @@ unauthenticated requests to an app whose auth model is "trust the header".
## Install
### Flux 接管状态
现有 release 为 OCI chart/app `v1.5.6`,且没有 user-supplied values。Git 中固定
同一版本,并先以 `suspend: true` 的 HelmRelease 登记;确认 OCI source Ready、Helm
revision 与 controller/data-plane Pod UID 均未变化后,再通过独立 PR 解除暂停。
`GatewayClass eg` 与 `Gateway eg` 随本目录 Kustomization 由 Flux 管理。接管期间保持
`prune: false`;Gateway API 与 Envoy Gateway CRD 使用 `CreateReplace`,延续现有 Helm
所有权且绝不通过删除 CRD 迁移。Gateway 的三个 `certificateRefs` 最初属于
`kubectl-client-side-apply`;首次 reconcile 会以 Flux 默认 SSA `Override` 转移这些已在
Git 中声明且值相同的字段所有权,不改变 listener spec。不得用 `force: true`,它用于
不可变字段失败时删除重建资源。以下命令保留为 break-glass 手工恢复流程。
```bash
# The Gateway API CRDs may already be owned by another tool's field manager (Contour's
# quickstart used client-side apply), which makes Helm fail with
+32
View File
@@ -0,0 +1,32 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: envoy-gateway
namespace: envoy-gateway-system
spec:
# 第一阶段只登记现有 release;入口数据面必须在独立激活 PR 后才由 Flux reconcile。
suspend: true
chart:
spec:
chart: gateway-helm
interval: 1h
sourceRef:
kind: HelmRepository
name: envoy-gateway
version: v1.5.6
driftDetection:
mode: enabled
install:
crds: CreateReplace
strategy:
name: RetryOnFailure
retryInterval: 5m
interval: 30m
releaseName: envoy-gateway
targetNamespace: envoy-gateway-system
timeout: 10m
upgrade:
crds: CreateReplace
strategy:
name: RetryOnFailure
retryInterval: 5m
@@ -0,0 +1,9 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: envoy-gateway
namespace: envoy-gateway-system
spec:
interval: 1h
type: oci
url: oci://docker.io/envoyproxy
@@ -0,0 +1,6 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- helmrepository.yaml
- helmrelease.yaml
- gateway.yaml