什麼是Argo CD?
Argo CD是一個為Kubernetes而生的、遵循聲明式GitOps理念的持續部署工具,其優勢為:
1、應用定義、配置和環境資訊是聲明式的,并且可以進行版本控制;
2、應用部署和生命周期管理是全自動化的,是可審計的,清晰易懂;
3、Argo CD是一個獨立的部署工具,支援對多個環境、多個Kubernetes叢集上的應用進行統一部署和管理。
Argo CD與其他CD工具(例如Spinnaker、Tekton、Jenkins X)等的具體對比請參下圖:

檢視argocd中定義的K8S叢集:
#argocd cluster list
在将應用程式配置到Argo CD之前,我們需要配置Git存儲庫,該存儲庫包含用于部署應用程式的清單将存儲庫添加到Argo CD:
argocd repo add http://gogs.2886795312-80-host04nc.environments.katacoda.com/student/gitops-lab.git
驗證存儲庫已加載到Argo CD中:
argocd repo list
在Argo CD中定義應用程式
Git存儲庫已經定義好了,現在該繼續在Argo CD上配置應用程式。
使用先前定義的git倉庫建立應用程式:
argocd app create --project default --name reverse-words-app \
--repo http://gogs.2886795312-80-host04nc.environments.katacoda.com/student/gitops-lab.git \
--path simple-app/reversewords_app/ \
--dest-server https://kubernetes.default.svc \
--dest-namespace reverse-words \
--revision master --sync-policy automated
--project将在其中建立應用程式的Argo CD項目
--name Argo CD應用程式名稱
--repo使用Argo CD定義的Git存儲庫,它将用作代碼來源
--path Git存儲庫中存儲應用程式清單的路徑
--dest-server Kubernetes部署應用的目标K8S叢集
--dest-namespace部署應用的K8S叢集中的目标namespaces
--revision用于擷取應用程式源的Git branch/reference
--sync-policy如果自動Argo CD将執行定期檢查以確定Kubernetes中的應用程式狀态與Git中的應用程式定義比對
列出新定義的應用程式:
argocd app list
等待Argo CD将應用程式報告為“Healthy”,
argocd app get reverse-words-app
驗證應用程式正在運作,應用程式包括:
A namespace
A Deployment
A Service
curl應用,驗證效果(将輸入的字元串反過來顯示):
curl -X POST http://$(oc -n reverse-words get route reverse-words -o jsonpath='{.spec.host}') -d '{"word":"PALC"}'
接下來,我們删除應用的deployment,并觀察Argo CD是否可以重新建立deployment。
oc -n reverse-words delete deployment reverse-words
強制進行同步應用(由于同步政策設定為“Automated”,是以Argo CD可能已經同步了該應用程式):
argocd app sync reverse-words-app
上圖中的報錯,是由我們運作oc Exposure指令時建立的OpenShift Route引起的,因為它沒有存儲在Git存儲庫中。如果啟用了 auto-pruning 功能,則該路由将被删除。
該錯誤說明了将所有Kubernetes對象保留在Git中的重要性,以確定沒有配置漂移。驗證同步完成後是否建立了deployment:
在之前的實驗中,我們已經看到Argo CD如何檢測到由oc Exposure指令建立的OpenShift Route在Git存儲庫中不可用,我們将通過将路由定義添加到Git存儲庫來解決此問題。
探索OpenShift Route定義檔案:
将route.yaml添加到git存儲庫:
cp ~/route.yaml ~/gitops-lab/simple-app/reversewords_app/
送出新更改并将其推送到Git remote
cd ~/gitops-lab/
git add simple-app/reversewords_app/route.yaml
git commit -m "Added application route definition"
git push origin master
我們清除現有的實驗環境(部署的項目和應用)。在接下來的步驟中,通過UI部署應用。
在Argo UI中部署應用
登入ArgoCD UI:
連接配接到repo:
連接配接成功:
在Argo CD WebUI中定義應用程式,輸入參數如下:
檢視建立好的應用:
如果單擊該應用程式,将進入詳細視圖:
驗證是否在叢集中建立了不同的對象(尤其關注自動建立了路由),并通過curl驗證應用。
我們進一步檢視應用對應的資源:
可以對應用做多種操作: