Kustomize
Kustomize
kustomize介绍
模板化,方便管理多个kubernets的配置文件,并且通过patch更新,类似make和sed
了解这个需要过一遍官方文档和视频
kustomize较helm比较大的优势是已经植入到了kubectl apply里面,只需要加-k 参数就可以完成kustomize的效果
安装
https://kubectl.docs.kubernetes.io/installation/kustomize/binaries/
|
|
使用
准备hello world
假设部署一个hello word
|
|
备注下 如果你docker拉不下来就是百度或者google下2024年11月可用docker镜
像加速站点,然后选一个放到你的 /etc/docker/daemon.json
,类似这样,然后
systemctl restart docker
,再 docker info|grep -i mirror -C3
看看
registry,比如这个是我找的
|
|
这个时候标记下版本
|
|
创建下deployment
|
|
测试kustomize简单使用
经过上面操作,我们已经有个service.yaml和deployments.yaml了 参考 https://kubectl.docs.kubernetes.io/guides/introduction/kustomize/
https://www.qikqiak.com/post/kustomize-101/
https://kubernetes.io/zh-cn/docs/tasks/manage-kubernetes-objects/kustomization/
初步使用
需要编写下kustomization.yaml
|
|
然后就可以kubectl apply -k的方式来更新kustomization
可以看到最基础的kustomize是把所有的文件拼接起来,这个我们可以通过
kustomize build
看出来
|
|
在实际使用中,我们可能有自定义的需求 一般来说,我们会放基础的部分,也会放一些环境的部分,这个用过terraform 应 该了解,类似ansible的层层变量也比较类似
这里稍微调整了下,就可以支持多个环境了,只是里面的东西都是写死的
目录结构和使用
首先看看kustomization.yaml
|
|
这样就复用了老的yaml 所以base里面的相当于是模板
引入变量
在原来的deployments继续修改一个能标记到的资源,然后添加一个环境变量
|
|
这个时候的kustomization.yaml内容
|
|
我们通过patches引入一个patch,告诉在base的基础上面刚刚的diff,也就是增加 一个环境变量,所以类似拼接,我们也可以拼接类似image等,在base不写就好 了,在patch里面引入
这个时候继续build发现
|
|
特性列表
其实官网里面已经说了,Kustomize可以有这些特性,这些特性有的是小工具, 有的是和模板相关的,比如namespace,里面的所有资源都是这个namespace,这 样就不用定义一个namespace变量了
字段 类型 解释 namespace string 为所有资源添加名字空间 namePrefix string 此字段的值将被添加到所有资源名称前面 nameSuffix string 此字段的值将被添加到所有资源名称后面 commonLabels map[string]string 要添加到所有资源和选择算符的标签 commonAnnotations map[string]string 要添加到所有资源的注解 resources []string 列表中的每个条目都必须能够解析为现有的资源配置文件 configMapGenerator []ConfigMapArgs 列表中的每个条目都会生成一个 ConfigMap secretGenerator []SecretArgs 列表中的每个条目都会生成一个 Secret generatorOptions GeneratorOptions 更改所有 ConfigMap 和 Secret 生成器的行为 bases []string 列表中每个条目都应能解析为一个包含 kustomization.yaml 文件的目录 patchesStrategicMerge []string 列表中每个条目都能解析为某 Kubernetes 对象的策略性合并补丁 patchesJson6902 []Patch 列表中每个条目都能解析为一个 Kubernetes 对象和一个 JSON 补丁 vars []Var 每个条目用来从某资源的字段来析取文字 images []Image 每个条目都用来更改镜像的名称、标记与/或摘要,不必生成补丁 configurations []string 列表中每个条目都应能解析为一个包含 Kustomize 转换器配置 的文件 crds []string 列表中每个条目都应能够解析为 Kubernetes 类别的 OpenAPI 定义文件
官方的examples
https://github.com/kubernetes-sigs/kustomize/blob/master/examples/zh/README.md
示例:早餐配置
https://github.com/kubernetes-sigs/kustomize/blob/master/examples/zh/breakfast.md
|
|
现在尝试为alice和bob生成早餐
|
|
这里提示commonLabels过期了,那我们执行下kustomize edit fix看看
|
|
再次build,可以发现kustomize模板化生成了一个k8s的资源清单,只需要传给 kubectl apply即可
|
|
build下bob的
|
|