OpenShift 4 之 GitOps(2)用ArgoCD部署應用

OpenShift 4 之 GitOps(2)用ArgoCD部署應用

用ArgoCD部署應用

向ArgoCD增加Github Reop

首先向ArgoCD增加Github Reop,然後查看ArgoCD的repo列表。

<code>$ argocd repo add https://github.com/liuxiaoyu-git/gitops-on-openshift.git
repository 'https://github.com/liuxiaoyu-git/gitops-on-openshift.git' added

$ argocd repo list
REPO INSECURE LFS USER STATUS MESSAGE
https://github.com/liuxiaoyu-git/gitops-on-openshift.git false false - Successful/<code>

通過ArgoCD部署OpenShift應用

1. 查看當前Argo管理的OpenShift或K8s集群。如果ArgoCD和OpenShift運行在一起,那麼使用本地地址(https://kubernetes.default.svc)訪問。

<code>$ argocd cluster list
SERVER NAME STATUS MESSAGE
https://kubernetes.default.svc Successful/<code>

2. 基於Github,在ArgoCD上創建一個應用reverse-words-app,然後查看ArgoCD上的應用列表。其中ArgoCD的create命令參數有:

  • --project :ArgoCD應用程序所屬的ArgoCD項目
  • --name :ArgoCD應用程序名稱
  • --repo :Git存儲庫
  • --path :Git信息庫中存儲清單的目錄路徑
  • --dest-server :OpenShift集群
  • --dest-namespace :用於將ArgoCD應用程序部署到的OpenShift項目
  • --revision :Git存儲庫的分支
  • --sync-policy :與Git存儲庫同步的策略
<code>$ argocd app create --project default --name reverse-words-app \\
> --repo http://github.com/liuxiaoyu-git/gitops-on-openshift.git \\
> --path simple-app/reversewords_app/ \\
> --dest-server https://kubernetes.default.svc \\
> --dest-namespace reverse-words \\
> --revision master --sync-policy automated
application 'reverse-words-app' created

$ argocd app list
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
reverse-words-app https://kubernetes.default.svc reverse-words default Synced Progressing Auto <none> http://github.com/liuxiaoyu-git/gitops-on-openshift.git simple-app/reversewords_app/ master/<none>/<code>

3. 查看ArgoCD中的reverse-words-app應用,注意此時ArgoCD的reverse-words應用狀態和Github是“Synced”的同步狀態。

<code>$ argocd app get reverse-words-app
Name: reverse-words-app
Project: default
Server: https://kubernetes.default.svc
Namespace: reverse-words
URL: https://argocd-server-argocd.apps.cluster-shanghai-c30f.shanghai-c30f.example.opentlc.com/applications/reverse-words-app
Repo: http://github.com/liuxiaoyu-git/gitops-on-openshift.git
Target: master
Path: simple-app/reversewords_app/
Sync Policy: Automated
Sync Status: Synced to master (36306dc)
Health Status: Progressing

GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE
Namespace reverse-words reverse-words Running Synced namespace/reverse-words created
Service reverse-words reverse-words Synced Healthy service/reverse-words created
apps Deployment reverse-words reverse-words Synced Healthy deployment.apps/reverse-words created
Namespace reverse-words Synced Unknown/<code>

4. 查看OpenShift的Deployment和Service。

<code>$ oc get deployment -n reverse-words
NAME READY UP-TO-DATE AVAILABLE AGE
reverse-words 1/1 1 1 43s

$ oc get svc -n reverse-words

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
reverse-words ClusterIP 172.30.202.52 <none> 8080/TCP 53s/<none>/<code>

5. 創建訪問應用的Route,然後訪問reverse-words應用。

<code>$ oc expose svc reverse-words -n reverse-words
route.route.openshift.io/reverse-words exposed

$ curl -X POST http://$(oc get route reverse-words -n reverse-words -o jsonpath='{.spec.host}') -d '{"word":"PALC"}'
{"reverse_word":"CLAP"}/<code>

用ArgoCD自動更新應用配置

1. 先刪除OpenShift中reverse-words的Deployment。

<code>$ oc delete deployment reverse-words -n reverse-words
deployment.extensions "reverse-words" deleted/<code>

2. 查看ArgoCD的應用列表,確認reverse-words-app應用當前HEALTH是“Missing”的狀態,並且STATUS是“OutOfSync”狀態。

<code>$ argocd app list
NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET
reverse-words-app https://kubernetes.default.svc reverse-words default OutOfSync Missing Auto <none> http://github.com/liuxiaoyu-git/gitops-on-openshift.git simple-app/reversewords_app/ master/<none>/<code>

3. 查看ArgoCD的reverse-words-app應用。確認Route資源的STATUS是“OutOfSync”,而且在最後顯示“1 resources require pruning”,這是由於Route是我們手動生成的,而不是通過ArgoCD的Repo生成的。另外Deployment的HEALTH為“Progressing”狀態,這說明ArgoCD已經發現OpenShift的deployment和ArgoCD的Repo不同了,正在進行同步處理。

<code>$ argocd app sync reverse-words-app
TIMESTAMP GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE
2020-03-03T16:20:38+00:00 Service reverse-words reverse-words Synced Healthy
2020-03-03T16:20:38+00:00 apps Deployment reverse-words reverse-words OutOfSync Missing
2020-03-03T16:20:38+00:00 route.openshift.io Route reverse-words reverse-words OutOfSync Unknown
2020-03-03T16:20:38+00:00 Namespace reverse-words Synced Unknown

Name: reverse-words-app
Project: default
Server: https://kubernetes.default.svc
Namespace: reverse-words

URL: https://argocd-server-argocd.apps.cluster-shanghai-c30f.shanghai-c30f.example.opentlc.com/applications/reverse-words-app
Repo: http://github.com/liuxiaoyu-git/gitops-on-openshift.git
Target: master
Path: simple-app/reversewords_app/
Sync Policy: Automated
Sync Status: OutOfSync from master (36306dc)
Health Status: Progressing

Operation: Sync
Sync Revision: 36306dc264cea403e33b756de6faf95f605fee5d
Phase: Succeeded
Start: 2020-03-03 16:20:38 +0000 UTC
Finished: 2020-03-03 16:20:40 +0000 UTC
Duration: 2s
Message: successfully synced (all tasks run)

GROUP KIND NAMESPACE NAME STATUS HEALTH HOOK MESSAGE
route.openshift.io Route reverse-words reverse-words OutOfSync Unknown ignored (requires pruning)
Namespace reverse-words reverse-words Running Synced namespace/reverse-words unchanged
Service reverse-words reverse-words Synced Healthy service/reverse-words unchanged
apps Deployment reverse-words reverse-words Synced Progressing deployment.apps/reverse-words created
Namespace reverse-words Synced Unknown
FATA[0002] 1 resources require pruning
/<code>

4. 持續查看reverse-words的Deployment狀態變化,最後變為READY狀態。

<code>$ oc get deployment -n reverse-words -w
NAME READY UP-TO-DATE AVAILABLE AGE
reverse-words 0/1 1 0 29s
reverse-words 1/1 1 1 39s/<code>

5. 再次訪問reverse-words應用的路由,確認又可以正常訪問應用了。

<code>$ curl -X POST http://$(oc get route reverse-words -n reverse-words -o jsonpath='{.spec.host}') -d '{"word":"PALC"}'
{"reverse_word":"CLAP"}/<code>

# 用ArgoCD刪除應用配置

1. 此時進到ArgoCD的控制檯,在Application中進入reverse-words-ap,確認是“OutOfSync”狀態。其中是名為“reverse-words”的Route是黃色非同步狀態,這是由於這個對象是我們在OpenShift中直接創建的,而不是根據Github的配置創建的。

OpenShift 4 之 GitOps(2)用ArgoCD部署應用

2. 點擊上圖中紅框中名為“reverse-words”的Route的右側圖標,然後選擇Delete,然後確認是Force

Delete。刪除後,ArgoCD的reverse-words-app應用又恢復了“Synced”狀態了。

OpenShift 4 之 GitOps(2)用ArgoCD部署應用

3. 然後執行以下命令,確認OpenShift的名為“reverse-words”的Route對象已經被刪除了。

<code>$ oc get route
No resources found in reverse-words namespace./<code>


分享到:


相關文章: