K8S Kustomize

1.概述

官网:https://kustomize.io/
参考文档:https://kubectl.docs.kubernetes.io/guides/
Kustomize是一个开源的Kubernetes配置管理工具。
在Kubernetes上运行一个项目,可能存在多套运行环境:开发环境、测试环境、生产环境,多套环境可能需要编写多个存在微小差异的YAML配置文件,而这多套YAML文件只存在微小的配置差异(比如镜像、标签等),Kustomize允许将这些公共部分写入到基础配置文件(Base/xxx.yaml)中,将差异部分写入到对应不同运行环境需要覆盖的配置文件(Overlay/<项目目录>/xxx.yaml)中,以简化管理和编写配置文件。
Kustomize已内置Kubernetes中,可以使用"kubectl apply -k"命令指定配置目录。

1.1.Kustomize的组成和目录结构

~/someApp
├── base
│   ├── deployment.yaml
│   ├── kustomization.yaml
│   └── service.yaml
└── overlays
    ├── development
    │   ├── cpu_count.yaml
    │   ├── kustomization.yaml
    │   └── replica_count.yaml
    └── production
        ├── cpu_count.yaml
        ├── kustomization.yaml
        └── replica_count.yaml

Kustomize主要由Base、Overlay两个部分组成,分别对应Base、Overlay目录。

  • Base,基础配置文件存放目录。目录下应该存放kustmization配置文件+资源配置文件。
  • Overlays/<项目目录>,差异/要更新的配置文件存放目录,期望覆盖更新、增加、减少的资源对象。目录下应该存放kustmization配置文件+补丁配置文件+更多资源配置文件。

1.2.kustomization.yaml

在每个目录下都应存在一个kustomization.yaml,它是Kustomize的配置文件,用于描述和说明Base、Overlays目录下Kuernetes资源配置文件之间的关系,或者定义声明公共的资源配置部分。
kustomization.yaml有自己的语法,最基础的声明如下:
Base/kustomization.yaml:

commonLabels:
  app: hello
resources:
- deployment.yaml
- service.yaml

Overlays/development/kustomization.yaml:

bases:
- ../../base
patchesStrategicMerge:
- cpu_count.yaml
- replica_count.yaml

2.kustomization常用指令

Base/kustomization.yaml:

namePrefix: my-
resources:
- deployment.yaml
- service.yaml

commonLabels:
  kustomize: dome-nginx
commonAnnotations:
  kustomize/description: "This is an application managed by kustomize"

Overlays/production/kustomization.yaml:

bases:
- ../../base
patchesStrategicMerge:
- deployment.yaml

resources([])

指定要关联的资源配置文件列表。

bases([])

指定基础资源配置文件存放目录路径。

patchesStrategicMerge([])

指定要更新合并的资源配置文件列表。

namePrefix(string)

名称前缀,在每个资源对象的名称前面添加一个前缀。

commonLabels([])

标签,在每个资源对象上面增加一个标签。

commonAnnotations([])

注解,在每个资源对象上面增加一个注解。

posted @ 2022-05-23 18:42  RidingWind  阅读(232)  评论(0编辑  收藏  举报