下载工作台
项目运维与部署

GitOps 与 Helm 发布

试读上半部分 · 解锁后可读全文

第 8 章 · GitOps 与 Helm 发布

本章目标:从「Jenkins 里 kubectl」演进到 Git 为唯一真相源;用 Helm Chart + Argo CD 自动同步 demo-mall;实现可审计、可回滚的配置管理;与 ch03 CI 分工清晰。

学时建议:2.5~3 小时(含 2 小时跟练)

前置ops-deploy ch03 CI/CD;ch02 env-matrix;git-collab ch05 PR 流程。


8.1 场景说明

项目内容
背景运维在 应用部署 界面改 prod 副本数,未同步 Git;三人各自 kubectl 导致集群漂移
痛点无法 audit「谁改了 prod」;回滚靠记忆
你的角色DevOps,建立 demo-mall-deploy 仓库与 Argo CD Application
本章任务Helm upgrade staging;Git 改 image.tag 驱动发布;prod 手动 Sync
约束prod 禁止 automated sync;staging 可 selfHeal

8.2 学完你能

能力验收标准
GitOps 原则说清声明式同步 vs 界面 kubectl
Helm 分环境values-staging / values-prod 差异
Argo Application编写 YAML 并解释 syncPolicy
CI 分工Jenkins 只更新 Git tag,不直接 kubectl prod
Git 回滚revert commit 恢复版本
小紫路径PaaS 装 Argo + 应用部署导入 YAML

8.3 为什么需要 GitOps

模式问题GitOps 优势
界面改配置漂移、不可审计Git 版本化 + PR
Jenkins kubectl集群外凭据、难复现集群内 Argo reconcile
手工 apply依赖个人在场自动同步 staging

原则:期望状态在 Git;集群实际状态由 Argo 持续对齐;差异可告警或 selfHeal。


8.4 仓库结构

demo-mall-deploy/
├── charts/demo-api/
│   ├── Chart.yaml
│   ├── values.yaml          # 默认
│   ├── values-staging.yaml
│   ├── values-prod.yaml
│   └── templates/
│       ├── deployment.yaml
│       ├── service.yaml
│       └── hpa.yaml
├── apps/
│   ├── staging-app.yaml     # Argo Application
│   └── prod-app.yaml
└── README.md

你应该看到:Gitea 仓库创建成功;charts 与 ch02 env-matrix 字段一致。


8.5 逐步跟练 · 第一步:Helm values 分环境(约 35 分钟)

values-staging.yaml

replicaCount: 2
image:
  repository: registry.devops.svc:5000/demo-api
  tag: "142-a3f9c21"
resources:
  requests: { cpu: 250m, memory: 256Mi }
  limits: { cpu: 500m, memory: 512Mi }
env:
  LOG_LEVEL: INFO
  FEATURE_NEW_CHECKOUT: "true"

values-prod.yaml

replicaCount: 3
image:
  repository: registry.devops.svc:5000/demo-api
  tag: "142-a3f9c21"   # staging 验证通过后晋升
resources:
  requests: { cpu: 500m, memory: 512Mi }
autoscaling:
  enabled: true
  minReplicas: 3
  maxReplicas: 10
env:
  LOG_LEVEL: WARN
  FEATURE_NEW_CHECKOUT: "false"

含义:同 build tag 先进 staging,业务签字后 仅改 prod values 的 tag(或通过 promote PR)。

你应该看到helm template 渲染出 2 vs 3 副本差异。


8.6 逐步跟练 · 第二步:Argo CD Application(约 40 分钟)

PaaS 商店 安装 Argo CDdevops Namespace)。

apps/staging-app.yaml

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: demo-api-staging
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://gitea.devops.svc/cluster/demo-mall-deploy
    path: charts/demo-api
    targetRevision: main
    helm:
      valueFiles: [values-staging.yaml]

以下内容需解锁后阅读

试读已结束。解锁本章 ¥5.00,或开通年度会员畅读全部教程。
年度会员 ¥199.00/年; 小紫 AI 工作台有效会员 ¥99.00/年

正文仅在服务端鉴权后下发,未付费无法获取下半部分内容。