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**按鈕,如下所示:

image-20200319091801268

爲您的應用命名guestbook,使用項目default,並將同步策略保留爲Manual(手動):

image-20200319092020568

通過將存儲庫url設置爲github repo url,將https://github.com/argoproj/argocd-example-apps.git存儲庫連接到Argo CD,將修訂版本保留爲HEAD,並將路徑設置爲guestbook

image-20200319092307275

對於Destination,將cluster設置爲,in-cluster並將命名空間設置爲default

image-20200319092438178

填寫完以上信息後,請單擊UI頂部的“創建”以創建guestbook應用程序:

image-20200319092609564

創建完成因爲我們設置的手動同步策略,所以這裏並沒有部署,需要手動點擊同步。

image-20200319092737263

同步部署的應用

同步的方式有兩種一個是通過點擊UI上的SYNC和argocd命令

image-20200319093228034

創建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:        <none>
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:        <none>
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

image-20200319093851361

此命令從存儲庫中檢索清單並執行kubectl apply清單中的一個。該留言簿應用程序現在正在運行,您現在可以查看其資源組件,日誌,事件和評估的健康狀態:

從UI:

image-20200319094115559
image-20200319094223917

命令查看

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

image-20200319094653208

image-20200319094544731
如果有興趣瞭解ArgoCD,請繼續關注ArgoCD 剩餘連載文章,謝謝。

😜請看下篇Argo CD與Jenkins結合

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章