4. 使用CLI创建应用
任务目标
本案例演示如何通过 argocd CLI 完成应用创建与同步的完整闭环。你将使用一个公开的示例仓库,通过命令行将应用部署到 Kubernetes 集群,并验证其运行状态。
前置条件
- 已安装 Argo CD 服务端并暴露 API Server 地址(例如
https://localhost:8080) - 已安装
argocdCLI 工具(版本 ≥ 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 地址。
验证通过条件:
argocd app get guestbook-demo输出中Status字段显示Synced,Health字段显示Healthy。- 执行
kubectl get pods -n default可看到guestbook-ui-*前缀的 Pod 处于Running状态。 - 访问
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 即可删除应用(不会删除仓库内容)。