Application管理
本文介紹如何使用GitOps系統(tǒng)管理應用,包括創(chuàng)建部署單個應用、更新和回滾應用。
前提條件
已登錄GitOps系統(tǒng)。具體操作,請參見登錄GitOps系統(tǒng)。
已添加Git源倉庫。具體操作,請參見添加倉庫。
艦隊的Fleet實例已添加2個關聯(lián)集群(服務提供者集群、服務消費者集群)。具體操作,請參見添加關聯(lián)集群。
創(chuàng)建和部署應用
本文以創(chuàng)建echo-server-demo應用為例,創(chuàng)建應用并將其部署至ACK集群,該集群的APIServer地址為https://47.97.XX.XX:6443
。
若由于網(wǎng)絡原因導致您無法訪問GitHub,您也可以將https://github.com/AliyunContainerService/gitops-demo.git
替換為https://code.aliyun.com/shuwei.hsw/gitops-demo.git
進行訪問。
通過ArgoCD控制臺創(chuàng)建和部署
登錄ArgoCD UI,具體操作,請參見通過ArgoCD UI方式登錄。
在ArgoCD UI左側導航欄選擇Applications,然后單擊+ NEW APP。
在彈出的面板配置以下信息,然后單擊CREATE進行創(chuàng)建。
區(qū)域
參數(shù)
參數(shù)值
GENERAL
Application Name
echo-server-demo
Project Name
default
SYNC POLICY
在下拉列表中選擇Automatic。
參數(shù)取值如下:
Manual:當Git端有變更時,需要用戶手動執(zhí)行同步動作將其部署至目標集群。
Automatic:ArgoCD Server每隔3分鐘自動檢測Git端的變更并將其自動部署至目標集群。
SYNC OPTIONS
勾選AUTO-CREATE NAMESPACE。
SOURCE
Repository URL
在下拉列表選擇已有Git Repo,此處選擇https://github.com/AliyunContainerService/gitops-demo.git。
Revision
HEAD
Path
manifests/helm/echo-server
DESTINATION
Cluster URL/Cluster Name
在下拉列表中選擇目標集群。
Namespace
echo-server-demo
HELM
VALUES FILES
values.yaml
創(chuàng)建完成后,在Application頁面,即可看到echo-server-demo的應用狀態(tài)。
如果SYNC POLICY選擇的是Manual方式,需要手動點擊SYNC,將應用同步部署至目標集群。應用的Status為Healthy和Synced,表示已經(jīng)成功同步。
通過ArgoCD CLI創(chuàng)建和部署
執(zhí)行以下命令,創(chuàng)建echo-server-demo應用。
argocd app create echo-server-demo --repo https://github.com/AliyunContainerService/gitops-demo.git --path manifests/directory/production --dest-namespace echo-server-demo --dest-server https://47.97.XX.XX:6443 --sync-policy none
預期輸出:
application 'echo-server-demo' created
命令行參數(shù)解釋如下表所示。
參數(shù)
說明
repo
該應用所引用的Git源倉庫地址。
path
echo-server-demo示例應用的YAML編排文件所在的子目錄。
dest-server
目標集群APIServer地址。
dest-namespace
目標集群命名空間。
sync-policy
應用的同步策略。默認為
none
,可選值為auto
或none
。auto
:表示GitOps系統(tǒng)每隔一段時間就會自動檢測Git源倉庫中echo-server實例應用的變動并自動將其部署到目標集群。none
:表示需要用戶手動執(zhí)行同步動作將應用部署到目標集群。
執(zhí)行以下命令,將echo-server-demo應用同步部署到目標集群。
argocd app sync echo-server-demo
預期輸出:
TIMESTAMP GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE 2022-10-17T16:43:20+08:00 apps Deployment echo-server-demo echo-server OutOfSync Missing 2022-10-17T16:43:20+08:00 Service echo-server-demo echo-server OutOfSync Missing 2022-10-17T16:43:20+08:00 Service echo-server-demo echo-server Synced Progressing 2022-10-17T16:43:20+08:00 Service echo-server-demo echo-server Synced Progressing service/echo-server-demo created 2022-10-17T16:43:20+08:00 apps Deployment echo-server-demo echo-server OutOfSync Missing deployment.apps/echo-server-demo created 2022-10-17T16:43:20+08:00 apps Deployment echo-server-demo echo-server Synced Progressing deployment.apps/echo-server-demo created Name: echo-server-demo Project: default Server: https://47.97.XX.XX:6443 Namespace: echo-server-demo URL: https://127.0.0.1:65384/applications/echo-server-demo Repo: https://github.com/AliyunContainerService/gitops-demo.git Target: Path: manifests/directory/production SyncWindow: Sync Allowed Sync Policy: <none> Sync Status: Synced to (02af62b) Health Status: Progressing Operation: Sync Sync Revision: 02af62bf21e76f53ebfcc282c45865d2308c**** Phase: Succeeded Start: 2022-10-17 16:43:19 +0800 CST Finished: 2022-10-17 16:43:20 +0800 CST Duration: 1s Message: successfully synced (all tasks run) GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE Service echo-server-demo echo-server-demo Synced Progressing service/echo-server-demo created apps Deployment echo-server-demo echo-server-demo Synced Progressing deployment.apps/echo-server-demo created
查看應用列表
通過ArgoCD控制臺查看
在ArgoCD UI左側導航欄選擇Applications,即可查看應用列表。
單擊echo-server-demo應用名稱,即可查看應用詳情,展示應用相關的Kubernetes資源的拓撲結構及相應狀態(tài)。
通過ArgoCD CLI查看
執(zhí)行以下命令,查看應用列表。
argocd app list
預期輸出:
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
echo-server https://47.97.XX.XX:6443 echo-server-demo default Synced Healthy <none> <none> https://github.com/AliyunContainerService/gitops-demo.git manifests/directory/production
更新應用
在GitOps應用發(fā)布模型下,所有關于應用的變更都需要在Git源倉庫中提交,再將變更同步部署至目標集群。
在Git源倉庫中提交變更內(nèi)容。
執(zhí)行以下命令,同步部署最新應用到目標集群。
argocd app sync echo-server-demo
執(zhí)行以下命令,訪問應用。
curl XX.XX.XX.XX:8080/version #替換XX.XX.XX.XX為應用的IP地址。
預期輸出:
"Hello Echo Server v2.0"
回滾應用
通過ArgoCD控制臺回滾
在ArgoCD UI左側導航欄選擇Applications,在應用列表中找到echo-server-demo應用并單擊應用名稱。
在應用詳情頁面單擊HISTORY AND ROLLBACK,在彈出的應用歷史版本中,選擇要回滾到的目標版本,單擊右上角彈出的Rollback。
等待回滾完成后,回到應用詳情頁面驗證應用版本。
通過ArgoCD CLI回滾
執(zhí)行以下命令,查看已有且可用的歷史版本。
argocd app history echo-server-demo
預期輸出:
ID DATE REVISION 0 2022-10-17 16:43:20 +0800 CST (02af62b) 1 2022-10-17 16:52:49 +0800 CST (56ae547)
當前新版本
REVISION
為56ae547
,序列號為1。執(zhí)行以下命令,將應用回滾到
REVISION
為02af62b
的歷史版本。argocd app rollback echo-server-demo 0
待回滾完成后,繼續(xù)驗證訪問應用。
執(zhí)行以下命令,訪問應用。
curl XX.XX.XX.XX:8080/version #替換XX.XX.XX.XX為應用的IP地址。
預期輸出:
"Hello Echo Server v1.0"