跳到主要内容

使用官方 Manifest 安装 Argo CD

本篇以官方发布 Manifest 为主线。生产环境不要直接引用 stable 或未审查的在线 YAML;应固定版本、先在测试集群验证,并将下载后的清单纳入平台 Git 仓库审阅。

1. 安装前检查​

安装账号需要在目标集群创建 Namespace、CRD、Deployment、Service、ClusterRole 与 ClusterRoleBinding。Argo CD 本身不等于集群管理员:后续应通过 AppProject 与目标集群 RBAC 缩小应用同步权限。

# 确认当前 context 指向预期的管理集群
kubectl config current-context

# 检查集群与节点可用性
kubectl get nodes

# 创建安装 Namespace;已存在时不会报错
kubectl create namespace argocd --dry-run=client -o yaml | kubectl apply -f -

2. 固定版本并应用官方清单​

先在 Argo CD Releases 选择经过兼容性验证的版本。以下变量必须替换为团队批准的版本,不能使用浮动分支。

# 示例:将版本固定在团队批准的 Argo CD Release
export ARGOCD_VERSION=<approved-version>

# 下载官方安装清单到受控目录,供代码审阅与后续复现使用
curl -fsSL \
"https://raw.githubusercontent.com/argoproj/argo-cd/${ARGOCD_VERSION}/manifests/install.yaml" \
-o argocd-install.yaml

应用前先查看变更。升级时尤其要关注 CRD、RBAC 和镜像版本,不要在生产集群直接跳过审阅。

# 预览将创建或修改的资源
kubectl diff -n argocd -f argocd-install.yaml || true

# 安装或升级控制面
kubectl apply -n argocd -f argocd-install.yaml

3. 等待控制面就绪​

# 观察所有核心组件;Pending 或 CrashLoopBackOff 时先停止后续配置
kubectl get pods -n argocd -w
# 核心 Deployment 就绪后再继续
kubectl rollout status deployment/argocd-server -n argocd --timeout=5m
kubectl rollout status deployment/argocd-repo-server -n argocd --timeout=5m
kubectl rollout status statefulset/argocd-application-controller -n argocd --timeout=5m

不同版本的控制器工作负载类型可能不同;若 rollout status 找不到对象,使用 kubectl get deploy,statefulset -n argocd 确认实际名称。

4. 初始访问与管理员密码​

初始 admin 密码保存在 Secret 中。仅用于首次进入后配置 SSO 或创建受限运维账号;不要把密码打印到共享终端、CI 日志或工单。

# 临时端口转发,仅供本机初始化;终止进程后访问即关闭
kubectl port-forward service/argocd-server -n argocd 8080:443

另开终端获取初始密码,并立即使用密码管理器保存:

# 从 initial-admin-secret 读取一次性初始密码
kubectl -n argocd get secret argocd-initial-admin-secret \
-o jsonpath='{.data.password}' | base64 -d
echo

生产入口应通过 Ingress、Gateway 或受控 LoadBalancer 暴露,并启用 TLS、SSO、网络访问限制和审计。完成身份体系迁移后,删除初始密码 Secret:

# 确认已有可用的 SSO 管理员或本地受控账号后再删除
kubectl -n argocd delete secret argocd-initial-admin-secret

5. 安装验证​

# 检查 Argo CD API、仓库服务与控制器是否存在 Ready 副本
kubectl get deploy,statefulset -n argocd

# 检查安装清单中的 CRD 是否已注册
kubectl get crd | grep 'argoproj.io'
不要立刻开启全局自动同步

先创建一个开发环境的手工同步 Application,验证仓库访问、渲染、Namespace 权限和资源健康状态。自动同步、Prune 与 Self Heal 应按应用和环境逐步启用。