Compare commits

...

15 Commits

Author SHA1 Message Date
Jeff Regan
dd4aafe148 Merge pull request #2537 from Shell32-Natsu/fix-clone-hash
Fix git commit hash ignored
2020-05-27 13:22:08 -07:00
Jeff Regan
adb56abd99 Merge pull request #2542 from monopole/pinKustomizeToCmdKubectl_v0_1_0
pin kustomize to cmd/kubectl_v0_1_0
2020-05-27 12:36:44 -07:00
jregan
def978b334 pin kustomize to cmd/kubectl_v0_1_0 2020-05-27 12:20:39 -07:00
Jeff Regan
ff7a7937c5 Merge pull request #2541 from monopole/pinToKStatus_v0_0_2
Pin to kstatus/v0.0.2
2020-05-27 11:13:15 -07:00
jregan
90c23026c2 Pin to kstatus/v0.0.2 2020-05-27 10:56:01 -07:00
Donny Xia
e5e4f33ac7 Fix go-getter 2020-05-26 17:42:31 -07:00
Donny Xia
5449dbc775 Fix git commit hash ignored 2020-05-26 14:44:37 -07:00
Kubernetes Prow Robot
52c5a9d380 Merge pull request #2490 from sunny0826/zh-docs
add zh docs plugins-builtions.md
2020-05-26 14:06:42 -07:00
Kubernetes Prow Robot
74d59f87c2 Merge pull request #2536 from Shell32-Natsu/merge-error-message
Improve error message for merge error
2020-05-26 13:54:41 -07:00
Donny Xia
e05404f89c Improve error message for merge error 2020-05-26 10:12:33 -07:00
Jeff Regan
9e40cc177a Merge pull request #2532 from monopole/upgradeToV040
Upgrade CLI to API v0.4.0
2020-05-24 10:41:56 -07:00
jregan
315f7c6e7f Upgrade CLI to API v0.4.0 2020-05-24 10:28:30 -07:00
guoxudong
59f8f4ae14 fix 2020-05-20 09:25:31 +08:00
guoxudong
7bae481252 fix 2020-05-19 10:19:59 +08:00
guoxudong
bf71dce60c add zh docs plugins-builtions.md 2020-05-15 14:44:27 +08:00
36 changed files with 755 additions and 97 deletions

View File

