如何通过 Kustomize 替换注释中的变量?

问题描述 投票:0回答:2

有什么想法可以通过 Kustomize 替换变量吗?我只是想为每个覆盖使用不同的 ACCOUNT_ID 和 IAM_ROLE_NAME。

apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::${ACCOUNT_ID}:role/${IAM_ROLE_NAME}

提前致谢!

kubernetes kustomize
2个回答
16
投票

Kustomize 不使用“变量”。通常处理此问题的方法是在覆盖层中修补注释。也就是说,您可以从如下所示的基本目录开始:

base
├── kustomization.yaml
└── serviceaccount.yaml

其中

serviceaccount.yaml
包含您的
ServiceAccount
清单:

apiVersion: v1
kind: ServiceAccount
metadata:
    name: my-service-account
    annotations:
      eks.amazonaws.com/role-arn: "THIS VALUE DOESN'T MATTER"

并且

kustomization.yaml
看起来像:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: my-namespace

resources:
  - serviceaccount.yaml

然后在叠加层中,您可以使用补丁替换

eks.amazonaws.com/role-arn
注释。例如,如果您有一个名为
production
的覆盖层,您最终可能会得到以下布局:

.
├── base
│   ├── kustomization.yaml
│   └── serviceaccount.yaml
└── overlay
    └── production
        ├── kustomization.yaml
        └── patch_aws_creds.yaml

overlay/production/patch_aws_creds.yaml
看起来像:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: my-service-account
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::1234:role/production-role

并且

overlay/production/kustomization.yaml
看起来像:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - ../../base

patches:
  - patch_aws_creds.yaml

安装完毕后,运行...

kustomize build overlay/production

...将使用您的制作角色信息生成输出,等等,以用于您选择创建的任何其他覆盖。


如果您不喜欢策略合并补丁的格式,可以使用json补丁文档代替。这是您的

kustomization.yaml
中内联的样子:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - ../../base

patches:
  - target:
      version: v1
      kind: ServiceAccount
      name: my-service-account
    patch: |-
      - op: replace
        path: /metadata/annotations/eks.amazonaws.com~1role-arn
        value: arn:aws:iam::1234:role/production-role

不过,我认为这并不能真正给你带来任何好处。


3
投票

您可以使用 json-pointer: ~1 来解决这种情况

将路径中的 / 更改为 ~1:

路径:/metadata/annotations/eks.amazonaws.com~1role-arn

参考:https://jsonpatch.com/#json-pointer

© www.soinside.com 2019 - 2024. All rights reserved.