K8s-kustomize

背景

K8s为 减少维护很多YAML文件,选择定义K8s资源,从1.14开始,kustomize默认提供

kustomize提供以下管理各种配置文件:

  • 从其他文件来源生成K8s资源对象
  • 统一为所有资源设置命名空间、Label、注解或者特殊格式的名称
  • 组合不同的资源作为一个应用或者一个管理单元进行整体注解

概述

kustomize核心配置是kustomizeation.yaml,这个文件类似于一个一个模版文件,里面定义了相应的操作指令,主要操作指令以及作用如下:

  • namespace:为所有资源都添加命名空间

  • namePrefix:要添加到所有资源名称之前的前缀

  • nameSuffix:要添加到所有资源名称之后的后缀

  • commonLabels:要添加到所有资源和选择器中的Label

  • commonAnnoations:要添加到所有资源的注解

  • resources:列表中的每个条目都会生成资源配置

  • configMapGenerator:针对列表中的每个条目都会生成一个ConfigMap

  • secrertGenerator:列表中的每个条目都会生成一个Secret

  • generatorOptions:所有ConfigMap和Secret生成器的选项

  • bases:列表中每个条目都会被解析为一个包含kubstomization.yaml文件的目录

  • vars:每个条目都会从资源的某个字段获取到文本

  • patchesJson6902:列表中的每个条目都会被解析成一个K8s对象和一个JSON不定

  • images:每个条目都会用于修改镜像的名称、tag、摘要等信息

  • configurations:列表中的每个条目都会被解析成一个包含kustomize转换器的配置文件

  • crds:列表中的每个条目都会被解析成OpenAPI格式的CRD对象

Example