@@ -4,7 +4,6 @@
package git
import (
"bytes"
"log"
"os/exec"
@@ -34,34 +33,38 @@ func ClonerUsingGitExec(repoSpec *RepoSpec) error {
cmd := exec.Command(
gitProgram,
"clone",
"--depth=1",
repoSpec.CloneSpec(),
"-b",
repoSpec.Ref,
repoSpec.Dir.String())
var out bytes.Buffer
cmd.Stdout = &out
cmd.Stderr = &out
err = cmd.Run()
out, err := cmd.CombinedOutput()
if err != nil {
log.Printf("Error cloning git repo: %s", out.String())
log.Printf("Error cloning git repo: %s", out)
return errors.Wrapf(
err,
"trouble cloning git repo %v in %s",
repoSpec.CloneSpec(), repoSpec.Dir.String())
}
cmd = exec.Command(
gitProgram,
"checkout",
repoSpec.Ref)
cmd.Dir = repoSpec.Dir.String()
out, err = cmd.CombinedOutput()
if err != nil {
log.Printf("Error checking out ref: %s", out)
return errors.Wrapf(err, "trouble checking out %s", repoSpec.Ref)
}
cmd = exec.Command(
gitProgram,
"submodule",
"update",
"--init",
"--recursive")
cmd.Stdout = &out
cmd.Stderr = &out
cmd.Dir = repoSpec.Dir.String()
err = cmd.Run()
out, err = cmd.CombinedOutput()
if err != nil {
log.Printf("Error fetching submodules: %s", out)
return errors.Wrapf(err, "trouble fetching submodules for %s", repoSpec.CloneSpec())
}

View File

@@ -541,7 +541,7 @@ configMapGenerator:
if err == nil {
t.Fatalf("expected error")
}
if !strings.Contains(err.Error(), "must merge or replace") {
if !strings.Contains(err.Error(), "behavior must be merge or replace") {
t.Fatalf("unexpected error %v", err)
}
}
@@ -566,7 +566,7 @@ secretGenerator:
if err == nil {
t.Fatalf("expected error")
}
if !strings.Contains(err.Error(), "must merge or replace") {
if !strings.Contains(err.Error(), "behavior must be merge or replace") {
t.Fatalf("unexpected error %v", err)
}
}

View File

@@ -60,6 +60,8 @@ func getRemoteTarget(rs *remoteTargetSpec) error {
return err
}
rs.Dir = filesys.ConfirmedDir(rs.Dir.Join("repo"))
// Get the pwd
pwd, err := os.Getwd()
if err != nil {

View File

@@ -691,7 +691,7 @@ func (m *resWrangler) appendReplaceOrMerge(
res.Merge(old)
default:
return fmt.Errorf(
"id %#v exists; must merge or replace", id)
"id %#v exists; behavior must be merge or replace", id)
}
i, err := m.Replace(res)
if err != nil {

View File

@@ -13,8 +13,6 @@ require (
k8s.io/component-base v0.17.0 // indirect
k8s.io/kubectl v0.0.0-20191219154910-1528d4eea6dd
sigs.k8s.io/controller-runtime v0.4.0
sigs.k8s.io/kustomize/kstatus v0.0.1
sigs.k8s.io/kustomize/kstatus v0.0.2
sigs.k8s.io/kustomize/kyaml v0.1.11
)
replace sigs.k8s.io/kustomize/kstatus v0.0.1 => ../../kstatus

View File

@@ -597,6 +597,8 @@ sigs.k8s.io/controller-runtime v0.4.0 h1:wATM6/m+3w8lj8FXNaO6Fs/rq/vqoOjO1Q116Z9
sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns=
sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0=
sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU=
sigs.k8s.io/kustomize/kstatus v0.0.2 h1:7GoHi/Vq7rIAS8AQONlfcdaCpVXY0HqzNhU5us7dToA=
sigs.k8s.io/kustomize/kstatus v0.0.2/go.mod h1:6qUKWLy4+yGExtjbs+fibz2tOBZG7413yx2NHyAzIU0=
sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo=
sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU=
sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=

View File

@@ -1,18 +1,18 @@
# Kustomization 文件字段
[field-name-namespace]: ../plugins/builtins.md#field-name-namespace
[field-name-images]: ../plugins/builtins.md#field-name-images
[field-names-namePrefix-nameSuffix]: ../plugins/builtins.md#field-names-namePrefix-nameSuffix
[field-name-patches]: ../plugins/builtins.md#field-name-patches
[field-name-patchesStrategicMerge]: ../plugins/builtins.md#field-name-patchesStrategicMerge
[field-name-patchesJson6902]: ../plugins/builtins.md#field-name-patchesJson6902
[field-name-replicas]: ../plugins/builtins.md#field-name-replicas
[field-name-secretGenerator]: ../plugins/builtins.md#field-name-secretGenerator
[field-name-commonLabels]: ../plugins/builtins.md#field-name-commonLabels
[field-name-commonAnnotations]: ../plugins/builtins.md#field-name-commonAnnotations
[field-name-configMapGenerator]: ../plugins/builtins.md#field-name-configMapGenerator
[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) 配置文件中各字段的含义。
介绍 [kustomization.yaml](glossary.md#kustomization) 配置文件中各字段的含义。
## Resources
@@ -32,7 +32,7 @@
|[configMapGenerator](#configmapgenerator)| list | 列表中的每个条目都将生成一个 ConfigMap (合计可以生成 n 个 ConfigMap。 |
|[secretGenerator](#secretgenerator)| list | 列表中的每个条目都将生成一个 Secret合计可以生成 n 个 Secrets。 |
|[generatorOptions](#generatoroptions)| string | generatorOptions 可以修改所有 ConfigMapGenerator 和 SecretGenerator 的行为。 |
|[generators](#generators)| list | [插件](../plugins)配置文件。 |
|[generators](#generators)| list | [插件](plugins.md)配置文件。 |
## Transformers
@@ -50,7 +50,7 @@
| [replicas](#replicas) | list | 修改资源的副本数。 |
| [patchesStrategicMerge](#patchesstrategicmerge) | list | 此列表中的每个条目都应可以解析为部分或完整的资源定义文件。 |
| [patchesJson6902](#patchesjson6902) | list | 列表中的每个条目都应可以解析为 Kubernetes 对象和将应用于该对象的 JSON patch 。 |
| [transformers](#transformers) | list | [插件](../plugins)配置文件。 |
| [transformers](#transformers) | list | [插件](plugins.md)配置文件。 |
## Meta
@@ -135,7 +135,7 @@ generatorOptions:
### generators
[插件](../plugins)生成器配置文件列表。
[插件](plugins.md)生成器配置文件列表。
```
generators:
@@ -149,7 +149,7 @@ generators:
### inventory
详见 [inventory object](inventory_object.md)。
详见 [inventory object](../inventory_object.md)。
### kind

653
docs/zh/plugins-builtins.md Normal file
View File

@@ -0,0 +1,653 @@
<!--
TODO: Generate this file (or files) from
data in directories under plugin/builtin.
This file too hard to maintain distinctly
from what's going on in those directories.
We could expand pluginator to do this, since
it already scans the relevant files in the
relevant directory to generate the static
factory methods for plugins.
-->
# 内置插件
内置插件包括生成器和转化器。
每个插件都可以通过如下两种方式触发:
* 通过 kustomization 文件的字段隐式触发插件,例如 `AnnotationsTransformer` 就是由 `commonAnnotations` 字段触发的。
* 通过 `generators``transformers` 字段显式触发插件(通过指定插件的配置文件)。
直接使用 `kustomization.yaml` 文件中的字段比如 `commonLables``commonAnnotation` 他们可以修改一些默认的字段,如果用户想要添加或减少能被 `commonLabel` 所修改的字段,则不是很容易做到;而使用 `transformers` 的话,用户可以指定哪些字段能被修改,而不受默认值的影响。
[types.GeneratorOptions]: ../../api/types/generatoroptions.go
[types.SecretArgs]: ../../api/types/secretargs.go
[types.ConfigMapArgs]: ../../api/types/configmapargs.go
[config.FieldSpec]: ../../api/types/fieldspec.go
[types.ObjectMeta]: ../../api/types/objectmeta.go
[types.Selector]: ../../api/types/selector.go
[types.Replica]: ../../api/types/replica.go
[types.PatchStrategicMerge]: ../../api/types/patchstrategicmerge.go
[types.PatchTarget]: ../../api/types/patchtarget.go
[image.Image]: ../../api/types/image.go
## _AnnotationTransformer_
### 使用 `kustomization.yaml`
#### 字段名称:`commonAnnotations`
为所有资源添加注释,和标签一样以 key: value 的形式。
```
commonAnnotations:
oncallPager: 800-555-1212
```
### 使用插件
#### Arguments
> Annotations map\[string\]string
>
> FieldSpecs \[\][config.FieldSpec]
#### Example
> ```
> apiVersion: builtin
> kind: AnnotationsTransformer
> metadata:
> name: not-important-to-example
> annotations:
> app: myApp
> greeting/morning: a string with blanks
> fieldSpecs:
> - path: metadata/annotations
> create: true
> ```
## _ConfigMapGenerator_
### 使用 `kustomization.yaml`
#### 字段名称:`configMapGenerator`
列表中的每个条目都将生成一个 ConfigMap (合计可以生成 n 个 ConfigMap
下面的示例会生成 3 个ConfigMap第一个带有给定文件的名称和内容第二个将在 data 中添加 key/value第三个通过 `options` 为单个 ConfigMap 设置注释和标签。
每个 configMapGenerator 项均接受的参数 `behavior: [create|replace|merge]`,这个参数允许修改或替换父级现有的 configMap。
此外,每个条目都有一个 `options` 字段,该字段具有与 kustomization 文件的 `generatorOptions` 字段相同的子字段。
`options` 字段允许用户为生成的实例添加标签和(或)注释,或者分别禁用该实例名称的哈希后缀。此处添加的标签和注释不会被 kustomization 文件 `generatorOptions` 字段关联的全局选项覆盖。但是如果全局 `generatorOptions` 字段指定 `disableNameSuffixHash: true`,其他 `options` 的设置将无法将其覆盖。
```
# 这个标签将添加到所有的 ConfigMap 和 Secret 中。
generatorOptions:
labels:
fruit: apple
configMapGenerator:
- name: my-java-server-props
behavior: merge
files:
- application.properties
- more.properties
- name: my-java-server-env-vars
literals:
- JAVA_HOME=/opt/java/jdk
- JAVA_TOOL_OPTIONS=-agentlib:hprof
options:
disableNameSuffixHash: true
labels:
pet: dog
- name: dashboards
files:
- mydashboard.json
options:
annotations:
dashboard: "1"
labels:
app.kubernetes.io/name: "app1"
```
这里也可以[定义一个 key](https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#define-the-key-to-use-when-creating-a-configmap-from-a-file) 来为文件设置不同名称。
下面这个示例会创建一个 ConfigMap并将 `whatever.ini` 重命名为 `myFileName.ini`
```
configMapGenerator:
- name: app-whatever
files:
- myFileName.ini=whatever.ini
```
### 使用插件
#### Arguments
> [types.ConfigMapArgs]
#### Example
> ```
> apiVersion: builtin
> kind: ConfigMapGenerator
> metadata:
> name: mymap
> envs:
> - devops.env
> - uxteam.env
> literals:
> - FRUIT=apple
> - VEGETABLE=carrot
> ```
## _ImageTagTransformer_
### 使用 `kustomization.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` 改为 `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
```
### 使用插件
#### Arguments
> ImageTag [image.Image]
>
> FieldSpecs \[\][config.FieldSpec]
#### Example
> ```
> apiVersion: builtin
> kind: ImageTagTransformer
> metadata:
> name: not-important-to-example
> imageTag:
> name: nginx
> newTag: v2
> ```
## _LabelTransformer_
### 使用 `kustomization.yaml`
#### 字段名称:`commonLabels`
为所有资源和 selectors 增加标签。
```
commonLabels:
someName: someValue
owner: alice
app: bingo
```
### 使用插件
#### Arguments
> Labels map\[string\]string
>
> FieldSpecs \[\][config.FieldSpec]
#### Example
> ```
> apiVersion: builtin
> kind: LabelTransformer
> metadata:
> name: not-important-to-example
> labels:
> app: myApp
> env: production
> fieldSpecs:
> - path: metadata/labels
> create: true
> ```
## _NamespaceTransformer_
### 使用 `kustomization.yaml`
#### 字段名称:`namespace`
为所有资源添加 namespace。
```
namespace: my-namespace
```
### 使用插件
#### Arguments
> [types.ObjectMeta]
>
> FieldSpecs \[\][config.FieldSpec]
#### Example
> ```
> apiVersion: builtin
> kind: NamespaceTransformer
> metadata:
> name: not-important-to-example
> namespace: test
> fieldSpecs:
> - path: metadata/namespace
> create: true
> - path: subjects
> kind: RoleBinding
> group: rbac.authorization.k8s.io
> - path: subjects
> kind: ClusterRoleBinding
> group: rbac.authorization.k8s.io
> ```
## _PatchesJson6902_
### 使用 `kustomization.yaml`
#### 字段名称:`patchesJson6902`
patchesJson6902 列表中的每个条目都应可以解析为 kubernetes 对象和将应用于该对象的 [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
```
patch 内容也可以是一个inline string
```
patchesJson6902:
- target:
version: v1
kind: Deployment
name: my-deployment
patch: |-
- op: add
path: /some/new/path
value: value
- op: replace
path: /some/existing/path
value: "new value"
```
### 使用插件
#### Arguments
> Target [types.PatchTarget]
>
> Path string
>
> JsonOp string
#### Example
> ```
> apiVersion: builtin
> kind: PatchJson6902Transformer
> metadata:
> name: not-important-to-example
> target:
> group: apps
> version: v1
> kind: Deployment
> name: my-deploy
> path: jsonpatch.json
> ```
## _PatchesStrategicMerge_
### 使用 `kustomization.yaml`
#### 字段名称:`patchesStrategicMerge`
此列表中的每个条目都应可以解析为 [StrategicMergePatch](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-api-machinery/strategic-merge-patch.md).
这些(也可能是部分的)资源文件中的 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
```
patch 内容也可以是一个inline string
```
patchesStrategicMerge:
- |-
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
template:
spec:
containers:
- name: nginx
image: nignx:latest
```
请注意kustomize 不支持同一个 patch 对象中包含多个 _删除_ 指令。要从一个对象中删除多个字段或切片元素,需要创建一个单独的 patch以执行所有需要的删除。
### 使用插件
#### Arguments
> Paths \[\][types.PatchStrategicMerge]
>
> Patches string
#### Example
> ```
> apiVersion: builtin
> kind: PatchStrategicMergeTransformer
> metadata:
> name: not-important-to-example
> paths:
> - patch.yaml
> ```
## _PatchTransformer_
### 使用 `kustomization.yaml`
#### 字段名称:`patches`
这个列表中的每个条目应该解析到一个 Patch 对象,其中包括一个 patch 和一个目标选择器。patch 可以是 Strategic Merge Patch 或 JSON patch也可以是 patch 文件或 inline string。目标选择器可以通过 group、version、kind、name、namespace、标签选择器和注释选择器来选择资源选择一个或多个匹配所有指定字段的资源来应用 patch。
```
patches:
- path: patch.yaml
target:
group: apps
version: v1
kind: Deployment
name: deploy.*
labelSelector: "env=dev"
annotationSelector: "zone=west"
- patch: |-
- op: replace
path: /some/existing/path
value: new value
target:
kind: MyKind
labelSelector: "env=dev"
```
The `name` and `namespace` fields of the patch target selector are
automatically anchored regular expressions. This means that the value `myapp`
is equivalent to `^myapp$`.
### 使用插件
#### Arguments
> Path string
>
> Patch string
>
> Target \*[types.Selector]
#### Example
> ```
> apiVersion: builtin
> kind: PatchTransformer
> metadata:
> name: not-important-to-example
> patch: '[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value": "nginx:latest"}]'
> target:
> name: .*Deploy
> kind: Deployment
> ```
## _PrefixSuffixTransformer_
### 使用 `kustomization.yaml`
#### 字段名称:`namePrefix`, `nameSuffix`
为所有资源的名称添加前缀或后缀。
例如:将 deployment 名称从 `wordpress` 变为 `alices-wordpress` 或 `wordpress-v2` 或 `alices-wordpress-v2`。
```
namePrefix: alices-
nameSuffix: -v2
```
如果资源类型是 ConfigMap 或 Secret则在哈希值之前添加后缀。
### 使用插件
#### Arguments
> Prefix string
>
> Suffix string
>
> FieldSpecs \[\][config.FieldSpec]
#### Example
> ```
> apiVersion: builtin
> kind: PrefixSuffixTransformer
> metadata:
> name: not-important-to-example
> prefix: baked-
> suffix: -pie
> fieldSpecs:
> - path: metadata/name
> ```
## _ReplicaCountTransformer_
### 使用 `kustomization.yaml`
#### 字段名称:`replicas`
修改资源的副本数。
例如:对于如下 kubernetes Deployment 片段:
```
kind: Deployment
metadata:
name: deployment-name
spec:
replicas: 3
```
在 kustomization 中添加以下内容,将副本数更改为 5
```
replicas:
- name: deployment-name
count: 5
```
该字段内容为列表,所以可以同时修改许多资源。
由于这个声明无法设置 `kind:` 或 `group:`,所以他只能匹配如下资源中的一种:
- `Deployment`
- `ReplicationController`
- `ReplicaSet`
- `StatefulSet`
对于更复杂的用例,请使用 patch 。
### 使用插件
#### Arguments
> Replica [types.Replica]
>
> FieldSpecs \[\][config.FieldSpec]
#### Example
> ```
> apiVersion: builtin
> kind: ReplicaCountTransformer
> metadata:
> name: not-important-to-example
> replica:
> name: myapp
> count: 23
> fieldSpecs:
> - path: spec/replicas
> create: true
> kind: Deployment
> - path: spec/replicas
> create: true
> kind: ReplicationController
> ```
## _SecretGenerator_
### 使用 `kustomization.yaml`
#### 字段名称:`secretGenerator`
列表中的每个条目都将生成一个 Secret合计可以生成 n 个 Secrets
功能与之前描述的 `configMapGenerator` 字段类似。
```
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
# a 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
- name: secret-with-annotation
files:
- app-config.yaml
type: Opaque
options:
annotations:
app_config: "true"
labels:
app.kubernetes.io/name: "app2"
```
### 使用插件
#### Arguments
> [types.ObjectMeta]
>
> [types.SecretArgs]
#### Example
> ```
> apiVersion: builtin
> kind: SecretGenerator
> metadata:
> name: my-secret
> namespace: whatever
> behavior: merge
> envs:
> - a.env
> - b.env
> files:
> - obscure=longsecret.txt
> literals:
> - FRUIT=apple
> - VEGETABLE=carrot
> ```

View File

@@ -12,10 +12,10 @@ require (
k8s.io/apimachinery v0.17.0
k8s.io/client-go v0.17.0
sigs.k8s.io/controller-runtime v0.4.0
sigs.k8s.io/kustomize/api v0.3.3
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/kustomize/cmd/config v0.1.11
sigs.k8s.io/kustomize/cmd/kubectl v0.0.3
sigs.k8s.io/kustomize/kstatus v0.0.1
sigs.k8s.io/kustomize/cmd/kubectl v0.1.0
sigs.k8s.io/kustomize/kstatus v0.0.2
sigs.k8s.io/kustomize/kyaml v0.1.11
sigs.k8s.io/yaml v1.2.0
)
@@ -24,8 +24,3 @@ exclude (
github.com/russross/blackfriday v2.0.0+incompatible
sigs.k8s.io/kustomize/api v0.2.0
)
replace (
sigs.k8s.io/kustomize/cmd/kubectl v0.0.3 => ../cmd/kubectl
sigs.k8s.io/kustomize/kstatus v0.0.1 => ../kstatus
)

View File

@@ -786,12 +786,14 @@ sigs.k8s.io/controller-runtime v0.4.0 h1:wATM6/m+3w8lj8FXNaO6Fs/rq/vqoOjO1Q116Z9
sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns=
sigs.k8s.io/kustomize v2.0.3+incompatible h1:JUufWFNlI44MdtnjUqVnvh29rR37PQFzPbLXqhyOyX0=
sigs.k8s.io/kustomize v2.0.3+incompatible/go.mod h1:MkjgH3RdOWrievjo6c9T245dYlB5QeXV4WCbnt/PEpU=
sigs.k8s.io/kustomize/api v0.3.3 h1:E3nUKiTnezsA1NoGA37jWlatjjMq2a/i1UIGAzSZGnk=
sigs.k8s.io/kustomize/api v0.3.3/go.mod h1:JU8ooABgAO6xVDiWThwKtKShI8phhAALPaMfBpmNDOM=
sigs.k8s.io/kustomize/api v0.4.0 h1:EhlPWA4S1S1UUPzNanVR/SfPQ7g66j+jiN8ovtyby3Y=
sigs.k8s.io/kustomize/api v0.4.0/go.mod h1:NqxqT+wbYHrD0P19Uu4dXiMsVwI1IwQs+MJHlLhmPqQ=
sigs.k8s.io/kustomize/cmd/config v0.1.11 h1:wSVvutGQtgiYWcd4IH5sr8jP4v6zgr9IcUAbA+32ULo=
sigs.k8s.io/kustomize/cmd/config v0.1.11/go.mod h1:w6vK8ulANez23sOTtmdej5KpBU9Ykdomu/W70PC8YMs=
sigs.k8s.io/kustomize/kyaml v0.1.10 h1:ZZfBnA/kYa9ZxUFIgI9oq3pWKzzA1gGOKgU0Hv/NhVg=
sigs.k8s.io/kustomize/kyaml v0.1.10/go.mod h1:mPmeBSRy0LTMv6fSrYSoi2yIFNZVouGKDsTekE5kdhs=
sigs.k8s.io/kustomize/cmd/kubectl v0.1.0 h1:TAAv9ZhUalC0tqgHp1rr8Vv5fA5ILcQwGYjdAGdCmhg=
sigs.k8s.io/kustomize/cmd/kubectl v0.1.0/go.mod h1:qF57icqAzCMX+jN0jp21jlWiVBzyXWwPdBF8aW/amX0=
sigs.k8s.io/kustomize/kstatus v0.0.2 h1:7GoHi/Vq7rIAS8AQONlfcdaCpVXY0HqzNhU5us7dToA=
sigs.k8s.io/kustomize/kstatus v0.0.2/go.mod h1:6qUKWLy4+yGExtjbs+fibz2tOBZG7413yx2NHyAzIU0=
sigs.k8s.io/kustomize/kyaml v0.1.11 h1:/VvWxVIgH5gG1K4A7trgbyLgO3tRBiAWNhLFVU1HEmo=
sigs.k8s.io/kustomize/kyaml v0.1.11/go.mod h1:72/rLkSi+L/pHM1oCjwrf3ClU+tH5kZQvvdLSqIHwWU=
sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=

View File

@@ -148,7 +148,10 @@ func (mf *kustomizationFile) Read() (*types.Kustomization, error) {
if err != nil {
return nil, err
}
data = types.FixKustomizationPreUnmarshalling(data)
data, err = types.FixKustomizationPreUnmarshalling(data)
if err != nil {
return nil, err
}
var k types.Kustomization
err = yaml.Unmarshal(data, &k)
if err != nil {

View File

@@ -3,9 +3,9 @@ module sigs.k8s.io/kustomize/plugin/builtin/annotationstransformer
go 1.13
require (
sigs.k8s.io/kustomize/api v0.0.0
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/kustomize/kyaml v0.1.11
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api

View File

@@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/builtin/configmapgenerator
go 1.13
require (
sigs.k8s.io/kustomize/api v0.3.1
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api

View File

@@ -2,6 +2,6 @@ module sigs.k8s.io/kustomize/plugin/builtin/hashtransformer
go 1.13
require sigs.k8s.io/kustomize/api v0.3.1
require sigs.k8s.io/kustomize/api v0.4.0
replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api

View File

@@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/builtin/imagetagtransformer
go 1.13
require (
sigs.k8s.io/kustomize/api v0.3.1
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api

View File

@@ -3,9 +3,9 @@ module sigs.k8s.io/kustomize/plugin/builtin/labeltransformer
go 1.13
require (
sigs.k8s.io/kustomize/api v0.0.0
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/kustomize/kyaml v0.1.11
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api

View File

@@ -4,7 +4,7 @@ go 1.13
require (
github.com/pkg/errors v0.8.1
sigs.k8s.io/kustomize/api v0.3.1
sigs.k8s.io/kustomize/api v0.4.0
)
replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api

View File

@@ -3,9 +3,9 @@ module sigs.k8s.io/kustomize/plugin/builtin/namespacetransformer
go 1.13
require (
sigs.k8s.io/kustomize/api v0.0.0
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/kustomize/kyaml v0.1.11
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api

View File

@@ -5,9 +5,9 @@ go 1.13
require (
github.com/evanphx/json-patch v4.5.0+incompatible
github.com/pkg/errors v0.8.1
sigs.k8s.io/kustomize/api v0.0.0
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/kustomize/kyaml v0.1.11
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api

View File

@@ -3,9 +3,9 @@ module sigs.k8s.io/kustomize/plugin/builtin/patchstrategicmergetransformer
go 1.13
require (
sigs.k8s.io/kustomize/api v0.0.0
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/kustomize/kyaml v0.1.11
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api

View File

@@ -5,9 +5,9 @@ go 1.13
require (
github.com/evanphx/json-patch v4.5.0+incompatible
github.com/pkg/errors v0.8.1
sigs.k8s.io/kustomize/api v0.0.0
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/kustomize/kyaml v0.1.11
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api

View File

@@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/builtin/prefixsuffixtransformer
go 1.13
require (
sigs.k8s.io/kustomize/api v0.3.1
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api

View File

@@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/builtin/replicacounttransformer
go 1.13
require (
sigs.k8s.io/kustomize/api v0.3.1
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api

View File

@@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/builtin/secretgenerator
go 1.13
require (
sigs.k8s.io/kustomize/api v0.3.1
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api

View File

@@ -3,9 +3,9 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/valueaddtransformer
go 1.13
require (
sigs.k8s.io/kustomize/api v0.0.0
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/kustomize/kyaml v0.1.11
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../api

View File

@@ -2,6 +2,6 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/bashedconfigmap
go 1.13
require sigs.k8s.io/kustomize/api v0.3.1
require sigs.k8s.io/kustomize/api v0.4.0
replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api

View File

@@ -2,6 +2,6 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/chartinflator
go 1.13
require sigs.k8s.io/kustomize/api v0.3.1
require sigs.k8s.io/kustomize/api v0.4.0
replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api

View File

@@ -4,8 +4,8 @@ go 1.13
require (
github.com/pkg/errors v0.8.1
sigs.k8s.io/kustomize/api v0.0.0
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api

View File

@@ -2,6 +2,6 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/gogetter
go 1.13
require sigs.k8s.io/kustomize/api v0.3.1
require sigs.k8s.io/kustomize/api v0.4.0
replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api

View File

@@ -2,6 +2,6 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/printworkdir
go 1.13
require sigs.k8s.io/kustomize/api v0.3.1
require sigs.k8s.io/kustomize/api v0.4.0
replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api

View File

@@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/replacementtransform
go 1.13
require (
sigs.k8s.io/kustomize/api v0.0.0
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api

View File

@@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/secretsfromdatabase
go 1.13
require (
sigs.k8s.io/kustomize/api v0.0.0
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api

View File

@@ -2,6 +2,6 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/sedtransformer
go 1.13
require sigs.k8s.io/kustomize/api v0.3.1
require sigs.k8s.io/kustomize/api v0.4.0
replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api

View File

@@ -3,8 +3,8 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/someservicegenerator
go 1.13
require (
sigs.k8s.io/kustomize/api v0.0.0
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api

View File

@@ -4,8 +4,8 @@ go 1.13
require (
github.com/pkg/errors v0.8.1
sigs.k8s.io/kustomize/api v0.0.0
sigs.k8s.io/kustomize/api v0.4.0
sigs.k8s.io/yaml v1.2.0
)
replace sigs.k8s.io/kustomize/api v0.0.0 => ../../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api

View File

@@ -2,6 +2,6 @@ module sigs.k8s.io/kustomize/plugin/someteam.example.com/v1/validator
go 1.13
require sigs.k8s.io/kustomize/api v0.3.1
require sigs.k8s.io/kustomize/api v0.4.0
replace sigs.k8s.io/kustomize/api v0.3.1 => ../../../../api
replace sigs.k8s.io/kustomize/api v0.4.0 => ../../../../api