【问题标题】:Selectively apply nameprefix/namesuffix in kustomize在 kustomize 中选择性地应用 nameprefix/namesuffix
【发布时间】:2020-10-06 01:32:53
【问题描述】:

目前我们正在使用 ${HOME}/bin/kustomize 编辑集 nameprefix prefix1

但它正在为我们所有的资源(如 deployment.yaml 和 service.yaml)添加名称前缀。

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

【问题讨论】:

  • 你能解决你的问题吗?如果没有 - 请在您的具体示例中提供更多详细信息/yamls。

标签: kubernetes kustomize


【解决方案1】:

发布以提高知名度:

如果您正在使用

kustomize edit set nameprefix prefix1

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

请考虑以下场景,使用 overlaybase 与自定义。

Tested with:
kustomize/v4.0.1

Base 声明共享的资源和设置,而 Overlay 声明其他差异。

.
├── base
│   ├── [deployment.yaml]  Deployment nginx
│   ├── [kustomization.yaml]  Kustomization 
│   └── [service.yaml]  Service nginx
└── prod
    ├── [kustomization.yaml]  Kustomization 
    └── kustomizeconfig
        └── [deploy-prefix-transformer.yaml]  PrefixSuffixTransformer customPrefixer
  • base:常用文件
#deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      run: nginx

#service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    run: nginx

#kustomization.yaml
resources:
- deployment.yaml
- service.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
  • 覆盖/产品:kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../../base
nameSuffix: -Suffix1
transformers:
- ./kustomizeconfig/deploy-prefix-transformer.yaml

  • overlay/prod/kustomizeconfig:deploy-prefix-transformer.yaml
apiVersion: builtin
kind: PrefixSuffixTransformer
metadata:
  name: customPrefixer
prefix: "deploymentprefix-"
fieldSpecs:
- kind: Deployment
  path: metadata/name

如你所见,使用这个结构和内置插件PrefixSuffixTransformer可以得到想要的效果:

kustomize build overlay/prod/
apiVersion: v1
kind: Service
metadata:
  labels:
    run: nginx
  name: nginx-Suffix1
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deploymentprefix-nginx-Suffix1
spec:
  selector:
    matchLabels:
      run: nginx

此配置 (overlay/prod/kustomization.yaml) 会将 nameSuffix: -Suffix1 应用于 base 目录中指定的所有资源,并使用 PrefixSuffixTransformer 将添加到此具体示例 prefix: "deploymentprefix-"deployment.metadata.name

apiVersion: builtin
kind: PrefixSuffixTransformer
metadata:
  name: customPrefixer
prefix: "deploymentprefix-"
fieldSpecs:
- kind: Deployment
  path: metadata/name

 /kustomizeconfig/deploy-prefix-transformer.yaml

【讨论】:

    【解决方案2】:

    关于那个有github issue

    是否可以让自定义文件避免为少数几种添加前缀?

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

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

    【讨论】:

    • 这应该使用哪个版本的kustomize?我刚刚用kustomize/v3.8.7 测试了它,它似乎根本不起作用。哦,我刚刚注意到他们没有合并就关闭了两个 PR。悲伤的脸。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2020-01-01
    • 2017-03-19
    • 1970-01-01
    相关资源
    最近更新 更多