Files
kustomize/docs/zh/fields.md
2020-05-15 14:44:27 +08:00

272 lines
8.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 的名称。
在撰写本文档时,仅支持字符串类型字段,不支持 intsboolsarrays 等。例如在某些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 。