Kustomize nameSuffix 跳过某些资源

Sal*_*elo 7 kubernetes kustomize

我正在使用 Kustomize 来管理同一集群的多个变体。我正在使用nameSuffix选项为我的所有资源添加后缀:

nameSuffix: -mysfx
Run Code Online (Sandbox Code Playgroud)

我的问题是一切正常,但仅将此后缀添加到一个服务资源会给我带来问题。我的问题是应用程序(Patroni)与必须调用的服务交互:

CLUSTER-NAME-config
Run Code Online (Sandbox Code Playgroud)

所以我想从nameSuffix. 我知道由于此功能的设计方式,这是不可能的。我在 StackOverflow 和网络上阅读了几篇文章。nameSuffix我知道我可以跳过对一类资源的使用。所以我尝试输入我的kustomization.yaml行:

configurations:
- kustomize-config/kustomize-config.yaml
Run Code Online (Sandbox Code Playgroud)

跳过所有服务资源。然后在文件中kustomize-config/kustomize-config.yaml

nameSuffix:
- path: metadata/name
  apiVersion: v1
  kind: Service
  skip: true
Run Code Online (Sandbox Code Playgroud)

但这行不通。

有谁知道这个配置有什么问题吗?

然后假设我现在可以跳过nameSuffix仅使用服务资源,我还有其他两个服务要添加此后缀。我需要做什么才能添加nameSuffix到这两项服务而不是上面提到的服务?

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

moo*_*tte 3

跳过选定的kinds 不起作用,因为此功能尚未实现 - 来自GitHub 问题 519 上的评论

\n

这也是一个例子它应该是这样的(你尝试过的)

\n
\n

基于此评论,它适用于kind明确提到的 s:

\n
\n

该插件的配置当前面向指定要修改的类型,而忽略其他类型。

\n
\n

另外,根据我执行的一些测试,它只查找kinds,不查找名称或任何内容,因此只能kind包含整个内容。因此,你的问题的第二部分恐怕是不可能的(好吧,使用 kustomize,你可以使用sed例如并修改你需要的一切)。

\n

我创建了一个简单的结构并对其进行了测试:

\n
$ tree\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cm1.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 cm2.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomizeconfig\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 skip-prefix.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 pod.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 secret.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 storageclass.yaml\n\n1 directory, 7 files\n
Run Code Online (Sandbox Code Playgroud)\n

有两个configmap,pod,secret和storageclass,总共5个对象。

\n
$ cat kustomization.yaml \n\nnamePrefix: prefix-\nnameSuffix: -suffix\nresources:\n- cm1.yaml\n- cm2.yaml\n- secret.yaml\n- pod.yaml\n- storageclass.yaml\nconfigurations:\n- ./kustomizeconfig/skip-prefix.yaml\n
Run Code Online (Sandbox Code Playgroud)\n

和配置(明确指定除配置映射之外的所有类型)。它也被称为namePrefix,但它适用于:prefixsuffix

\n
$ cat kustomizeconfig/skip-prefix.yaml \n\nnamePrefix:\n- path: metadata/name\n  apiVersion: v1\n  kind: Secret\n- path: metadata/name\n  apiVersion: v1\n  kind: Pod\n- path: metadata/name\n  apiVersion: v1\n  kind: StorageClass\n
Run Code Online (Sandbox Code Playgroud)\n

最终kustomize build .看起来像:

\n
$ kustomize build .\n\napiVersion: storage.k8s.io/v1\nkind: StorageClass\nmetadata:\n  name: prefix-local-storage-suffix # modified\nprovisioner: kubernetes.io/no-provisioner\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: cm1 # skipped\n---\napiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: cm2 # skipped\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: prefix-secret-suffix # modified\n---\napiVersion: v1\nkind: Pod\nmetadata:\n  name: prefix-pod-suffix # modified\nspec:\n  containers:\n  - image: image\n    name: pod\n
Run Code Online (Sandbox Code Playgroud)\n
\n

另一个潜在的选择是使用PrefixSuffixTransformer插件- 它在指定什么prefix和/或suffix应该添加和fieldSpec在哪里方面的工作方式不同。

\n

请找个例子请在问题 0519_b 的功能测试中

\n

另外, StackOverflow 上已经有一个关于使用的很好的答案PrefixSuffixTransformer.

\n

  • 在我的例子中,这只是在指定的资源中添加了另一个 namePrefix 或 nameSuffix ,例如: `prefix-prefix-secret-suffix` 我切换到另一个策略,直接修补名称:https://github.com/kubernetes-sigs/ kustomize/问题/4156#issuecomment-909748440 (2认同)