4. 使用CLI创建应用

任务目标

本案例演示如何通过 argocd CLI 完成应用创建与同步的完整闭环。你将使用一个公开的示例仓库,通过命令行将应用部署到 Kubernetes 集群,并验证其运行状态。

前置条件

  • 已安装 Argo CD 服务端并暴露 API Server 地址(例如 https://localhost:8080)
  • 已安装 argocd CLI 工具(版本 ≥ 2.0)
  • 已配置 kubectl 可访问目标集群
  • 已获取 Argo CD 初始管理员密码(默认存储在 argocd-initial-admin-secret 中)

关键实现

以下命令序列完成从登录到同步的完整操作。核心逻辑是:先通过 CLI 建立与 Argo CD 服务器的会话,然后声明式地创建应用(指定仓库、路径与目标集群),最后触发同步并检查结果。

# 1. 登录 Argo CD(使用初始管理员密码)
argocd login localhost:8080 --username admin --password $(kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d) --insecure

# 2. 创建应用(使用官方示例仓库)
argocd app create guestbook-demo \
  --repo https://github.com/argoproj/argocd-example-apps.git \
  --path guestbook \
  --dest-server https://kubernetes.default.svc \
  --dest-namespace default

# 3. 查看应用初始状态(预期为 OutOfSync)
argocd app get guestbook-demo

# 4. 同步应用
argocd app sync guestbook-demo

# 5. 确认同步完成(预期 Status 为 Synced,Health 为 Healthy)
argocd app get guestbook-demo

运行与验证

执行上述命令时,请确保当前 kubectl 上下文指向 Argo CD 所在集群。若 Argo CD 部署在其他集群,需将 --dest-server 替换为目标集群的 API Server 地址。

验证通过条件:

  1. argocd app get guestbook-demo 输出中 Status 字段显示 Synced,Health 字段显示 Healthy。
  2. 执行 kubectl get pods -n default 可看到 guestbook-ui-* 前缀的 Pod 处于 Running 状态。
  3. 访问 kubectl get svc -n default guestbook-ui 获取 Service 端口,通过 curl 或浏览器访问应返回 HTTP 200 页面。

常见问题

  • 登录失败:确认密码提取命令正确,且 Argo CD 服务端已就绪(kubectl get pods -n argocd 中所有 Pod 为 Running)。
  • 同步超时:检查网络是否能访问 GitHub 仓库,必要时配置代理或使用私有仓库并提前添加凭据。
  • 应用状态为 Missing:检查 --path guestbook 是否正确,该路径下应存在 deployment.yaml 和 service.yaml。

如需清理环境,执行 argocd app delete guestbook-demo --yes 即可删除应用(不会删除仓库内容)。