GitOps最强工具-3. Argo CD部署应用

官方演示示例 guestbook 应用程序的示例存储库可从https://github.com/argoproj/argocd-example-apps.git获得, 以演示Argo CD的工作方式。

通过CLI部署

创建应用命令

您可以使用端口转发访问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清单(与应用程序源代码分开)。请参阅最佳做法 以获取进一步的理由。

Web UI 部署应用

打开浏览器进入Argo CD外部UI,然后通过在浏览器中访问IP /主机名登录并使用在步骤4中设置的凭据。

登录后,单击**+ New App**按钮,如下所示:

GitOps最强工具-3. Argo CD部署应用_第1张图片

为您的应用命名guestbook,使用项目default,并将同步策略保留为Manual(手动):

GitOps最强工具-3. Argo CD部署应用_第2张图片

通过将存储库url设置为github repo url,将https://github.com/argoproj/argocd-example-apps.git存储库连接到Argo CD,将修订版本保留为HEAD,并将路径设置为guestbook

GitOps最强工具-3. Argo CD部署应用_第3张图片

对于Destination,将cluster设置为,in-cluster并将命名空间设置为default

GitOps最强工具-3. Argo CD部署应用_第4张图片

填写完以上信息后,请单击UI顶部的“创建”以创建guestbook应用程序:

image-20200319092609564

创建完成因为我们设置的手动同步策略,所以这里并没有部署,需要手动点击同步。

GitOps最强工具-3. Argo CD部署应用_第5张图片

同步部署的应用

同步的方式有两种一个是通过点击UI上的SYNC和argocd命令

GitOps最强工具-3. Argo CD部署应用_第6张图片

创建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

GitOps最强工具-3. Argo CD部署应用_第7张图片

此命令从存储库中检索清单并执行kubectl apply清单中的一个。该留言簿应用程序现在正在运行,您现在可以查看其资源组件,日志,事件和评估的健康状态:

从UI:

GitOps最强工具-3. Argo CD部署应用_第8张图片
GitOps最强工具-3. Argo CD部署应用_第9张图片

命令查看

$ 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暴露

GitOps最强工具-3. Argo CD部署应用_第10张图片

GitOps最强工具-3. Argo CD部署应用_第11张图片
如果有兴趣了解ArgoCD,请继续关注ArgoCD 剩余连载文章,谢谢。

请看下篇Argo CD与Jenkins结合

你可能感兴趣的:(DevOps)