Argo CD多集群管理:GitOps发布流水线进阶实战 - 第1节
1.1 课程导学:为什么需要多集群 GitOps?
在云原生技术快速普及的今天,单一 Kubernetes 集群已无法满足企业级应用的隔离、容灾与合规需求。多集群架构成为必然选择,但随之而来的是配置碎片化、版本漂移、权限分散等运维难题。GitOps 以声明式配置和版本控制为核心,为多集群管理提供了可审计、可回滚、自动化的解决方案。
本课程以 Argo CD 为核心工具,深入讲解如何通过 GitOps 流水线统一管理多个 Kubernetes 集群的发布流程。你将掌握从单集群到多集群的进阶技巧,包括 ApplicationSet、多集群 RBAC、渐进式交付、故障自愈等实战能力。
课程核心目标
| 目标领域 | 具体能力 |
|---|---|
| 多集群管理 | 使用 Argo CD 统一纳管 3 个以上 K3s 集群,实现跨集群应用同步 |
| GitOps 流水线 | 设计基于 Git 仓库的多环境发布流水线,支持灰度、蓝绿部署策略 |
| 安全与合规 | 配置多租户 RBAC、Sealed Secrets 加密、策略即代码(OPA/Gatekeeper) |
| 故障自愈 | 利用 Argo CD 自动检测集群状态漂移并回滚至期望状态 |
| 可观测性 | 集成 Prometheus/Grafana 监控多集群同步状态与发布指标 |
适用人群
- 已有 Kubernetes 基础,希望掌握多集群管理的运维/DevOps 工程师
- 正在或计划实施 GitOps 流程的 SRE 与平台工程师
- 对 Argo CD 有初步了解,需要进阶多集群与流水线编排的开发者
学习前提: 建议具备基本的 Kubernetes 操作经验(kubectl、YAML 编写),了解 Git 工作流。本课程实验环境基于 K3s,轻量且资源友好,可在个人笔记本或云主机上运行。
1.2 多集群 GitOps 架构概览
下图展示了本课程将要构建的多集群 GitOps 核心架构。Argo CD 作为控制平面,通过 Git 仓库驱动多个目标集群的应用状态同步。
1.3 实验环境搭建指南
本课程实验环境基于 K3s 轻量级 Kubernetes 发行版,你可以在单台 Linux 服务器或虚拟机中通过 multipass 或 k3d 快速创建多个集群。以下是环境清单与搭建步骤。
环境需求
| 组件 | 版本要求 | 说明 |
|---|---|---|
| 操作系统 | Ubuntu 22.04 / CentOS 8+ | 推荐 Ubuntu,包管理更友好 |
| K3s | v1.28+ | 单节点即可,多节点可选 |
| kubectl | v1.28+ | 与 K3s 版本匹配 |
| Helm | v3.12+ | 用于安装 Argo CD 及扩展组件 |
| Git | v2.30+ | 用于管理配置仓库 |
| 内存 | ≥ 8GB | 运行 3 个 K3s 集群 + Argo CD |
步骤 1:安装 K3s 集群
使用官方脚本安装第一个 K3s 集群(命名为 cluster-dev):
# 安装 K3s 主节点
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--cluster-cidr=10.42.0.0/16 --service-cidr=10.43.0.0/16" sh -
# 获取 kubeconfig
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $USER:$USER ~/.kube/config
export KUBECONFIG=~/.kube/config
# 验证集群状态
kubectl get nodes
步骤 2:创建多集群(k3d 方式)
使用 k3d 在单机快速创建三个独立集群,便于多集群管理实验:
# 安装 k3d
curl -s https://raw.githubusercontent.com/k3d-io/k3d/main/install.sh | bash
# 创建三个集群
k3d cluster create cluster-dev --servers 1 --agents 1 --port 6443:30443@server:0
k3d cluster create cluster-staging --servers 1 --agents 1 --port 6444:30444@server:0
k3d cluster create cluster-prod --servers 1 --agents 2 --port 6445:30445@server:0
# 查看集群列表
k3d cluster list
多集群 kubeconfig 合并: 使用
k3d kubeconfig merge cluster-dev cluster-staging cluster-prod --output ~/.kube/config 将三个集群的凭据合并到同一个 kubeconfig 文件中,并通过 kubectl config use-context 切换。
步骤 3:安装 Argo CD
在 cluster-dev 集群中安装 Argo CD 作为控制平面:
# 创建命名空间
kubectl create namespace argocd
# 使用 Helm 安装 Argo CD
helm repo add argo https://argoproj.github.io/argo-helm
helm repo update
helm install argocd argo/argo-cd \
--namespace argocd \
--set server.service.type=NodePort \
--set server.service.nodePortHttp=30080 \
--set configs.params."server\.insecure"=true \
--version 6.7.0
# 等待所有 Pod 就绪
kubectl wait --for=condition=Ready pods --all -n argocd --timeout=300s
# 获取初始 admin 密码
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
步骤 4:验证安装
通过浏览器或 CLI 访问 Argo CD:
# 端口转发(如果使用 NodePort 则直接访问节点 IP:30080)
kubectl port-forward svc/argocd-server -n argocd 8080:80 &
# CLI 登录
argocd login localhost:8080 --username admin --password $(kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d) --insecure
# 查看当前集群状态
argocd cluster list
注意: 生产环境请务必配置 HTTPS 证书并修改默认 admin 密码。本课程实验环境使用
--insecure 仅用于本地测试。
1.4 实验环境拓扑
下图展示了本课程实验环境的完整拓扑结构,包含控制平面与三个目标集群的网络关系。
1.5 本章小结与实验检查清单
完成本章学习后,你应具备以下实验环境基础。请逐项确认:
| 检查项 | 验证命令 | 预期结果 |
|---|---|---|
| K3s 集群运行中 | kubectl get nodes |
显示 1 个 Ready 节点 |
| 多集群 kubeconfig | kubectl config get-contexts |
至少 3 个 context(dev/staging/prod) |
| Argo CD Pod 就绪 | kubectl get pods -n argocd |
所有 Pod 状态为 Running |
| Argo CD CLI 登录 | argocd account get-user-info |
返回 admin 用户信息 |
| Git 仓库初始化 | git init && git remote -v |
本地仓库已创建,远程仓库已关联 |