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 添加到这两项服务而不是上面提到的服务?

如果对此有更好的解决方案,请告诉我。

跳过所选 kinds 不起作用,因为此功能未实现 - 来自 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,但它同时适用于:prefixsuffix:

$ 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 suffixfieldSpec 方面的工作方式不同

请在此问题 0519_b.

的功能测试中找到 example 和下面的最终结果

还有一个 good answer on Whosebug 关于使用 PrefixSuffixTransformer