mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-11 17:12:51 +00:00
Merge pull request #1270 from sunny0826/master
Chinese localization & fix fields.md
This commit is contained in:
@@ -307,12 +307,14 @@ The content in this patch file can be either in JSON format as
|
|||||||
|
|
||||||
or in YAML format as
|
or in YAML format as
|
||||||
|
|
||||||
|
```
|
||||||
- op: add
|
- op: add
|
||||||
path: /some/new/path
|
path: /some/new/path
|
||||||
value: value
|
value: value
|
||||||
- op: replace
|
- op: replace
|
||||||
path: /some/existing/path
|
path: /some/existing/path
|
||||||
value: new value
|
value: new value
|
||||||
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
patchesJson6902:
|
patchesJson6902:
|
||||||
@@ -356,6 +358,7 @@ be modified at the same time.
|
|||||||
|
|
||||||
|
|
||||||
#### Limitation
|
#### Limitation
|
||||||
|
|
||||||
As this declaration does not take in a `kind:` nor a `group:`
|
As this declaration does not take in a `kind:` nor a `group:`
|
||||||
it will match any `group` and `kind` that has a matching name and
|
it will match any `group` and `kind` that has a matching name and
|
||||||
that is one of:
|
that is one of:
|
||||||
|
|||||||
@@ -8,8 +8,7 @@
|
|||||||
|
|
||||||
* [术语表](../glossary.md) - 用于消除术语歧义。
|
* [术语表](../glossary.md) - 用于消除术语歧义。
|
||||||
|
|
||||||
* [kustomization.yaml](kustomization.yaml) - 包含
|
* [Kustomize 字段](fields.md) - 介绍 [kustomization](../glossary.md#kustomization) 文件中各字段的含义。
|
||||||
[kustomization](../glossary.md#kustomization) 所有字段的示例文件。
|
|
||||||
|
|
||||||
* [插件](../plugins) - 使用自定义的资源生成器和资源转换器来拓展 kustomize 功能。
|
* [插件](../plugins) - 使用自定义的资源生成器和资源转换器来拓展 kustomize 功能。
|
||||||
|
|
||||||
@@ -20,6 +19,8 @@
|
|||||||
|
|
||||||
## 发行说明
|
## 发行说明
|
||||||
|
|
||||||
|
* [3.0](../v3.0.0.md) - 2019年6月下旬,插件开发者发布。
|
||||||
|
|
||||||
* [2.1](../v2.1.0.md) - 2019年6月18日
|
* [2.1](../v2.1.0.md) - 2019年6月18日
|
||||||
插件、有序资源等。
|
插件、有序资源等。
|
||||||
|
|
||||||
|
|||||||
436
docs/zh/fields.md
Normal file
436
docs/zh/fields.md
Normal file
@@ -0,0 +1,436 @@
|
|||||||
|
# Kustomization 文件字段
|
||||||
|
|
||||||
|
介绍 [kustomization](../glossary.md#kustomization) 文件中各字段的含义。
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
现有可定制对象。
|
||||||
|
|
||||||
|
| 字段 | 类型 | 说明 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
|[resources](#resources) | list | 包含 k8s API 对象的文件,或其他包含 kustomizations 文件的目录。 |
|
||||||
|
|[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)配置文件。 |
|
||||||
|
|
||||||
|
## Transformers
|
||||||
|
|
||||||
|
可用的转换。
|
||||||
|
|
||||||
|
| 字段 | 类型 | 说明 |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| [commonLabels](#commonlabels) | string | 为所有资源和 selectors 增加 Labels 。 |
|
||||||
|
| [commonAnnotations](#commonannotations) | string | 为所有资源增加 Annotations 。 |
|
||||||
|
| [images](#images) | list | 修改镜像的名称、tag 或 image digest ,而无需使用 patches 。 |
|
||||||
|
| [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)配置文件。 |
|
||||||
|
|
||||||
|
## 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
|
||||||
|
|
||||||
|
为所有资源和 selectors 增加 Labels
|
||||||
|
|
||||||
|
```
|
||||||
|
commonLabels:
|
||||||
|
someName: someValue
|
||||||
|
owner: alice
|
||||||
|
app: bingo
|
||||||
|
```
|
||||||
|
|
||||||
|
### commonAnnotations
|
||||||
|
|
||||||
|
为所有资源增加 Annotations ,和 labels 一样是 key:value 的键值对。
|
||||||
|
|
||||||
|
```
|
||||||
|
commonAnnotations:
|
||||||
|
oncallPager: 800-555-1212
|
||||||
|
```
|
||||||
|
|
||||||
|
### configMapGenerator
|
||||||
|
|
||||||
|
列表中的每个条目都将创建一个 ConfigMap (它是n个 ConfigMap 的生成器)。
|
||||||
|
|
||||||
|
下面的示例创建了两个 ConfigMaps:
|
||||||
|
|
||||||
|
- 一个具有给定文件的名称和内容
|
||||||
|
- 另一个包含 key/value 键值对数据
|
||||||
|
|
||||||
|
每个 configMapGenerator 项都可以使用 `behavior: [create|replace|merge]` 参数。
|
||||||
|
|
||||||
|
允许 overlay 从父级修改或替换现有的 configMap。
|
||||||
|
|
||||||
|
```
|
||||||
|
configMapGenerator:
|
||||||
|
- name: myJavaServerProps
|
||||||
|
files:
|
||||||
|
- application.properties
|
||||||
|
- more.properties
|
||||||
|
- name: myJavaServerEnvVars
|
||||||
|
literals:
|
||||||
|
- JAVA_HOME=/opt/java/jdk
|
||||||
|
- JAVA_TOOL_OPTIONS=-agentlib:hprof
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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)生成器配置文件列表。
|
||||||
|
|
||||||
|
```
|
||||||
|
generators:
|
||||||
|
- mySecretGeneratorPlugin.yaml
|
||||||
|
- myAppGeneratorPlugin.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
### images
|
||||||
|
|
||||||
|
修改镜像的名称、tag 或 image digest ,而无需使用 patches 。例如,对于这种 kubernetes Deployment 片段:
|
||||||
|
|
||||||
|
```
|
||||||
|
containers:
|
||||||
|
- name: mypostgresdb
|
||||||
|
image: postgres:8
|
||||||
|
- name: nginxapp
|
||||||
|
image: nginx:1.7.9
|
||||||
|
- name: myapp
|
||||||
|
image: my-demo-app:latest
|
||||||
|
- name: alpine-app
|
||||||
|
image: alpine:3.7
|
||||||
|
```
|
||||||
|
|
||||||
|
可以通过以下方式更改 `image` :
|
||||||
|
|
||||||
|
- `postgres:8` to `my-registry/my-postgres:v1`,
|
||||||
|
- nginx tag `1.7.9` to `1.8.0`,
|
||||||
|
- image name `my-demo-app` to `my-app`,
|
||||||
|
- alpine's tag `3.7` to a digest value
|
||||||
|
|
||||||
|
可以在 *kustomization* 中添加以下内容:
|
||||||
|
|
||||||
|
```
|
||||||
|
images:
|
||||||
|
- name: postgres
|
||||||
|
newName: my-registry/my-postgres
|
||||||
|
newTag: v1
|
||||||
|
- name: nginx
|
||||||
|
newTag: 1.8.0
|
||||||
|
- name: my-demo-app
|
||||||
|
newName: my-app
|
||||||
|
- name: alpine
|
||||||
|
digest: sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3
|
||||||
|
```
|
||||||
|
|
||||||
|
### inventory
|
||||||
|
|
||||||
|
详见 [inventory object](inventory_object.md)。
|
||||||
|
|
||||||
|
### kind
|
||||||
|
|
||||||
|
该字段默认值为:
|
||||||
|
|
||||||
|
```
|
||||||
|
kind: Kustomization
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### namespace
|
||||||
|
|
||||||
|
为所有 resources 添加 namespace 。
|
||||||
|
|
||||||
|
```
|
||||||
|
namespace: my-namespace
|
||||||
|
```
|
||||||
|
|
||||||
|
### namePrefix
|
||||||
|
|
||||||
|
该字段的值将添加在所有资源的名称之前,例如 将资源名称 `wordpress` 变为 `alices-wordpress` 。
|
||||||
|
|
||||||
|
```
|
||||||
|
namePrefix: alices-
|
||||||
|
```
|
||||||
|
|
||||||
|
### nameSuffix
|
||||||
|
|
||||||
|
该字段的值将添加在所有资源的名称后面,例如 将资源名称 `wordpress` 变为 `wordpress-v2` 。
|
||||||
|
|
||||||
|
如果资源类型为 ConfigMap 或 Secret ,则在哈希值之前附加后缀。
|
||||||
|
|
||||||
|
```
|
||||||
|
nameSuffix: -v2
|
||||||
|
```
|
||||||
|
|
||||||
|
### patchesStrategicMerge
|
||||||
|
|
||||||
|
此列表中的每个条目都应可以解析为部分或完整的资源定义文件。
|
||||||
|
|
||||||
|
这些(也可能是部分的)资源文件中的 name 必须与已经通过 `resources` 加载的 name 字段匹配,或者通过 `bases` 中的 name 字段匹配。这些条目将用于 _patch_(修改)已知资源。
|
||||||
|
|
||||||
|
推荐使用小的 patches,例如:修改内存的 request/limit,更改 ConfigMap 中的 env 变量等小的 patches 易于维护和查看,并且易于在 overlays 中混合使用。
|
||||||
|
|
||||||
|
```
|
||||||
|
patchesStrategicMerge:
|
||||||
|
- service_port_8888.yaml
|
||||||
|
- deployment_increase_replicas.yaml
|
||||||
|
- deployment_increase_memory.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
### patchesJson6902
|
||||||
|
|
||||||
|
patchesJson6902 列表中的每个条目都应可以解析为 kubernetes 对象和将应用于该对象的 JSON patch
|
||||||
|
|
||||||
|
JSON patch 的文档地址:https://tools.ietf.org/html/rfc6902
|
||||||
|
|
||||||
|
目标字段指向的 kubernetes 对象的 group、 version、 kind、 name 和 namespace 在同一 kustomization 内 path 字段内容是 JSON patch 文件的相对路径。
|
||||||
|
|
||||||
|
patch 文件中的内容可以如下这种 JSON 格式:
|
||||||
|
|
||||||
|
```
|
||||||
|
[
|
||||||
|
{"op": "add", "path": "/some/new/path", "value": "value"},
|
||||||
|
{"op": "replace", "path": "/some/existing/path", "value": "new value"}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
也可以使用 YAML 格式表示:
|
||||||
|
|
||||||
|
```
|
||||||
|
- op: add
|
||||||
|
path: /some/new/path
|
||||||
|
value: value
|
||||||
|
- op: replace
|
||||||
|
path: /some/existing/path
|
||||||
|
value: new value
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
patchesJson6902:
|
||||||
|
- target:
|
||||||
|
version: v1
|
||||||
|
kind: Deployment
|
||||||
|
name: my-deployment
|
||||||
|
path: add_init_container.yaml
|
||||||
|
- target:
|
||||||
|
version: v1
|
||||||
|
kind: Service
|
||||||
|
name: my-service
|
||||||
|
path: add_service_annotation.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
### replicas
|
||||||
|
|
||||||
|
修改资源的副本数。
|
||||||
|
|
||||||
|
例如:对于如下 kubernetes Deployment 片段:
|
||||||
|
|
||||||
|
```
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: deployment-name
|
||||||
|
spec:
|
||||||
|
replicas: 3
|
||||||
|
```
|
||||||
|
|
||||||
|
在 kustomization 中添加以下内容,将副本数更改为5:
|
||||||
|
|
||||||
|
```
|
||||||
|
replicas:
|
||||||
|
- name: deployment-name
|
||||||
|
count: 5
|
||||||
|
```
|
||||||
|
|
||||||
|
该字段内容为列表,所以可以同时修改许多资源。
|
||||||
|
|
||||||
|
#### Limitation
|
||||||
|
|
||||||
|
由于这个声明无法设置 `kind:` 或 `group:` 它将匹配任何可以匹配名称的 `group` 和 `kind` ,并且它是以下之一:
|
||||||
|
- `Deployment`
|
||||||
|
- `ReplicationController`
|
||||||
|
- `ReplicaSet`
|
||||||
|
- `StatefulSet`
|
||||||
|
|
||||||
|
对于更复杂的用例,请使用 patch 。
|
||||||
|
|
||||||
|
### 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
|
||||||
|
|
||||||
|
此列表中的每个条目都将创建一个 Secret 资源(它是n个 secrets 的生成器)。
|
||||||
|
|
||||||
|
```
|
||||||
|
secretGenerator:
|
||||||
|
- name: app-tls
|
||||||
|
files:
|
||||||
|
- secret/tls.cert
|
||||||
|
- secret/tls.key
|
||||||
|
type: "kubernetes.io/tls"
|
||||||
|
- name: app-tls-namespaced
|
||||||
|
# you can define a namespace to generate secret in, defaults to: "default"
|
||||||
|
namespace: apps
|
||||||
|
files:
|
||||||
|
- tls.crt=catsecret/tls.cert
|
||||||
|
- tls.key=secret/tls.key
|
||||||
|
type: "kubernetes.io/tls"
|
||||||
|
- name: env_file_secret
|
||||||
|
envs:
|
||||||
|
- env.txt
|
||||||
|
type: Opaque
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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 的默认配置数据可以查看:
|
||||||
|
https://github.com/kubernetes-sigs/kustomize/blob/master/pkg/transformers/config/defaultconfig/varreference.go
|
||||||
|
|
||||||
|
默认目标是所有容器 command args 和 env 字段。
|
||||||
|
|
||||||
|
Vars _不应该_ 被用于 kustomize 已经处理过的配置中插入 names 。
|
||||||
|
例如, Deployment 可以通过 name 引用 ConfigMap ,如果 kustomize 更改 ConfigMap 的名称,则知道更改 Deployment 中的引用的 name 。
|
||||||
@@ -1,287 +0,0 @@
|
|||||||
# Copyright 2018 The Kubernetes Authors.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
#
|
|
||||||
# ----------------------------------------------------
|
|
||||||
# Example kustomization.yaml content.
|
|
||||||
#
|
|
||||||
# This file declares the customization provided by
|
|
||||||
# the kustomize program.
|
|
||||||
#
|
|
||||||
# Since customization is, by definition, _custom_,
|
|
||||||
# there are no sensible default values for the fields
|
|
||||||
# in this file.
|
|
||||||
#
|
|
||||||
# The field values used below are merely examples, not
|
|
||||||
# to be copied literally. The values won't work if
|
|
||||||
# they happen to be references to external files that
|
|
||||||
# don't exist.
|
|
||||||
#
|
|
||||||
# In practice, fields with no value should simply be
|
|
||||||
# omitted from kustomization.yaml to reduce the content
|
|
||||||
# visible in configuration reviews.
|
|
||||||
# ----------------------------------------------------
|
|
||||||
# Kustomization 的 apiVersion 和 kind
|
|
||||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
||||||
kind: Kustomization
|
|
||||||
|
|
||||||
# 为所有 resources 添加 namespace
|
|
||||||
namespace: my-namespace
|
|
||||||
|
|
||||||
# 该字段的值将添加在所有资源的名称之前
|
|
||||||
# 例如 将资源名称 “wordpress” 变为 “alices-wordpress”
|
|
||||||
namePrefix: alices-
|
|
||||||
|
|
||||||
# 该字段的值将添加在所有资源的名称后面
|
|
||||||
# 例如 将资源名称 “wordpress” 变为 “wordpress-v2”
|
|
||||||
# 如果资源类型为 ConfigMap 或 Secret ,则在哈希值之前附加后缀
|
|
||||||
nameSuffix: -v2
|
|
||||||
|
|
||||||
# 为所有资源和 selectors 增加 Labels
|
|
||||||
commonLabels:
|
|
||||||
someName: someValue
|
|
||||||
owner: alice
|
|
||||||
app: bingo
|
|
||||||
|
|
||||||
# 和 Labels 一样, 增加 Annotations
|
|
||||||
# 为 key:value 键值对
|
|
||||||
commonAnnotations:
|
|
||||||
oncallPager: 800-555-1212
|
|
||||||
|
|
||||||
# 此列表中的每条记录都必须是一个存在的 YAML 资源描述文件
|
|
||||||
# 一个 YAML 资源描述文件可以含有多个由(“---”)分隔的资源。
|
|
||||||
# kustomize 将读取这些YAML文件中的资源,对其进行修改并
|
|
||||||
# 发布在 kustomize 的输出中。
|
|
||||||
#
|
|
||||||
# 此列表中的每个条目都应解析为包含 kustomization 文件的目录,否则定制将失败
|
|
||||||
#
|
|
||||||
# 该条目可以是指向本地目录的相对路径
|
|
||||||
# 也可以是指向远程仓库中的目录的 URL
|
|
||||||
# URL 应该遵循 hashicorp/go-getter 中的 URL 格式
|
|
||||||
# https://github.com/hashicorp/go-getter#url-format
|
|
||||||
#
|
|
||||||
# 此字段的存在意味着此文件(您正在阅读的文件)是 _overlay_
|
|
||||||
# 它将进一步定制这些来自 _bases_ 文件中的配置
|
|
||||||
#
|
|
||||||
# 典型用例:开发,演示和生产环境
|
|
||||||
# 这些环境大部分相同但有些关键方式存在差异(镜像标签,一些服务器参数等,与公共 base 不同的配置)
|
|
||||||
resources:
|
|
||||||
- some-service.yaml
|
|
||||||
- sub-dir/some-deployment.yaml
|
|
||||||
- ../../base
|
|
||||||
- github.com/kubernetes-sigs/kustomize/examples/multibases?ref=v1.0.6
|
|
||||||
- github.com/Liujingfang1/mysql
|
|
||||||
- github.com/Liujingfang1/kustomize/examples/helloWorld?ref=test-branch
|
|
||||||
|
|
||||||
# 列表中的每个条目都将创建一个 ConfigMap (它是n个 ConfigMap 的生成器)
|
|
||||||
# 下面的示例创建了两个 ConfigMaps
|
|
||||||
# 一个具有给定文件的名称和内容
|
|
||||||
# 另一个包含 key/value 键值对数据
|
|
||||||
# 每个 configMapGenerator 项都可以使用 [create | replace | merge] 参数
|
|
||||||
# 允许 overlay 从父级修改或替换现有的 configMap
|
|
||||||
configMapGenerator:
|
|
||||||
- name: myJavaServerProps
|
|
||||||
files:
|
|
||||||
- application.properties
|
|
||||||
- more.properties
|
|
||||||
- name: myJavaServerEnvVars
|
|
||||||
literals:
|
|
||||||
- JAVA_HOME=/opt/java/jdk
|
|
||||||
- JAVA_TOOL_OPTIONS=-agentlib:hprof
|
|
||||||
|
|
||||||
# 此列表中的每个条目都会导致创建一个Secret资源(n个 secrets 的生成器)
|
|
||||||
secretGenerator:
|
|
||||||
- name: app-tls
|
|
||||||
files:
|
|
||||||
- secret/tls.cert
|
|
||||||
- secret/tls.key
|
|
||||||
type: "kubernetes.io/tls"
|
|
||||||
- name: app-tls-namespaced
|
|
||||||
# 你可以给生成的 secret 定义一个 namespace ,默认为 ”default“
|
|
||||||
namespace: apps
|
|
||||||
files:
|
|
||||||
- tls.crt=catsecret/tls.cert
|
|
||||||
- tls.key=secret/tls.key
|
|
||||||
type: "kubernetes.io/tls"
|
|
||||||
- name: env_file_secret
|
|
||||||
# 文件路径以 k=v 键值对的形式,每行一个键值对
|
|
||||||
envs:
|
|
||||||
- env.txt
|
|
||||||
type: Opaque
|
|
||||||
|
|
||||||
# generatorOptions 修改所有 ConfigMapGenerator 和 SecretGenerator 的行为
|
|
||||||
generatorOptions:
|
|
||||||
# 为所有生成的资源添加 labels
|
|
||||||
labels:
|
|
||||||
kustomize.generated.resources: somevalue
|
|
||||||
# 为所有生成的资源添加 annotations
|
|
||||||
annotations:
|
|
||||||
kustomize.generated.resource: somevalue
|
|
||||||
# disableNameSuffixHash 为 true 时将禁止默认的在名称后添加哈希值后缀的行为
|
|
||||||
disableNameSuffixHash: true
|
|
||||||
|
|
||||||
# 此列表中的每个条目都应可以解析为部分或完整的资源定义文件
|
|
||||||
#
|
|
||||||
# 这些(也可能是部分的)资源文件中的 name 必须与已经通过 `resources` 加载的 name 字段匹配
|
|
||||||
# 或者通过 `bases` 中的 name 字段匹配
|
|
||||||
# 这些条目将用于 _patch_(修改)已知资源
|
|
||||||
#
|
|
||||||
# 推荐使用小的 patches
|
|
||||||
# 例如:修改内存的 request/limit,更改 ConfigMap 中的 env 变量等
|
|
||||||
# 小的 patches 易于维护和查看,并且易于在 overlays 中混合使用
|
|
||||||
patchesStrategicMerge:
|
|
||||||
- service_port_8888.yaml
|
|
||||||
- deployment_increase_replicas.yaml
|
|
||||||
- deployment_increase_memory.yaml
|
|
||||||
|
|
||||||
# patchesJson6902 列表中的每个条目都应可以解析为 kubernetes 对象和将应用于该对象的 JSON patch
|
|
||||||
# JSON patch 的文档地址:https://tools.ietf.org/html/rfc6902
|
|
||||||
#
|
|
||||||
# 目标字段指向的 kubernetes 对象的 group、 version、 kind、 name 和 namespace 在同一 kustomization 内
|
|
||||||
# path 字段内容是 JSON patch 文件的相对路径
|
|
||||||
# patch 文件中的内容可以如下这种 JSON 格式:
|
|
||||||
#
|
|
||||||
# [
|
|
||||||
# {"op": "add", "path": "/some/new/path", "value": "value"},
|
|
||||||
# {"op": "replace", "path": "/some/existing/path", "value": "new value"}
|
|
||||||
# ]
|
|
||||||
#
|
|
||||||
# 也可以使用 YAML 格式表示:
|
|
||||||
#
|
|
||||||
# - op: add
|
|
||||||
# path: /some/new/path
|
|
||||||
# value: value
|
|
||||||
# - op:replace
|
|
||||||
# path: /some/existing/path
|
|
||||||
# value: new value
|
|
||||||
#
|
|
||||||
patchesJson6902:
|
|
||||||
- target:
|
|
||||||
version: v1
|
|
||||||
kind: Deployment
|
|
||||||
name: my-deployment
|
|
||||||
path: add_init_container.yaml
|
|
||||||
- target:
|
|
||||||
version: v1
|
|
||||||
kind: Service
|
|
||||||
name: my-service
|
|
||||||
path: add_service_annotation.yaml
|
|
||||||
|
|
||||||
# 此列表中的每个条目都应该是 openAPI 定义中自定义资源定义(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.json
|
|
||||||
- crds/typeB.json
|
|
||||||
|
|
||||||
# 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 等
|
|
||||||
#
|
|
||||||
# 变量引用,即字符串 '$(FOO)' ,只能放在 kustomize 配置指定的特定对象的特定字段中
|
|
||||||
#
|
|
||||||
# 关于 vars 的默认配置数据可以查看:
|
|
||||||
# https://github.com/kubernetes-sigs/kustomize/blob/master/pkg/transformers/config/defaultconfig/varreference.go
|
|
||||||
# 默认目标是所有容器 command args 和 env 字段
|
|
||||||
#
|
|
||||||
# Vars _不应该_ 被用于 kustomize 已经处理过的配置中插入 names
|
|
||||||
# 例如, Deployment 可以通过 name 引用 ConfigMap
|
|
||||||
# 如果 kustomize 更改 ConfigMap 的名称,则知道更改 Deployment 中的引用的 name
|
|
||||||
|
|
||||||
# 修改镜像的名称、tag 或 image digest ,而无需使用 patches
|
|
||||||
# 例如,对于这种 kubernetes Deployment 片段:
|
|
||||||
# ```
|
|
||||||
# containers:
|
|
||||||
# - name: mypostgresdb
|
|
||||||
# image: postgres:8
|
|
||||||
# - name: nginxapp
|
|
||||||
# image: nginx:1.7.9
|
|
||||||
# - name: myapp
|
|
||||||
# image: my-demo-app:latest
|
|
||||||
# - name: alpine-app
|
|
||||||
# image: alpine:3.7
|
|
||||||
#```
|
|
||||||
# 想对 `image` 完成以下修改:
|
|
||||||
#
|
|
||||||
# - 将 `postgres:8` 修改为 `my-registry/my-postgres:v1`,
|
|
||||||
# - 将 nginx 的 tag 从 `1.7.9` 修改为 `1.8.0`,
|
|
||||||
# - 将 镜像名称从 `my-demo-app` 修改为 `my-app`,
|
|
||||||
# - 将 alpine 的 tag 从 `3.7` 修改为 digest 值
|
|
||||||
#
|
|
||||||
# 可以在 *kustomization* 中添加以下内容:
|
|
||||||
|
|
||||||
images:
|
|
||||||
- name: postgres
|
|
||||||
newName: my-registry/my-postgres
|
|
||||||
newTag: v1
|
|
||||||
- name: nginx
|
|
||||||
newTag: 1.8.0
|
|
||||||
- name: my-demo-app
|
|
||||||
newName: my-app
|
|
||||||
- name: alpine
|
|
||||||
digest: sha256:24a0c4b4a4c0eb97a1aabb8e29f18e917d05abfe1b7a7c07857230879ce7d3d3
|
|
||||||
Reference in New Issue
Block a user