Toggle navigation
首页
技术
骑行
羽毛球
资讯
联络我
登录
在k8s集群中实现镜像的版本管理和部署
2019-10-29
kubernetes
> 使用命令式对象管理k8s集群时,yaml文件无法使用变量等方式来设定image的tag。本文介绍如何结合ytt工具来实现k8s集群的image tag管理和部署 # 安装ytt工具 [ytt](https://get-ytt.io/) 是一个结构化的yaml模板工具,可以轻松的根据定义的模板生成目标yaml文件,在官网首页可以查看其用法。 以ubuntu为例,安装ytt工具: ```bash wget https://github.com/k14s/ytt/releases/download/v0.22.0/ytt-linux-amd64 chmod +x ytt-linux-amd64 sudo mv ytt-linux-amd64 /usr/local/bin/ytt ytt version ``` # ytt工具使用 管理image tag,会用到的ytt语法包含: * 3. Variable * 11. Load data values * 13. Text template * 17. Multiple data values * --data-value-yaml key=value 假设未使用ytt的yaml如下: ```yaml spec: containers: - image: http://local_registry/image_name:latest ``` 使用ytt工具后的yaml如下: ```yaml spec: containers: #@yaml/text-templated-strings - image: "(@= data.values.registry_url @)/image_name:(@= data.values.image_tag @)" ``` 额外需要用到的配置文件(values-stage.yaml)如下: ```yaml #@data/values #@overlay/match-child-defaults missing_ok=True --- registry_url: xxx:xxx ``` 多个环境均可以用到的配置可以设定在values-defaults.yaml中: ```yaml #@data/values --- image_tag: latest ``` 使用ytt的命令格式如下: ytt -f k8s/deploy.yaml -f k8s/values-defaults.yaml -f k8s/values-$env.yaml --data-value image_tag=$version | kubectl apply -f- 其中$env来控制环境(local, stage, production), version来控制镜像版本。 ## version的自动生成与增长 treeder/bump镜像可以帮助实现版本的自动增长,用法参考[treeder/bump](https://github.com/treeder/bump): 可以用如下脚本来实现version的自动生成与增长: ```bash #!/bin/bash set -e env="$1" versionFile=".VERSION" if [ -z "$env" ]; then env="stage" fi echo "deploy $env" if [ ! -f "$versionFile" ]; then echo "0.0.0" > "$versionFile" fi echo "bump version" docker run --rm -v "$PWD":/app treeder/bump --filename "$versionFile" version=`cat $versionFile` ```
×
本文为博主原创,如需转载,请注明出处:
http://www.supperxin.com
返回博客列表