Argo CD 入门 - 安装与第一个应用的声明式同步
Argo CD 入门 - 安装与第一个应用的声明式同步
Argo CD 架构简介
在安装之前,简单了解一下 Argo CD 的几个核心组件,有助于我们理解它的工作方式:
- API Server: 这是我们与之交互的入口。它提供了一个 gRPC/REST API,支撑着 Web UI 和 CLI 的所有操作,并负责认证、授权等。
- Repository Server: 这个组件负责拉取 Git 仓库的内容,将其缓存到本地,并解析和渲染 Kubernetes 清单文件(例如,处理 Helm chart 或 Kustomize 配置)。
- Application Controller: 这是 GitOps 的“心脏”和“大脑”。它是一个持续运行的 Kubernetes 控制器,负责:
- 监控 Argo CD
Application
资源。 - 调用 Repository Server 获取 Git 中的期望状态。
- 通过 Kubernetes API 检查集群中的实际状态。
- 比对两者,一旦发现偏差 (Drift),就采取行动进行协调 (Reconcile),即修正集群状态以匹配 Git 中的声明。
- 监控 Argo CD
第一步:安装 Argo CD
我们将使用官方提供的 YAML 清单来安装 Argo CD。这个过程非常简单。
-
创建一个专门的命名空间:
kubectl create namespace argocd
-
应用官方安装清单:
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
这个命令会从 Argo CD 的官方 GitHub 仓库拉取最新的稳定版安装文件,并在我们刚刚创建的
argocd
命名空间中创建所有必需的资源(Deployments, Services, CRDs, RBAC 配置等)。 -
验证安装:
kubectl get pods -n argocd
等待片刻,直到所有的 Pod 都处于
Running
状态。你应该会看到类似argocd-server-xxx
,argocd-repo-server-xxx
,argocd-application-controller-xxx
等 Pod。
第二步:访问 Argo CD
Argo CD 的服务默认不会暴露到集群外部,我们需要通过一些方式来访问它。
A. 访问 Web UI
对于本地测试和学习,最简单的方式是使用 kubectl
的端口转发功能:
kubectl port-forward svc/argocd-server -n argocd 8080:443
这个命令会将你本地的 8080 端口转发到集群中 argocd
命名空间下的 argocd-server
服务的 443 端口。
现在,在你的浏览器中打开 https://localhost:8080
。浏览器会提示一个安全警告,因为 Argo CD 默认使用自签名的 TLS 证书,请选择“继续前往”即可。
B. 获取初始管理员密码
Argo CD 在安装时会自动生成一个初始的管理员 (admin
) 密码,并将其存储在一个 Kubernetes Secret 中。
使用以下命令来获取密码:
# 对于 Argo CD v2.5+,推荐使用 CLI 获取
# 如果你还没安装 CLI,可以先用下面的 kubectl 方法
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.dat