在 kustomize 中选择性应用名称前缀/名称后缀

cod*_*ud9 9 kubernetes kustomize

目前我们正在使用 ${HOME}/bin/kustomize edit set nameprefix prefix1

但它正在向我们的所有资源(例如,deployment.yaml 和 service.yaml)添加 nameprefix。

我们只想将 nameprefix 应用于deployment.yaml,而不将其应用于service.yaml

Mar*_*ark 12

发布以获得更好的可见性:

\n

如果您正在使用

\n
kustomize edit set nameprefix prefix1\n
Run Code Online (Sandbox Code Playgroud)\n

此命令将在当前的kustomization内设置namePrefix。\n如问题中所述 - 这就是它的工作方式, namePrefix将用于kustomization.yaml内的所有指定资源。

\n

请考虑使用覆盖和自定义基础的思想的以下场景。

\n
Tested with:\nkustomize/v4.0.1\n
Run Code Online (Sandbox Code Playgroud)\n

基础声明共享的资源和设置,覆盖声明额外的差异。

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 [deployment.yaml]  Deployment nginx\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 [kustomization.yaml]  Kustomization \n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 [service.yaml]  Service nginx\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 prod\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 [kustomization.yaml]  Kustomization \n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 kustomizeconfig\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 [deploy-prefix-transformer.yaml]  PrefixSuffixTransformer customPrefixer\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • 基础:通用文件
  • \n
\n
#deployment.yaml\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: nginx\nspec:\n  selector:\n    matchLabels:\n      run: nginx\n\n#service.yaml\napiVersion: v1\nkind: Service\nmetadata:\n  name: nginx\n  labels:\n    run: nginx\n\n#kustomization.yaml\nresources:\n- deployment.yaml\n- service.yaml\napiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • 覆盖/产品:kustomization.yaml
  • \n
\n
\napiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\nbases:\n- ../../base\nnameSuffix: -Suffix1\ntransformers:\n- ./kustomizeconfig/deploy-prefix-transformer.yaml\n\n
Run Code Online (Sandbox Code Playgroud)\n
    \n
  • overlay/prod/kustomizeconfig:deploy-prefix-transformer.yaml
  • \n
\n
apiVersion: builtin\nkind: PrefixSuffixTransformer\nmetadata:\n  name: customPrefixer\nprefix: "deploymentprefix-"\nfieldSpecs:\n- kind: Deployment\n  path: metadata/name\n
Run Code Online (Sandbox Code Playgroud)\n

正如你所看到的,使用这个结构和内置插件PrefixSuffixTransformer你可以获得期望的效果:

\n
kustomize build overlay/prod/\n
Run Code Online (Sandbox Code Playgroud)\n
apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    run: nginx\n  name: nginx-Suffix1\n---\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: deploymentprefix-nginx-Suffix1\nspec:\n  selector:\n    matchLabels:\n      run: nginx\n
Run Code Online (Sandbox Code Playgroud)\n

此配置 (overlay/prod/kustomization.yaml) 会将nameSuffix: -Suffix1应用于目录中指定的所有资源,并使用 PrefixSuffixTransformer在此特定示例中添加前缀:“deploymentprefix-”部署.metadata.name

\n
apiVersion: builtin\nkind: PrefixSuffixTransformer\nmetadata:\n  name: customPrefixer\nprefix: "deploymentprefix-"\nfieldSpecs:\n- kind: Deployment\n  path: metadata/name\n\n /kustomizeconfig/deploy-prefix-transformer.yaml\n\n
Run Code Online (Sandbox Code Playgroud)\n


jt9*_*t97 2

有关于这个的github 问题

是否可以让 kustomization 文件避免向几种类型添加前缀?

@jbrette 提供了 2 个示例,您可以使用它们来实现您所需要的。

此外,您还可以查看这些拉取请求:

  • 这应该与什么版本的“kustomize”一起使用?我刚刚用“kustomize/v3.8.7”测试了它,它似乎根本不起作用。哦,我刚刚注意到他们关闭了两个 PR 而没有合并。悲伤的脸。 (2认同)