官方演示示例 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**按鈕,如下所示:
爲您的應用命名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: <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
此命令從存儲庫中檢索清單並執行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結合