Kustomize nameSuffix 跳过一些资源
Kustomize nameSuffix skip on some resources
我正在使用 Kustomize 来管理同一集群的多个变体。我正在使用 nameSuffix
选项为我的所有资源添加后缀:
nameSuffix: -mysfx
我的问题是一切正常,但仅将此后缀添加到一个服务资源会给我带来问题。我的问题是应用程序 (Patroni) 与必须调用的服务交互:
CLUSTER-NAME-config
所以我想从 nameSuffix
中排除这个单一资源。我知道由于此功能的设计方式,这是不可能的。我在 Whosebug 和网络上阅读了几篇文章。我知道我可以跳过对一类资源使用 nameSuffix
。所以我试着把我的 kustomization.yaml
行:
configurations:
- kustomize-config/kustomize-config.yaml
跳过所有服务资源。然后在文件中 kustomize-config/kustomize-config.yaml
nameSuffix:
- path: metadata/name
apiVersion: v1
kind: Service
skip: true
但这不起作用。
有人知道这个配置有什么问题吗?
然后假设我现在可以跳过仅对服务资源使用 nameSuffix
,我还有其他两个服务要在其中添加此后缀。我需要做什么才能将 nameSuffix
添加到这两项服务而不是上面提到的服务?
如果对此有更好的解决方案,请告诉我。
跳过所选 kind
s 不起作用,因为此功能未实现 - 来自 this comment on GitHub issue 519。
另外 this is an example 它应该是怎样的(你试过的)
基于 this comment,它适用于明确提到的 kind
:
The plugin's config is currently oriented towards specifying which
kinds to modify, ignoring others.
另外,根据我执行的一些测试,它只查找 kind
,它不查找名称或任何东西,因此只能包含整个 kind
。因此,您的问题的第二部分恐怕不可能(好吧,使用 kustomize,您可以使用 sed
并随时修改您需要的所有内容)。
我创建了一个简单的结构并对其进行了测试:
$ tree
.
├── cm1.yaml
├── cm2.yaml
├── kustomization.yaml
├── kustomizeconfig
│ └── skip-prefix.yaml
├── pod.yaml
├── secret.yaml
└── storageclass.yaml
1 directory, 7 files
有两个configmap,pod、secret和storageclass,共5个对象。
$ cat kustomization.yaml
namePrefix: prefix-
nameSuffix: -suffix
resources:
- cm1.yaml
- cm2.yaml
- secret.yaml
- pod.yaml
- storageclass.yaml
configurations:
- ./kustomizeconfig/skip-prefix.yaml
和配置(明确指定除配置映射之外的所有类型)。它也被称为 namePrefix
,但它同时适用于:prefix
和 suffix
:
$ cat kustomizeconfig/skip-prefix.yaml
namePrefix:
- path: metadata/name
apiVersion: v1
kind: Secret
- path: metadata/name
apiVersion: v1
kind: Pod
- path: metadata/name
apiVersion: v1
kind: StorageClass
最终 kustomize build .
看起来像:
$ kustomize build .
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: prefix-local-storage-suffix # modified
provisioner: kubernetes.io/no-provisioner
---
apiVersion: v1
kind: ConfigMap
metadata:
name: cm1 # skipped
---
apiVersion: v1
kind: ConfigMap
metadata:
name: cm2 # skipped
---
apiVersion: v1
kind: Secret
metadata:
name: prefix-secret-suffix # modified
---
apiVersion: v1
kind: Pod
metadata:
name: prefix-pod-suffix # modified
spec:
containers:
- image: image
name: pod
另一个可能的选择是使用 PrefixSuffixTransformer
plugin - 它在指定应添加 prefix
and/or suffix
和 fieldSpec
方面的工作方式不同
请在此问题 0519_b.
的功能测试中找到 example 和下面的最终结果
还有一个 good answer on Whosebug 关于使用 PrefixSuffixTransformer
。
我正在使用 Kustomize 来管理同一集群的多个变体。我正在使用 nameSuffix
选项为我的所有资源添加后缀:
nameSuffix: -mysfx
我的问题是一切正常,但仅将此后缀添加到一个服务资源会给我带来问题。我的问题是应用程序 (Patroni) 与必须调用的服务交互:
CLUSTER-NAME-config
所以我想从 nameSuffix
中排除这个单一资源。我知道由于此功能的设计方式,这是不可能的。我在 Whosebug 和网络上阅读了几篇文章。我知道我可以跳过对一类资源使用 nameSuffix
。所以我试着把我的 kustomization.yaml
行:
configurations:
- kustomize-config/kustomize-config.yaml
跳过所有服务资源。然后在文件中 kustomize-config/kustomize-config.yaml
nameSuffix:
- path: metadata/name
apiVersion: v1
kind: Service
skip: true
但这不起作用。
有人知道这个配置有什么问题吗?
然后假设我现在可以跳过仅对服务资源使用 nameSuffix
,我还有其他两个服务要在其中添加此后缀。我需要做什么才能将 nameSuffix
添加到这两项服务而不是上面提到的服务?
如果对此有更好的解决方案,请告诉我。
跳过所选 kind
s 不起作用,因为此功能未实现 - 来自 this comment on GitHub issue 519。
另外 this is an example 它应该是怎样的(你试过的)
基于 this comment,它适用于明确提到的 kind
:
The plugin's config is currently oriented towards specifying which kinds to modify, ignoring others.
另外,根据我执行的一些测试,它只查找 kind
,它不查找名称或任何东西,因此只能包含整个 kind
。因此,您的问题的第二部分恐怕不可能(好吧,使用 kustomize,您可以使用 sed
并随时修改您需要的所有内容)。
我创建了一个简单的结构并对其进行了测试:
$ tree
.
├── cm1.yaml
├── cm2.yaml
├── kustomization.yaml
├── kustomizeconfig
│ └── skip-prefix.yaml
├── pod.yaml
├── secret.yaml
└── storageclass.yaml
1 directory, 7 files
有两个configmap,pod、secret和storageclass,共5个对象。
$ cat kustomization.yaml
namePrefix: prefix-
nameSuffix: -suffix
resources:
- cm1.yaml
- cm2.yaml
- secret.yaml
- pod.yaml
- storageclass.yaml
configurations:
- ./kustomizeconfig/skip-prefix.yaml
和配置(明确指定除配置映射之外的所有类型)。它也被称为 namePrefix
,但它同时适用于:prefix
和 suffix
:
$ cat kustomizeconfig/skip-prefix.yaml
namePrefix:
- path: metadata/name
apiVersion: v1
kind: Secret
- path: metadata/name
apiVersion: v1
kind: Pod
- path: metadata/name
apiVersion: v1
kind: StorageClass
最终 kustomize build .
看起来像:
$ kustomize build .
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: prefix-local-storage-suffix # modified
provisioner: kubernetes.io/no-provisioner
---
apiVersion: v1
kind: ConfigMap
metadata:
name: cm1 # skipped
---
apiVersion: v1
kind: ConfigMap
metadata:
name: cm2 # skipped
---
apiVersion: v1
kind: Secret
metadata:
name: prefix-secret-suffix # modified
---
apiVersion: v1
kind: Pod
metadata:
name: prefix-pod-suffix # modified
spec:
containers:
- image: image
name: pod
另一个可能的选择是使用 PrefixSuffixTransformer
plugin - 它在指定应添加 prefix
and/or suffix
和 fieldSpec
方面的工作方式不同
请在此问题 0519_b.
的功能测试中找到 example 和下面的最终结果还有一个 good answer on Whosebug 关于使用 PrefixSuffixTransformer
。