[ PROMPT_NODE_28064 ]
gitops-workflow
[ SKILL_DOCUMENTATION ]
# GitOps 工作流
使用 ArgoCD 和 Flux 为 Kubernetes 自动化部署实现 GitOps 工作流的完整指南。
## 目的
遵循 OpenGitOps 原则,使用 ArgoCD 或 Flux CD 为 Kubernetes 实现声明式、基于 Git 的持续交付。
## 适用场景
- 为 Kubernetes 集群设置 GitOps
- 从 Git 自动化应用程序部署
- 实现渐进式交付策略
- 管理多集群部署
- 配置自动化同步策略
- 在 GitOps 中设置密钥管理
## 不适用场景
- 需要一次性手动部署
- 无法管理集群访问权限或仓库权限
- 非 Kubernetes 部署环境
## 指令
1. 定义仓库布局和期望状态约定。
2. 安装 ArgoCD 或 Flux 并连接集群。
3. 配置同步策略、环境和发布流程。
4. 验证回滚和密钥处理。
## 安全性
- 避免在未经批准的情况下自动同步到生产环境。
- 密钥不要存放在 Git 中,请使用加密密钥或外部密钥管理器。
## OpenGitOps 原则
1. **声明式** - 整个系统以声明式描述
2. **版本化且不可变** - 期望状态存储在 Git 中
3. **自动拉取** - 软件智能体拉取期望状态
4. **持续协调** - 智能体协调实际状态与期望状态
## ArgoCD 设置
### 1. 安装
bash
# 创建命名空间
kubectl create namespace argocd
# 安装 ArgoCD
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# 获取管理员密码
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
**参考:** 详细设置请参阅 `references/argocd-setup.md`
### 2. 仓库结构
gitops-repo/
├── apps/
│ ├── production/
│ │ ├── app1/
│ │ │ ├── kustomization.yaml
│ │ │ └── deployment.yaml
│ │ └── app2/
│ └── staging/
├── infrastructure/
│ ├── ingress-nginx/
│ ├── cert-manager/
│ └── monitoring/
└── argocd/
├── applications/
└── projects/
### 3. 创建应用程序
yaml
# argocd/applications/my-app.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/org/gitops-repo
targetRevision: main
path: apps/production/my-app
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
au