官方演示示例 guestbook 应用程序的示例存储库可从https://github.com/argoproj/argocd-example-apps.git获得, 以演示Argo CD的工作方式。
创建应用命令
您可以使用端口转发访问Argo CD:--port-forward-namespace argocd
向每个CLI命令添加标志或设置ARGOCD_OPTS
环境变量export ARGOCD_OPTS='--port-forward-namespace argocd'
:
--project default
(可选) 使用默认的--name
(可选) 应用名字 也可以直接 argocd app create 应用名字--repo
git仓库地址--path
git仓库下的yaml资源清单目录--dest-server
要部署到的目标k8s集群,当前集群就是这样https://kubernetes.default.svc--dest-namespace
目标集群的命名空间--revision
git仓库的分支--sync-policy automated
(可选)同步策略自动同步, 不设置则不自动同步,详细查看https://argoproj.github.io/argo-cd/user-guide/auto_sync/ 自动同步策略:当Argo CD检测到Git中所需的清单和群集中的实时状态之间存在差异时,它具有自动同步应用程序的能力。自动同步的好处是CI / CD管道不再需要直接访问Argo CD API服务器来执行部署。取而代之的是,管道进行了提交,并将对跟踪Git存储库中的清单所做的更改推送到Git存储库。
$ argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default --revision master
OR
$ argocd app create --project default --name pig-salmpes-dev --repo https://gitee.com/zhangchengji/pig-yaml.git --path deploy/dev --dest-server https://kubernetes.default.svc --dest-namespace default --revision master --sync-policy automated
查看部署的应用
argocd app list
指定应用名称查看详情
argocd app get guestbook
同步部署的应用
argocd app sync guestbook
设置应用为自动同步
argocd app set guestbook --sync-policy automated
强烈建议使用其他Git存储库来保存您的kubernetes清单(与应用程序源代码分开)。请参阅最佳做法 以获取进一步的理由。
打开浏览器进入Argo CD外部UI,然后通过在浏览器中访问IP /主机名登录并使用在步骤4中设置的凭据。
登录后,单击**+ New App**按钮,如下所示:
为您的应用命名guestbook
,使用项目default
,并将同步策略保留为Manual
(手动):
通过将存储库url设置为github repo url,将https://github.com/argoproj/argocd-example-apps.git存储库连接到Argo CD,将修订版本保留为HEAD
,并将路径设置为guestbook
:
对于Destination,将cluster设置为,in-cluster
并将命名空间设置为default
:
填写完以上信息后,请单击UI顶部的“创建”以创建guestbook
应用程序:
创建完成因为我们设置的手动同步策略,所以这里并没有部署,需要手动点击同步。
同步的方式有两种一个是通过点击UI上的SYNC和argocd命令
创建guestbook
应用程序后,您现在可以查看其状态:
$ argocd app get guestbook
Name: guestbook
Project: default
Server: https://kubernetes.default.svc
Namespace: default
URL: http://localhost:8080/applications/guestbook
Repo: https://github.com/argoproj/argocd-example-apps.git
Target: HEAD
Path: guestbook
SyncWindow: Sync Allowed
Sync Policy:
Sync Status: OutOfSync from HEAD (6bed858)
Health Status: Missing
GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE
Service default guestbook-ui OutOfSync Missing
OutOfSync
由于尚未部署应用程序,并且尚未创建Kubernetes资源,因此应用程序状态最初处于状态。要同步(部署)应用程序,请运行:
$ argocd app sync guestbook
TIMESTAMP GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE
2020-03-19T09:35:44+08:00 Service default guestbook-ui OutOfSync Missing
2020-03-19T09:35:44+08:00 apps Deployment default guestbook-ui OutOfSync Missing
2020-03-19T09:35:44+08:00 Service default guestbook-ui Synced Healthy
Name: guestbook
Project: default
Server: https://kubernetes.default.svc
Namespace: default
URL: http://localhost:8080/applications/guestbook
Repo: https://github.com/argoproj/argocd-example-apps.git
Target: HEAD
Path: guestbook
SyncWindow: Sync Allowed
Sync Policy:
Sync Status: Synced to HEAD (6bed858)
Health Status: Progressing
Operation: Sync
Sync Revision: 6bed858de32a0e876ec49dad1a2e3c5840d3fb07
Phase: Succeeded
Start: 2020-03-19 09:35:44 +0800 CST
Finished: 2020-03-19 09:35:44 +0800 CST
Duration: 0s
Message: successfully synced (all tasks run)
GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE
Service default guestbook-ui Synced Healthy service/guestbook-ui created
apps Deployment default guestbook-ui Synced Progressing deployment.apps/guestbook-ui created
此命令从存储库中检索清单并执行kubectl apply
清单中的一个。该留言簿应用程序现在正在运行,您现在可以查看其资源组件,日志,事件和评估的健康状态:
从UI:
命令查看
$ kubectl get all -l app=guestbook-ui
NAME READY STATUS RESTARTS AGE
pod/guestbook-ui-7bc795dc8c-m69fl 1/1 Running 0 3m6s
NAME DESIRED CURRENT READY AGE
replicaset.apps/guestbook-ui-7bc795dc8c 1 1 1 3m6s
修改guestbook的访问方式为NodePort,当然也可用ingress暴露
如果有兴趣了解ArgoCD,请继续关注ArgoCD 剩余连载文章,谢谢。
请看下篇Argo CD与Jenkins结合