OpenShift(02) Kustomize使用
kustomize
上一节我们通过资源清单来创建资源
实际工作中,在使用 Kubernetes 时,多个团队会使用开发、暂存、测试和生产等多个环境来部署应用。这些环境在配置上也许有细微差异。如果要给每个环境都创建一个资源清单,那会很麻烦。kustomize 就可以解决这个问题。
kustomize 是一个开源的配置管理工具,可以对应用配置和组件进行声明式更改,并保留原始的基础 YAML 文件.我们可以把资源对象的清单文件放在一个目录中,然后用 kustomize 复制这些文件并做修改。
kubectl 和 oc 命令已经集成了 kustomize 命令
kustomize 目录结构
kustomize 的结构如下所示:

在图中我们可以看到 base 和 overlay 两部分
base 是我们的基础配置文件,理解为默认,模板都可以。
overlay 是我们以 base 为基础,二次修改的。
在 overlay 目录下,又有我们根据不同环境创建的目录。这就是大概的目录结构
Base (基础)
基础⽬录中包含⽤于创建配置映射、部署、服务、机密和路由资源的 YAML ⽂件。他们都是通用的资源,可以用它创建的是默认的资源对象。
base 目录的基本结构
1 | base |
base 下 kustomization.yaml 文件
在 base 基础目录中,有 kustomization.yaml 文件。这个文件很重要,在resources 字段中记录了所有资源⽂件。
1 | apiVersion: kustomize.config.k8s.io/v1beta1 # 版本 |
overlay (覆盖)
首先要说明的是 kustomize 覆盖声明式 YAML 或补丁,不会修改原始文件。理解成更优先得得配置从而覆盖了基础(base) 得配置。这里把覆盖理解为拓展吧。
overlay 目录也包含一个 kustomization.yaml 文件。overlay 可以创建一个或多个目录作为拓展配置目录。多个拓展可以使用同一个基础目录。
overlay 目录示例
1 | [user@host frontend-app]$ tree |
overlays/development ⽬录中的 kustomization.yaml ⽂件:
1 | apiVersion: kustomize.config.k8s.io/v1beta1 |
上面的配置文件表示,development 这个项目用 base (../../base 这个路径就是指向了 base ⽬录) 作为基础目录,在 dev-env 这个命名空间下创建资源。
Kustomize 提供了相应的字段,⽤于为 kustomization ⽂件中的所有资源设置值:
| 字段 | 描述 |
|---|---|
| namespace | 为所有资源设置特定的命名空间。 |
| namePrefix | 为所有资源的名称添加前缀。 |
| nameSuffix | 为所有资源的名称添加后缀。 |
| commonLabels | 为所有资源和选择器添加标签。 |
| commonannotations | 为所有资源和选择器添加注释。 |
overlay 覆盖的内容
patches 是一个列表
base 目录
kustomization.yaml 文件
overerlay 目录
kustomization.yaml 文件
op 表示操作 operation
target 改谁
多个 overlay 目录可以基于同一个 base 目录
用 kubectl apply -k 命令来更新kustomize 配置
删除资源 oc delete kustomize kustomization目录
生成器
2 个字段
