Merge pull request: 分阶段接管 Gitea Helm release
This commit was merged in pull request #22.
This commit is contained in:
+6
-4
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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 的变更都不得与首次接管合并。
|
||||||
@@ -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
|
||||||
@@ -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/
|
||||||
@@ -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
|
||||||
@@ -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。
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user