mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-20 22:15:00 +00:00
272 lines
8.5 KiB
Markdown
272 lines
8.5 KiB
Markdown
# Kustomization 文件字段
|
||
|
||
[field-name-namespace]: plugins-builtins.md#字段名称namespace
|
||
[field-name-images]: plugins-builtins.md#字段名称images
|
||
[field-names-namePrefix-nameSuffix]: plugins-builtins.md#字段名称namePrefix-nameSuffix
|
||
[field-name-patches]: plugins-builtins.md#字段名称patches
|
||
[field-name-patchesStrategicMerge]: plugins-builtins.md#字段名称patchesStrategicMerge
|
||
[field-name-patchesJson6902]: plugins-builtins.md#字段名称patchesJson6902
|
||
[field-name-replicas]: plugins-builtins.md#字段名称replicas
|
||
[field-name-secretGenerator]: plugins-builtins.md#字段名称secretGenerator
|
||
[field-name-commonLabels]: plugins-builtins.md#字段名称commonLabels
|
||
[field-name-commonAnnotations]: plugins-builtins.md#字段名称commonAnnotations
|
||
[field-name-configMapGenerator]: plugins-builtins.md#字段名称configMapGenerator
|
||
|
||
介绍 [kustomization.yaml](glossary.md#kustomization) 配置文件中各字段的含义。
|
||
|
||
## Resources
|
||
|
||
现有可定制对象。
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
|[resources](#resources) | list | 包含 k8s API 对象的文件,或其他包含 `kustomization.yaml` 文件的目录。 |
|
||
|[CRDs](#crds)| list | CDR 文件,允许在资源列表中指定自定义资源。 |
|
||
|
||
## Generators
|
||
|
||
资源生成器。
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
|[configMapGenerator](#configmapgenerator)| list | 列表中的每个条目都将生成一个 ConfigMap (合计可以生成 n 个 ConfigMap)。 |
|
||
|[secretGenerator](#secretgenerator)| list | 列表中的每个条目都将生成一个 Secret(合计可以生成 n 个 Secrets)。 |
|
||
|[generatorOptions](#generatoroptions)| string | generatorOptions 可以修改所有 ConfigMapGenerator 和 SecretGenerator 的行为。 |
|
||
|[generators](#generators)| list | [插件](plugins.md)配置文件。 |
|
||
|
||
## Transformers
|
||
|
||
资源字段转换项。
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
| [commonLabels](#commonlabels) | string | 为所有资源和 selectors 增加 Labels 。 |
|
||
| [commonAnnotations](#commonannotations) | string | 为所有资源增加 Annotations 。 |
|
||
| [images](#images) | list | 无需使用 patches,即可修改镜像的名称、tag 或 image digest。 |
|
||
| [inventory](#inventory) | struct | 用于生成一个包含清单信息的对象。 |
|
||
| [namespace](#namespace) | string | 为所有 resources 添加 namespace 。 |
|
||
| [namePrefix](#nameprefix) | string | 为所有资源的名称添加前缀。 |
|
||
| [nameSuffix](#namesuffix) | string | 为所有资源的名称添加后缀。 |
|
||
| [replicas](#replicas) | list | 修改资源的副本数。 |
|
||
| [patchesStrategicMerge](#patchesstrategicmerge) | list | 此列表中的每个条目都应可以解析为部分或完整的资源定义文件。 |
|
||
| [patchesJson6902](#patchesjson6902) | list | 列表中的每个条目都应可以解析为 Kubernetes 对象和将应用于该对象的 JSON patch 。 |
|
||
| [transformers](#transformers) | list | [插件](plugins.md)配置文件。 |
|
||
|
||
## Meta
|
||
|
||
[k8s metadata]: https://kubernetes.io/docs/concepts/overview/working-with-objects/kubernetes-objects/#required-fields
|
||
|
||
| 字段 | 类型 | 说明 |
|
||
| --- | --- | --- |
|
||
| [vars](#vars) | string | 将一个对象中的字段值插入另一个对象中。 |
|
||
| [apiVersion](#apiversion) | string | [k8s metadata] 字段。 |
|
||
| [kind](#kind) | string | [k8s metadata] 字段。 |
|
||
|
||
----
|
||
|
||
### apiVersion
|
||
|
||
该字段默认值为:
|
||
```
|
||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||
```
|
||
|
||
### bases
|
||
|
||
`bases` 字段在 v2.1.0 中已被弃用。
|
||
|
||
该条目已被移动到 [resources](#resources) 字段中。
|
||
|
||
### commonLabels
|
||
|
||
详见 [field-name-commonLabels]。
|
||
|
||
### commonAnnotations
|
||
|
||
详见 [field-name-commonAnnotations].
|
||
|
||
### configMapGenerator
|
||
|
||
详见 [field-name-configMapGenerator].
|
||
|
||
### crds
|
||
|
||
此列表中的每个条目都应该是自定义资源定义(CRD)文件的相对路径。
|
||
|
||
该字段的存在是为了让 kustomize 识别用户自定义的 CRD ,并对这些类型中的对象应用适当的转换。
|
||
|
||
典型用例:CRD 引用 ConfigMap 对象
|
||
|
||
在 kustomization 中,ConfigMap 对象名称可能会通过 `namePrefix` 、`nameSuffix` 或 `hashing` 来更改 CRD 对象中该 ConfigMap 对象的名称,
|
||
引用时需要以相同的方式使用 `namePrefix` 、 `nameSuffix` 或 `hashing` 来进行更新。
|
||
|
||
Annotations 可以放入 openAPI 的定义中:
|
||
|
||
- "x-kubernetes-annotation": ""
|
||
- "x-kubernetes-label-selector": ""
|
||
- "x-kubernetes-identity": ""
|
||
- "x-kubernetes-object-ref-api-version": "v1",
|
||
- "x-kubernetes-object-ref-kind": "Secret",
|
||
- "x-kubernetes-object-ref-name-key": "name",
|
||
|
||
```
|
||
|
||
crds:
|
||
- crds/typeA.yaml
|
||
- crds/typeB.yaml
|
||
```
|
||
|
||
|
||
### generatorOptions
|
||
|
||
generatorOptions 可以修改所有 [ConfigMapGenerator](#configmapgenerator) 和 [SecretGenerator](#secretgenerator) 的行为。
|
||
|
||
```
|
||
generatorOptions:
|
||
# 为所有生成的资源添加 labels
|
||
labels:
|
||
kustomize.generated.resources: somevalue
|
||
# 为所有生成的资源添加 annotations
|
||
annotations:
|
||
kustomize.generated.resource: somevalue
|
||
# disableNameSuffixHash 为 true 时将禁止默认的在名称后添加哈希值后缀的行为
|
||
disableNameSuffixHash: true
|
||
```
|
||
|
||
### generators
|
||
|
||
[插件](plugins.md)生成器配置文件列表。
|
||
|
||
```
|
||
generators:
|
||
- mySecretGeneratorPlugin.yaml
|
||
- myAppGeneratorPlugin.yaml
|
||
```
|
||
|
||
### images
|
||
|
||
详见 [field-name-images]。
|
||
|
||
### inventory
|
||
|
||
详见 [inventory object](../inventory_object.md)。
|
||
|
||
### kind
|
||
|
||
该字段默认值为:
|
||
|
||
```
|
||
kind: Kustomization
|
||
```
|
||
|
||
|
||
### namespace
|
||
|
||
详见 [field-name-namespace]。
|
||
|
||
### namePrefix
|
||
|
||
详见 [field-names-namePrefix-nameSuffix]。
|
||
|
||
### nameSuffix
|
||
|
||
详见 [field-names-namePrefix-nameSuffix]。
|
||
|
||
### patches
|
||
|
||
详见 [field-name-patches]。
|
||
|
||
### patchesStrategicMerge
|
||
|
||
详见 [field-name-patchesStrategicMerge]。
|
||
|
||
### patchesJson6902
|
||
|
||
详见 [field-name-patchesJson6902]。
|
||
|
||
### replicas
|
||
|
||
详见 [field-name-replicas]。
|
||
|
||
### resources
|
||
|
||
该条目可以是指向本地目录的相对路径,也可以是指向远程仓库中的目录的 URL,例如:
|
||
|
||
```
|
||
resource:
|
||
- myNamespace.yaml
|
||
- sub-dir/some-deployment.yaml
|
||
- ../../commonbase
|
||
- github.com/kubernetes-sigs/kustomize//examples/multibases?ref=v1.0.6
|
||
- deployment.yaml
|
||
- github.com/kubernets-sigs/kustomize//examples/helloWorld?ref=test-branch
|
||
```
|
||
|
||
将以深度优先的顺序读取和处理资源。
|
||
|
||
文件应包含 YAML 格式的 k8s 资源。一个资源描述文件可以含有多个由(`---`)分隔的资源。
|
||
应该包含 `resources` 字段的 kustomization 文件的指定文件目录的相对路径。
|
||
|
||
[hashicorp URL]: https://github.com/hashicorp/go-getter#url-format
|
||
|
||
目录规范可以是相对、绝对或部分的 URL。URL 规范应遵循 [hashicorp URL] 格式。该目录必须包含 `kustomization.yaml` 文件。
|
||
|
||
### secretGenerator
|
||
|
||
详见 [field-name-secretGenerator]。
|
||
|
||
### vars
|
||
|
||
Vars 用于从一个 resource 字段中获取值,并将该值插入指定位置 - 反射功能。
|
||
|
||
例如,假设需要在容器的 command 中指定了 Service 对象的名称,并在容器的 env 中指定了 Secret 对象的名称来确保以下内容可以正常工作:
|
||
|
||
```
|
||
containers:
|
||
- image: myimage
|
||
command: ["start", "--host", "$(MY_SERVICE_NAME)"]
|
||
env:
|
||
- name: SECRET_TOKEN
|
||
value: $(SOME_SECRET_NAME)
|
||
```
|
||
|
||
则可以在 `vars:` 中添加如下内容:
|
||
|
||
```
|
||
vars:
|
||
- name: SOME_SECRET_NAME
|
||
objref:
|
||
kind: Secret
|
||
name: my-secret
|
||
apiVersion: v1
|
||
- name: MY_SERVICE_NAME
|
||
objref:
|
||
kind: Service
|
||
name: my-service
|
||
apiVersion: v1
|
||
fieldref:
|
||
fieldpath: metadata.name
|
||
- name: ANOTHER_DEPLOYMENTS_POD_RESTART_POLICY
|
||
objref:
|
||
kind: Deployment
|
||
name: my-deployment
|
||
apiVersion: apps/v1
|
||
fieldref:
|
||
fieldpath: spec.template.spec.restartPolicy
|
||
```
|
||
var 是包含该对象的变量名、对象引用和字段引用的元组。
|
||
|
||
字段引用是可选的,默认为 `metadata.name`,这是正常的默认值,因为 kustomize 用于生成或修改 resources 的名称。
|
||
|
||
在撰写本文档时,仅支持字符串类型字段,不支持 ints,bools,arrays 等。例如,在某些pod模板的容器编号2中提取镜像的名称是不可能的。
|
||
|
||
变量引用,即字符串 '$(FOO)' ,只能放在 kustomize 配置指定的特定对象的特定字段中。
|
||
|
||
关于 vars 的默认配置数据可以查看:
|
||
[/api/konfig/builtinpluginconsts/varreference.go](/api/konfig/builtinpluginconsts/varreference.go)
|
||
|
||
默认目标是所有容器 command args 和 env 字段。
|
||
|
||
Vars _不应该_ 被用于 kustomize 已经处理过的配置中插入 names 。
|
||
例如, Deployment 可以通过 name 引用 ConfigMap ,如果 kustomize 更改 ConfigMap 的名称,则知道更改 Deployment 中的引用的 name 。
|