OpenShift 4 之 GitOps(2)用ArgoCD向多云部署应用

OpenShift 4.x HOL教程汇总
说明:本文已经在OpenShift 4.15 + Gitops Operator 1.12 环境中验证

用ArgoCD部署应用

向ArgoCD增加Github Repo

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

$ 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
TYPE  NAME  REPO                                                      INSECURE  OCI    LFS    CREDS  STATUS      MESSAGE
git         https://github.com/liuxiaoyu-git/gitops-on-openshift.git  false     false  false  false  Successful

通过ArgoCD部署OpenShift应用

  1. 创建部署应用的目标项目,并打标签,说明该项目为ArgoCD管理。
$ oc new-project reverse-words
$ oc label namespace reverse-words argocd.argoproj.io/managed-by=openshift-gitops
  1. 查看当前Argo管理的OpenShift或K8s集群。如果ArgoCD和OpenShift运行在一起,那么使用本地地址(https://kubernetes.default.svc)访问。
$ argocd cluster list
SERVER                          NAME        VERSION  STATUS      MESSAGE  PROJECT
https://kubernetes.default.svc  in-cluster  1.28     Successful
  1. 基于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存储库同步的策略
$ argocd app create --project default --name reverse-words-app \
     --repo https://github.com/liuxiaoyu-git/gitops-on-openshift.git \
     --path simple-app/reversewords_app/ \
     --dest-server https://kubernetes.default.svc \
     --dest-namespace reverse-words \
     --revision HEAD --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>      https://github.com/liuxiaoyu-git/gitops-on-openshift.git     simple-app/reversewords_app/  master
  1. 查看ArgoCD中的reverse-words-app应用,注意此时ArgoCD的reverse-words应用的“Sync Status”是“Synced to HEAD”状态。
$ argocd app get reverse-words-app
Name:               reverse-words-app
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          reverse-words
URL:                https://openshift-gitops-server-openshift-gitops.apps.cluster-394c.394c.sandbox1709.opentlc.com/applications/reverse-words-app
Repo:               http://github.com/liuxiaoyu-git/gitops-on-openshift.git
Target:             HEAD
Path:               simple-app/reversewords_app/
SyncWindow:         Sync Allowed
Sync Policy:        Automated
Sync Status:        Synced to HEAD (36306dc)
Health Status:      Healthy

GROUP  KIND        NAMESPACE      NAME           STATUS   HEALTH   HOOK  MESSAGE
       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   Healthy        deployment.apps/reverse-words created
       Namespace                  reverse-words  Synced
  1. 手动创建访问应用的Route,然后访问reverse-words应用。
$ oc expose svc reverse-words -n reverse-words
$ curl -X POST http://$(oc get route reverse-words -n reverse-words -o jsonpath='{.spec.host}') -d '{"word":"PALC"}'
{"reverse_word":"CLAP"}
  1. 再次查看ArgoCD中的reverse-words-app应用,注意此时ArgoCD的reverse-words应用的“Sync Status”是“OutOfSync from HEAD”状态。在最后也可看到名为“reverse-words”的Route资源也是“OutOfSync”状态,这是由于Route是手动创建的。
$ argocd app get reverse-words-app
Name:               reverse-words-app
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          reverse-words
URL:                https://openshift-gitops-server-openshift-gitops.apps.cluster-394c.394c.sandbox1709.opentlc.com/applications/reverse-words-app
Repo:               http://github.com/liuxiaoyu-git/gitops-on-openshift.git
Target:             HEAD
Path:               simple-app/reversewords_app/
SyncWindow:         Sync Allowed
Sync Policy:        Automated
Sync Status:        OutOfSync from HEAD (36306dc)
Health Status:      Healthy

GROUP               KIND        NAMESPACE      NAME           STATUS     HEALTH   HOOK  MESSAGE
                    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     Healthy        deployment.apps/reverse-words created
                    Namespace                  reverse-words  Synced
route.openshift.io  Route       reverse-words  reverse-words  OutOfSync

用ArgoCD自动更新应用配置

  1. 在ArgoCD中查看当前的应用的配置,确认最下方已经开启了“AUTOMATED 和 SELF HEAL”。
    在这里插入图片描述
  2. 先删除OpenShift中reverse-words的Deployment。
$ oc delete deployment reverse-words -n reverse-words
deployment.extensions "reverse-words" deleted
  1. 查看reverse-words-app应用当前状态,确认“Health Status”是“Missing”的状态,并且Sync Status是“OutOfSync”状态。
$ argocd app get reverse-words-app
Name:               reverse-words-app
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          reverse-words
URL:                https://openshift-gitops-server-openshift-gitops.apps.cluster-394c.394c.sandbox1709.opentlc.com/applications/reverse-words-app
Repo:               http://github.com/liuxiaoyu-git/gitops-on-openshift.git
Target:             HEAD
Path:               simple-app/reversewords_app/
SyncWindow:         Sync Allowed
Sync Policy:        Automated
Sync Status:        OutOfSync from HEAD (36306dc)
Health Status:      Missing
 
GROUP               KIND        NAMESPACE      NAME           STATUS     HEALTH   HOOK  MESSAGE
                    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  OutOfSync  Missing        deployment.apps/reverse-words created
                    Namespace                  reverse-words  Synced
route.openshift.io  Route       reverse-words  reverse-words  OutOfSync
  1. 执行命令同步reverse-words-app应用。确认“Message”为“successfully synced”说明同步成功。但是“Sync Status”还是“OutOfSync from HEAD”,并且Route资源的STATUS是“OutOfSync”,而且在最后显示“1 resources require pruning”,这是由于Route是我们手动生成的,而不是通过ArgoCD的Repo生成的。
$ 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://openshift-gitops-server-openshift-gitops.apps.cluster-394c.394c.sandbox1709.opentlc.com/applications/reverse-words-app
Repo:               http://github.com/liuxiaoyu-git/gitops-on-openshift.git
Target:             HEAD
Path:               simple-app/reversewords_app/
SyncWindow:         Sync Allowed
Sync Policy:        Automated
Sync Status:        OutOfSync from HEAD (36306dc)
Health Status:      Progressing
 
Operation:          Sync
Sync Revision:      36306dc264cea403e33b756de6faf95f605fee5d
Phase:              Succeeded
Start:              2021-10-02 07:34:24 +0000 UTC
Finished:           2021-10-02 07:34:27 +0000 UTC
Duration:           3s
Message:            successfully synced (all tasks run)
 
GROUP               KIND        NAMESPACE      NAME           STATUS     HEALTH       HOOK  MESSAGE
route.openshift.io  Route       reverse-words  reverse-words  OutOfSync                     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
FATA[0002] 1 resources require pruning
  1. 持续查看reverse-words的Deployment状态变化,最后变为READY状态。
$ 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
  1. 再次访问reverse-words应用的路由,确认又可以正常访问应用了。
$ curl -X POST http://$(oc get route reverse-words -n reverse-words -o jsonpath='{.spec.host}') -d '{"word":"PALC"}'
{"reverse_word":"CLAP"}

说明:最后使用“argocd app list”查看Argo的应用Status,确认还是OutOfSync的。这是由于Route对象是我们在OpenShift手动创建的,在Github中没有。只要部署目标和Git Repo之间存在差异,Argo就认为是OutOfSync的。
另外,还可使用以下带有“self-heal”参数的命令同步ArgoCD应用。

$ argocd app sync reverse-words-app --self-heal

用ArgoCD删除应用配置

  1. 此时进到ArgoCD的控制台,在Application中进入reverse-words-ap,确认是“OutOfSync”状态。其中是名为“reverse-words”的Route是黄色非同步状态,这是由于这个对象是我们在OpenShift中直接创建的,而不是根据Github的配置创建的。
    在这里插入图片描述
  2. 点击上图中红框中名为“reverse-words”的Route的右侧图标,然后选择Delete,然后确认是Force
    Delete。删除后,ArgoCD的reverse-words-app应用又恢复了“Synced”状态了。
    在这里插入图片描述
  3. 然后执行以下命令,确认OpenShift的名为“reverse-words”的Route对象已经被删除了。
$ oc get route -n reverse-words 
No resources found in reverse-words namespace.

参考

https://redhat-scholars.github.io/summit-2023-gitops-lab-guide/summit-2023-gitops-workshop-guide

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值