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 app get pro-kustomize-reversewords
浏览器访问应用:
接下来,修改gitops-demo/reversewords_app/overlays/pro/deployment.yaml,增加image: quay.io/mavazque/reversewords:v0.0.3
apiVersion: apps/v1
kind: Deployment
metadata:
name: reverse-words
labels:
app: reverse-words
spec:
template:
spec:
containers:
- name: reverse-words
image: quay.io/mavazque/reversewords:v0.0.3
env:
- name: RELEASE
value: "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
应用部署成功后,查看版本信息已经发生变化:
修改gitops-demo/reversewords_app/overlays/pro/deployment.yaml,将版本改为v0.0.4:
提交代码:
此时登录ArgoCD,repo代码变更被发现,然后代码会自动同步,自动重新部署应用:
浏览器访问应用,版本信息已经发生变化。