ArgoCD在后台利用Kustomize处理跨环境的配置覆盖。也就说说,我们可以将repo不同分支的代码,部署到不同的环境,例如一个pre、一个prod


在本文中,Git存储库有两个分支,pre分支具有用于生产前环境的清单,而pro则用于生产环境。


我们查看pre分支的内容(base内容一样,overlays有区别):

https://github.com/mvazquezc/gitops-demo/tree/pre/reversewords_app/overlays/pre


gitops-demo/reversewords_app/overlays/pre/kustomization.yaml

bases:  - ../../base  patchesStrategicMerge:  - deployment.yaml


gitops-demo/reversewords_app/overlays/pre/deployment.yaml

我们可以看到下面的value: "Preproduction release" 环境变量:

apiVersion: apps/v1  kind: Deployment  metadata:  name: reverse-words  labels:  app: reverse-words  spec:  template:  spec:  containers:  - name: reverse-words  env:  - name: RELEASE  value: "Preproduction release"  - $patch: replace


按照同样的逻辑,查看pro分支:

https://github.com/mvazquezc/gitops-demo/tree/pro/reversewords_app/overlays/pro


gitops-demo/reversewords_app/overlays/pro/kustomization.yaml

bases:  - ../../base  patchesStrategicMerge:  - deployment.yaml



gitops-demo/reversewords_app/overlays/pro/deployment.yaml

apiVersion: apps/v1  kind: Deployment  metadata:  name: reverse-words  labels:  app: reverse-words  spec:  template:  spec:  containers:  - name: reverse-words  env:  - name: RELEASE  value: "Production release"  - $patch: replace

根据不同的分支,在不同的OCP集群上部署应用,注意我们设置了-sync-policy automated。

[root@bastion ~]# argocd app create --project default --name pre-kustomize-reversewords --repo https://github.com/davidsajare/gitops-demo.git --path reversewords_app/overlays/pre --dest-server https://console-openshift-console.apps.ocp.ats.com:6443 --dest-namespace reverse-words --revision pre --sync-policy automatedapplication 'pre-kustomize-reversewords' created


[root@bastion ~]#  argocd app create --project default --name pro-kustomize-reversewords --repo https://github.com/davidsajare/gitops-demo.git --path reversewords_app/overlays/pro --dest-server https://console-openshift-console.apps.ocp46.ats.com:6443 --dest-namespace reverse-words --revision pro --sync-policy automatedapplication 'pro-kustomize-reversewords' created


查看应用状态:

[root@bastion ~]# argocd app get pre-kustomize-reversewords

ArgoCD触发应用自动部署-第二篇_java

#argocd app get pro-kustomize-reversewords

ArgoCD触发应用自动部署-第二篇_java_02

浏览器访问应用:


ArgoCD触发应用自动部署-第二篇_java_03


ArgoCD触发应用自动部署-第二篇_java_04

接下来,修改gitops-demo/reversewords_app/overlays/pro/deployment.yaml,增加image: quay.io/mavazque/reversewords:v0.0.3

apiVersion: apps/v1kind: Deploymentmetadata:name: reverse-wordslabels:app: reverse-wordsspec:template:spec:containers:- name: reverse-wordsimage: quay.io/mavazque/reversewords:v0.0.3env:- name: RELEASEvalue: "Production release"- $patch: replace


删除并重新部署pro-kustomize-reversewords

#argocd app delete pro-kustomize-reversewords#argocd app create --project default --name pro-kustomize-reversewords --repo https://github.com/davidsajare/gitops-demo.git --path reversewords_app/overlays/pro --dest-server https://console-openshift-console.apps.ocp46.ats.com:6443 --dest-namespace reverse-words --revision pro --sync-policy automated

应用部署成功后,查看版本信息已经发生变化:


ArgoCD触发应用自动部署-第二篇_java_05

修改gitops-demo/reversewords_app/overlays/pro/deployment.yaml,将版本改为v0.0.4:

ArgoCD触发应用自动部署-第二篇_java_06

提交代码:

ArgoCD触发应用自动部署-第二篇_java_07

此时登录ArgoCD,repo代码变更被发现,然后代码会自动同步,自动重新部署应用:

ArgoCD触发应用自动部署-第二篇_java_08


ArgoCD触发应用自动部署-第二篇_java_09

浏览器访问应用,版本信息已经发生变化。

ArgoCD触发应用自动部署-第二篇_java_10