最近在作基於容器的CI/CD, 一個樸素的自動部署的思路是:git
下面分享我是如何在K8s、docker-compose中注入鏡像TAG(持續部署)?web
熟悉k8s的同窗知道, K8s有一個強大的原生配置管理工具:Kustomize
工具。docker
Kustomize 以一種無模板的方式來定製應用程序配置,從而簡化了現有應用程序的使用。如今kustomize已經以
apply -k
的方式內置進kubectl。shell
這裏能夠利用Kustomize的edit
命令修改定義在Kustomization.yaml
中的鏡像TAG:
app
下面是一個簡單的Kustomization.yaml文件:ssh
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,構建並應用新的配置。ui
Docker平臺就沒有那麼好的工具,可明文讓你修改鏡像配置。spa
咱們可採用shell腳本
來曲線修改鏡像配置:code
假如你有一個簡單的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生態有許多組件能夠完成該項動做), 也歡迎你們多多留言,帶我上路。