1. 程式人生 > >如何在K8s,Docker-Compose注入映象Tag

如何在K8s,Docker-Compose注入映象Tag

最近在做基於容器的CI/CD, 一個樸素的自動部署的思路是: - 從Git Repo打出git tag,作為映象Tag - ssh遠端登入到部署機器 - 向部署環境注入映象Tag,拉取映象,重新部署 下面分享我是如何**在K8s、docker-compose中注入映象TAG**(持續部署)? ### k8s 熟悉k8s的同學知道, K8s有一個強大的原生配置管理工具:`Kustomize`工具。 > Kustomize 以一種無模板的方式來定製應用程式配置,從而簡化了現有應用程式的使用。現在kustomize已經以`apply -k`的方式內建進kubectl。 這裡可以利用Kustomize的`edit`命令修改定義在`Kustomization.yaml`中的映象TAG: ![](https://img2020.cnblogs.com/blog/587720/202101/587720-20210123162424552-1593972380.png) 下面是一個簡單的Kustomization.yaml檔案: ``` kind: Kustomization namespace: wd resources: - ../base images: - name: hub.docker.com/eap/website //原映象名 newName: hub.docker.com/eap/website newTag: v1.0.7-hotfix5 // 持續被修改的Tag ``` 做自動部署時,一般由CI給部署指令碼匯入此次Git Tag,作為映象Tag。 ``` #!/bin/sh cd /home/wd-deploy/localdeploy/wd/overlays/ kustomize edit set image hub.docker.com/eap/website=hub.docker.com/eap/website:${TAG} kustomize build . | kubectl apply -f - ``` 以上部署指令碼: 進入Kustomization.yaml目錄,向Kustomization.yaml檔案注入新的映象Tag,構建並應用新的配置。 ### docker-compose Docker平臺就沒有那麼好的工具,可明文讓你修改映象配置。 我們可採用`shell指令碼`來曲線修改映象配置: 假如你有一個簡單的docker-compose.yml檔案: ``` version: '3' services: app: image: username/app:d7s8f12 ports: - 80:80 ``` 通過shell指令碼修改字串app:後面的映象Tag,達到注入Tag的目的 ` sed -E -i'' "s/(.*app:).*/\1$COMMIT/" 'docker-compose.yml' ` 同樣,在做自動部署時,由CI給以上指令碼匯入此次Git Tag,作為映象Tag。 ``` #!/bin/sh cd /home/wd-deploy/app/ sed -E -i'' "s/(.*app:).*/\1$COMMIT/" 'docker-compose.yml' docker-compose pull app && docker-compose up -d ``` 以上部署指令碼: 進入docker-compose.yml目錄,向Compose檔案注入新的映象Tag,拉取映象並應用新的配置。 #### 結束語 本文記錄了向K8s, Docker-Compose平臺注入映象Tag的方式, 為啥要專題講這個呢? 因為注入Tag是自動部署的必經過程。 本文只是一個粗淺的、樸素的注入思路(Devops生態有許多元件可以完成該項動作), 也歡迎大家多多留言,帶我