如何向K8s,Docker-Compose注入镜像Tag
最近在做基于容器的CI/CD, 一個(gè)樸素的自動(dòng)部署的思路是:
從Git Repo打出git tag,作為鏡像Tag
ssh遠(yuǎn)程登錄到部署機(jī)器
向部署環(huán)境注入鏡像Tag,拉取鏡像,重新部署
下面分享我是如何在K8s、docker-compose中注入鏡像Tag?
k8s
熟悉k8s的同學(xué)知道, K8s有一個(gè)強(qiáng)大的原生配置管理工具:Kustomize。
Kustomize 以一種無模板的方式來定制應(yīng)用程序配置,從而簡化了現(xiàn)有應(yīng)用程序的使用。現(xiàn)在kustomize已經(jīng)以apply -k的方式內(nèi)置進(jìn)kubectl。
這里利用Kustomize的edit命令修改定義在Kustomization.yaml中的鏡像Tag:
下面是一個(gè)簡單的Kustomization.yaml文件:
kind:?Kustomization namespace:?wd resources: -?../base images: -?name:?hub.docker.com/eap/website??//原鏡像名newName:?hub.docker.com/eap/websitenewTag:?v1.0.7-hotfix5?????//?持續(xù)被修改的Tag做自動(dòng)部署時(shí),一般由CI給部署腳本導(dǎo)入此次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?-以上部署腳本: 進(jìn)入Kustomization.yaml目錄,向Kustomization.yaml文件注入新的鏡像Tag,構(gòu)建并應(yīng)用新的配置。
docker-compose
Docker平臺就沒有那么好的工具,明文讓你修改鏡像配置。
我們采用shell腳本來曲線修改鏡像配置:
假如你有一個(gè)簡單的docker-compose.yml文件:
version:?'3'services:app:image:?username/app:d7s8f12ports:-?80:80通過shell腳本修改`app:` 字符串后面的鏡像Tag,達(dá)到注入Tag的目的。
sed -E -i'' "s/(.*app:).*/\1$COMMIT/" 'docker-compose.yml'
同樣,自動(dòng)部署時(shí)由CI給部署腳本導(dǎo)入此次Git Tag (鏡像Tag)。
#!/bin/shcd??/home/wd-deploy/app/ sed?-E?-i''?"s/(.*app:).*/\1$COMMIT/"?'docker-compose.yml' docker-compose?pull?app ?&&?docker-compose??up?-d以上部署腳本: 進(jìn)入docker-compose.yml目錄,向Compose文件注入新的鏡像Tag,拉取鏡像并應(yīng)用新的配置。
結(jié)束語
本文分享了向K8s, Docker-Compose平臺注入鏡像Tag的姿勢。
?為啥要專題講這個(gè)呢?因?yàn)樽⑷隩ag是自動(dòng)部署的必經(jīng)過程。
本文只是一個(gè)粗淺的、樸素的注入思路(Devops生態(tài)有許多組件可以完成該項(xiàng)動(dòng)作), 歡迎大家多多留言,帶我上路。
更多干貨及最佳實(shí)踐分享
關(guān)注并星標(biāo)我們~。。~
總結(jié)
以上是生活随笔為你收集整理的如何向K8s,Docker-Compose注入镜像Tag的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何在 .Net Core 中使用 IH
- 下一篇: EntityFramework Core