分阶段接管 Gitea Helm release #22

Merged
panxiao81 merged 1 commits from feat/flux-gitea-adoption-stage into main 2026-09-10 05:35:26 +00:00
8 changed files with 101 additions and 6 deletions
+6 -4
View File
@@ -25,11 +25,13 @@ What changed in this homelab, when, and why. Newest first.
| Helm migration | 选定 `gitea-actions` 作为第一个 Flux HelmRelease adoption:它不承载 Git、入口、DNS、证书、数据库或 secrets controller。live StatefulSet 与 Git 都使用 regular DinD,但 Helm 保存的 release values/manifest 仍是失败的 rootless 配置;接管先固定 chart `0.1.1` 并验证 live Pod spec 不变,升级另开 PR |
| Helm adoption stage | 为 `gitea-actions` 加入固定 chart `0.1.1` 的 HelmRepository、values ConfigMap 和 `suspend: true` HelmRelease;第一阶段只让 Flux 登记对象,确认 source 与固定 chart render 后再解除 suspend,失败策略使用 `RetryOnFailure` 以避免回滚到 stored rootless manifest |
| Helm adoption activate | 第一阶段合并后 Flux source 与子 Kustomization 均 Ready,Helm release 仍为 revision 1,runner Pod 未 rollout;再次确认固定 chart 的完整 render 对 live 集群为零差异后,第二阶段移除 `suspend`,允许 Flux 修正 Helm 存储状态并开始 drift detection |
| Gitea adoption stage | 开始用 Flux 接管关键 `gitea` release:固定现有 chart `12.5.3`,以 `suspend: true` 登记 HelmRelease、source、values ConfigMap 和现有 HTTPRoute,子 Kustomization 保持 `prune: false`;现有 OIDC Secret 继续只引用不覆盖,其尚未进入 OpenBao/ESO 的缺口独立跟踪 |
`Carried forward`: complete the `gitea-actions` HelmRelease activation, then
upgrade Gitea and add credential-free PR plan output before ordering the
remaining Helm migrations by dependency and blast radius. Root Flux prune
remains disabled until brownfield ownership is audited.
`Carried forward`: complete the two-stage zero-change `gitea` HelmRelease
adoption, migrate its remaining manual OIDC Secret to OpenBao/ESO, then upgrade
Gitea and add credential-free PR plan output before ordering the remaining Helm
migrations by dependency and blast radius. Root Flux prune remains disabled
until brownfield ownership is audited.
## 2026-09-09
+20
View File
@@ -0,0 +1,20 @@
# Gitea
Gitea 使用外部 CloudNativePG 数据库和现有 `gitea-shared-storage` RWO PVC,入口由
Envoy Gateway HTTPRoute 提供。Helm chart 自带的无 class Ingress 暂时保留以确保
首次接管零变化;清理该 Ingress 与升级 chart 必须使用后续独立 PR。
## Flux 接管
现有 release 是 `gitea-12.5.3`(Gitea `1.25.5`)。接管分为两个 PR:第一阶段创建
固定版本且 `suspend: true` 的 HelmRelease,只让 Flux 登记对象;确认 source Ready
并重新验证完整 chart render 后,第二阶段才解除 suspend。子 Kustomization 和集群
root 均保持 `prune: false`。
数据库密码已经由 External Secrets Operator 从 OpenBao 投射到 `gitea-db`。OIDC
client secret 仍是历史手工 Secret `gitea-oidc-secret`,本次接管只引用、不覆盖它;
将剩余 Secret 迁移到 OpenBao 是独立的后续工作。
Gitea 是 Flux GitRepository 的上游。升级或重启期间 Git source 暂时不可用不会删除
已经应用的资源;Gitea 恢复后 Flux 会继续同步。任何会改变 Pod template、数据库迁移
或 PVC identity 的变更都不得与首次接管合并。
+32
View File
@@ -0,0 +1,32 @@
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: gitea
namespace: gitea
spec:
chart:
spec:
chart: gitea
interval: 1h
sourceRef:
kind: HelmRepository
name: gitea-charts
version: 12.5.3
driftDetection:
mode: enabled
install:
strategy:
name: RetryOnFailure
retryInterval: 5m
interval: 30m
releaseName: gitea
suspend: true
targetNamespace: gitea
timeout: 15m
upgrade:
strategy:
name: RetryOnFailure
retryInterval: 5m
valuesFrom:
- kind: ConfigMap
name: gitea-values
+8
View File
@@ -0,0 +1,8 @@
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: gitea-charts
namespace: gitea
spec:
interval: 1h
url: https://dl.gitea.com/charts/
+18
View File
@@ -0,0 +1,18 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
generatorOptions:
disableNameSuffixHash: true
annotations:
reconcile.fluxcd.io/watch: Enabled
configMapGenerator:
- name: gitea-values
namespace: gitea
files:
- values.yaml=gitea-values.yaml
resources:
- helmrepository.yaml
- helmrelease.yaml
- httproute.yaml
+3 -2
View File
@@ -43,5 +43,6 @@ sudo k3s kubectl -n flux-system get gitrepositories,kustomizations
- `http-echo` 的专用测试 ConfigMap 已在 `prune: true` 生效后重新纳管,并由下一
revision 自动删除;
- `http-echo` 保持 `prune: true`,root 保持 `prune: false`;
- 下一个接管对象是现有 `gitea-actions` Helm release,先使用相同 chart/version
完成零变化 adoption,再通过独立 PR 升级。
- `gitea-actions` 已由 Flux HelmRelease 接管且首次 reconcile 未触发 runner rollout;
- 下一个接管对象是现有 `gitea` Helm release,先固定 chart `12.5.3` 并分两阶段完成
零变化 adoption,再通过独立 PR 升级 Gitea。
+13
View File
@@ -0,0 +1,13 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: gitea
namespace: flux-system
spec:
interval: 10m
path: ./apps/gitea
prune: false
sourceRef:
kind: GitRepository
name: flux-system
wait: false
+1
View File
@@ -3,5 +3,6 @@ kind: Kustomization
resources:
- flux-system
- namespaces/gitops-canary.yaml
- apps/gitea.yaml
- apps/gitea-actions.yaml
- apps/http-echo.yaml