Kustomization
Kustomization 概述
使用 Kustomize 对 Kubernetes 对象进行声明式管理 | Kubernetes
GitHub - kubernetes-sigs/kustomize:Kubernetes YAML 配置的定制
Kustomize的核心目标在于为管理的应用生成资源配置,而这些资源配置中定义了资源的期望状态,在具体实现上,它通过kustomization.yaml文件组合和(或)叠加多种不同的来源的资源配置来生成。
Kustomize将一个特定应用的配置保存于专用的目录中,且该目录中必须有一个名为kustomization.yaml的文件作为该应用的核心控制文件。由以下kustomization.yaml文件的格式说明可以大体看出,Kustomize可以直接组合由resources字段中指定资源文件作为最终配置,也可在它们的基础上进行额外的修订,例如添加通用标签和通用注解、为各个资源添加统一的名称前缀或名称后缀、改动Pod模板中的镜像文件及向容器传递变量等。
Kustomization Explain
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources <[]string> # 待定制的原始资源配置文件列表,将由kustomize按顺序处理
namespace <string> # 设定所有名称空间级别资源所属的目标名称空间
commonLabels <map[string]string> # 添加到所有资源的通用标签,包括Pod模板及相关的
# 相关的标签选择器
commonAnnotations <map[string]string> # 添加到所有资源的通用注解
namePrefix <string> # 统一给所有资源添加的名称前缀
nameSuffix <string> # 统一给所有资源添加的名称后缀
images <[]Image> # 将所有Pod模板中的符合name字段条件镜像文件修改为指定的镜像
- name <String> # 资源清单中原有的镜像名称,即待替换的镜像
nameName <String> # 要使用的新镜像名称
newTag <String> # 要使用的新镜像的标签
digest <String> # 要使用的新镜像的sha256校验码
vars <[]Var> # 指定可用于替换Pod容器参数中变量的值或容器环境变量的值
- name <String> # 变量的名称,支持以“$(name)”格式进行引用
objref <String> # 包含了要引用的目标字段的对象的名称
fieldref <String> # 引用的字段名称,默认为metadata.name
配置生成器:
configMapGenerator <[]ConfigMapGeneratorArgs> # ConfigMap资源生成器列表
- name <String> # ConfigMap资源的名称,会受到namePrefix和nameSuffix的影响
namespace <String> # 资源所在的名称空间,会覆盖kustomize级别的名称空间设定
behavior <String> # 与上级同名资源的合并策略,可用取值为create/replace/merge;
files <[]String> # 从指定的路径加载文件生成ConfigMap,要使用当前项目的相对路径
literals <[]String> # 从指定的“key=value”格式的直接值生成ConfigMap
env <String> # 从指定的环境变量文件中加载“key=value”格式的环境变量为资源数据
secretGenerator <[]secretGeneratorArgs> # Secret资源生成器列表
- name <String> # Secret资源的名称,会受到namePrefix和nameSuffix的影响
namespace <String> # 资源所在的名称空间,会覆盖kustomize级别的名称空间设定
behavior <String> # 与上级同名资源的合并策略,可用取值为create/replace/merge
files <[]String> # 从指定的路径加载文件生成Secret,起始于当前项目的相对路径
literals <[]String> # 从指定的“key=value”格式的直接值生成Secret
type <String> # Secret资源的类型,且“kubernetes.io/tls”有特殊的键名要求
generatorOptions <GeneratorOptions> # 当前kustomization.yaml中的ConfigMap
# 和Secret生成器专用的选项
labels <map[String]String> # 当前kustomization.yaml中所有生成资源添加的标签
annotations <map[String]String> # 为生成所有资源添加的注解
disableNameSuffixHash <Boolean> # 是否禁用hash名称后缀,默认为启用
资源补丁
patchesJson6902 <[]Json6902> # 由各待补对象及其补丁文件所组成的列表
path <String> # 补丁文件,不含有目标资源对象的信息,支持json或yaml格式
target <Target> # 待补资源对象
group <String> # 资源所属的群组
version <String> # API版本
kind <String> # 资源类型
name <String> # 资源对象的名称
namespace <string> # 资源对象所属的名称空间
patchesStrategicMerge <[]string> # 将补丁补到匹配的资源之上,匹配的方式是根据资源
# Group/Version/Kind + Name/Namespace判断