No description
Find a file
2026-06-29 17:28:10 +08:00
apps/helloworld cd: 更新 helloworld 镜像版本 master-20260629172457 2026-06-29 17:28:10 +08:00
argocd.exe Initial commit: Multi-environment ArgoCD configuration with base/overlays structure 2026-06-05 15:37:52 +08:00
HOW_TO_ADD_APP.md Fix Git merge conflicts in README.md and HOW_TO_ADD_APP.md 2026-06-05 18:42:10 +08:00
README.md Fix Git merge conflicts in README.md and HOW_TO_ADD_APP.md 2026-06-05 18:42:10 +08:00

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状态

  1. 检查节点资源是否充足
  2. 检查镜像是否能正常拉取
  3. 检查PVC是否绑定成功
  4. 查看事件日志:kubectl describe pod <pod-name>

同步失败?

  1. 检查Git仓库地址是否正确
  2. 检查路径配置是否正确
  3. 检查Kubernetes配置是否有语法错误

学习资源