kustomize 是 sig-cli 的一个子项目,它的设计目的是给 k8s 的用户提供一种可以重复使用配置的声明式应用管理,
从而在配置工作中用户只需要管理和维护 kubernetes 的原生API对象,而不需要使用复杂的模版。kustomize 的基本使用可以参见之前的一系列文章。
初体验
名称前缀
标注和注释
在 kubernetes 使用中,容器镜像的标签是需要经常更新的一个部分,而能够简单快速地更改容器镜像的标签也成了众多 Kustomize 用户迫切需要的一个功能。在 kustomize v1.0.5 中,这个功能终于实现了。在这篇文章中,我们通过一个>简单的 Pod 例子来学习使用这个 kustomize 的新功能。首先创建一个 kustomization,它包含了一个名为 pod.yaml 的资源。
DEMO_HOME=$(mktemp -d)
cat <<EOF >$DEMO_HOME/kustomization.yaml
resources:
- pod.yaml
EOF
该 pod.yaml 包含如下内容
cat <<EOF >$DEMO_HOME/pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
labels:
app: myapp
spec:
containers:
- name: myapp-container
image: busybox:1.29.0
command: ['sh', '-c', 'echo The app is running! && sleep 3600']
initContainers:
- name: init-mydb
image: busybox:1.29.0
command: ['sh', '-c', 'until nslookup mydb; do echo waiting for mydb; sleep 2; done;']
EOF
可以看到,该 pod.yaml 定义了一个名字 myapp-pod
的 Pod,这个 Pod 会运行两个容器,一个是 initContainers 当中的 init-mydb
, 一个是 containers 当中的 myapp-container
,这两个容器中运行的都是同一个镜像 busybox:1.29.0,不同之处在于运行时的参数。假如现在需要更新 busybox 的版本到 1.29.1,怎样改动当前的 kusomization 才>能实现这个更新呢?除了手动更改 pod.yaml 当中的标签之外,kustomize v1.0.5 还提供了一种快速更改镜像标签的方法。
通过如下命令
cd $DEMO_HOME
kustomize edit set imagetag busybox:1.29.1
为 kustomization.yaml
文件添加 imageTags
:
imageTags: - name: busybox newTag: 1.29.1
运行 kustomize build $DEMO_HOME
, 确认容器镜像的标签都改为了 1.29.1
.
test 2 == \
$(kustomize build $DEMO_HOME | grep busybox:1.29.1 | wc -l); \
echo $?
参考资料
[introducing-kustomize-template-free-configuration-customization-for-kubernetes](Introducing kustomize; Template-free Configuration Customization for Kubernetes - Kubernetes)
kustomize demo: change image tags
网友评论