No description
| apps/helloworld | ||
| argocd.exe | ||
| HOW_TO_ADD_APP.md | ||
| README.md | ||
ArgoCD Demo Project
这是一个用于演示ArgoCD功能的示例项目,展示如何使用GitOps方式通过ArgoCD部署应用,并支持多环境管理(开发、测试、预生产、生产)。
项目结构
argocd/
├── README.md # 项目说明
├── HOW_TO_ADD_APP.md # 新增应用指南
└── apps/ # 应用配置(支持多环境)
└── helloworld/ # 示例Helloworld应用
├── base/ # 基础配置(各环境共享)
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ └── kustomization.yaml
└── overlays/ # 环境特定配置
├── dev/ # 开发环境
│ ├── deployment-patch.yaml
│ └── kustomization.yaml
├── qa/ # 测试环境
│ ├── deployment-patch.yaml
│ └── kustomization.yaml
├── pre/ # 预生产环境
│ ├── deployment-patch.yaml
│ └── kustomization.yaml
└── prod/ # 生产环境
├── deployment-patch.yaml
└── kustomization.yaml
多环境配置说明
环境配置差异
| 配置项 | 开发环境 (dev) | 测试环境 (qa) | 预生产环境 (pre) | 生产环境 (prod) |
|---|---|---|---|---|
| 副本数 | 1 | 2 | 3 | 5 |
| CPU请求 | 50m | 100m | 150m | 250m |
| 内存请求 | 64Mi | 128Mi | 256Mi | 512Mi |
| CPU限制 | 100m | 200m | 300m | 500m |
| 内存限制 | 128Mi | 256Mi | 512Mi | 1Gi |
| 镜像标签 | dev-latest | qa-latest | pre-latest | latest |
| 自动同步 | ✅ 启用 | ✅ 启用 | ❌ 禁用 | ❌ 禁用 |
目录结构说明
- base/: 包含所有环境共享的基础配置(Deployment、Service、Ingress)
- overlays/: 包含各环境的差异化配置(使用Kustomize patch覆盖)
快速开始
1. 安装ArgoCD
# 在Kubernetes集群中安装ArgoCD
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
2. 访问ArgoCD UI
# 获取ArgoCD Server的服务地址
kubectl get svc argocd-server -n argocd
# 端口转发(本地开发)
kubectl port-forward svc/argocd-server -n argocd 8080:443
访问 https://localhost:8080 登录ArgoCD。
3. 创建环境命名空间
kubectl create namespace dev
kubectl create namespace qa
kubectl create namespace pre
kubectl create namespace prod
4. 创建Helloworld应用(多环境)
# 登录ArgoCD
argocd login argocd.meos.plus
# 创建开发环境应用
argocd app create helloworld-dev \
--repo http://gitea.meos.plus/persagy/argocd.git \
--path apps/helloworld/overlays/dev \
--dest-server https://kubernetes.default.svc \
--dest-namespace dev \
--sync-policy automated
# 创建测试环境应用
argocd app create helloworld-qa \
--repo http://gitea.meos.plus/persagy/argocd.git \
--path apps/helloworld/overlays/qa \
--dest-server https://kubernetes.default.svc \
--dest-namespace qa \
--sync-policy automated
# 创建预生产环境应用
argocd app create helloworld-pre \
--repo http://gitea.meos.plus/persagy/argocd.git \
--path apps/helloworld/overlays/pre \
--dest-server https://kubernetes.default.svc \
--dest-namespace pre \
--sync-policy manual
# 创建生产环境应用
argocd app create helloworld-prod \
--repo http://gitea.meos.plus/persagy/argocd.git \
--path apps/helloworld/overlays/prod \
--dest-server https://kubernetes.default.svc \
--dest-namespace prod \
--sync-policy manual
5. 同步应用
# 同步开发环境
argocd app sync helloworld-dev
# 同步生产环境(手动确认)
argocd app sync helloworld-prod
6. 访问应用
# 开发环境
curl http://helloworld-dev.meos.plus
# 生产环境
curl http://helloworld.meos.plus
Git分支策略
main # 主分支(生产环境)
├── pre # 预生产分支
│ ├── qa # 测试分支
│ │ └── dev # 开发分支
│ └── feature-xxx # 功能特性分支
└── hotfix-xxx # 热修复分支
| 分支 | 用途 | 环境 | 自动化 |
|---|---|---|---|
dev |
开发集成 | 开发环境 | ✅ 自动同步 |
qa |
功能测试 | 测试环境 | ✅ 自动同步 |
pre |
预发布验证 | 预生产环境 | ❌ 手动同步 |
main |
生产发布 | 生产环境 | ❌ 手动同步 |
已部署应用
Helloworld
- 镜像:
harbor.meos.plus/public/helloworld@sha256:2d7d99991c8ee1589388720e4dc9c488df8550c478858cea07fba11023fe661e - 服务类型: ClusterIP
- 服务端口: 8080
- 状态: ✅ Healthy
ArgoCD核心概念
Application
ArgoCD中定义的应用,包含源仓库、目标集群和同步策略。
Sync Policy
同步策略定义了如何将Git仓库中的配置同步到目标集群。
Health Check
ArgoCD会自动检测应用的健康状态。
Rollback
支持一键回滚到之前的版本。
常见问题
Pod卡在Pending状态?
- 检查节点资源是否充足
- 检查镜像是否能正常拉取
- 检查PVC是否绑定成功
- 查看事件日志:
kubectl describe pod <pod-name>
同步失败?
- 检查Git仓库地址是否正确
- 检查路径配置是否正确
- 检查Kubernetes配置是否有语法错误