Merge pull request: 分阶段接管 Gitea Helm release
lint / yaml (push) Successful in 14s
lint / terraform (push) Successful in 31s
lint / ansible (push) Has been cancelled

This commit was merged in pull request #22.
This commit is contained in:
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 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 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 | | 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 `Carried forward`: complete the two-stage zero-change `gitea` HelmRelease
upgrade Gitea and add credential-free PR plan output before ordering the adoption, migrate its remaining manual OIDC Secret to OpenBao/ESO, then upgrade
remaining Helm migrations by dependency and blast radius. Root Flux prune Gitea and add credential-free PR plan output before ordering the remaining Helm
remains disabled until brownfield ownership is audited. migrations by dependency and blast radius. Root Flux prune remains disabled
until brownfield ownership is audited.
## 2026-09-09 ## 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` 生效后重新纳管,并由下一 - `http-echo` 的专用测试 ConfigMap 已在 `prune: true` 生效后重新纳管,并由下一
revision 自动删除; revision 自动删除;
- `http-echo` 保持 `prune: true`,root 保持 `prune: false`; - `http-echo` 保持 `prune: true`,root 保持 `prune: false`;
- 下一个接管对象是现有 `gitea-actions` Helm release,先使用相同 chart/version - `gitea-actions` 已由 Flux HelmRelease 接管且首次 reconcile 未触发 runner rollout;
完成零变化 adoption,再通过独立 PR 升级。 - 下一个接管对象是现有 `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: resources:
- flux-system - flux-system
- namespaces/gitops-canary.yaml - namespaces/gitops-canary.yaml
- apps/gitea.yaml
- apps/gitea-actions.yaml - apps/gitea-actions.yaml
- apps/http-echo.yaml - apps/http-echo.yaml