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

cos*_*-14 7 kubernetes kustomize

有什么想法可以通过 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}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

lar*_*sks 16

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

\n
base\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 serviceaccount.yaml\n
Run Code Online (Sandbox Code Playgroud)\n

哪里serviceaccount.yaml包含你的ServiceAccount清单:

\n
apiVersion: v1\nkind: ServiceAccount\nmetadata:\n    name: my-service-account\n    annotions:\n      eks.amazonaws.com/role-arn: "THIS VALUE DOESN'T MATTER"\n
Run Code Online (Sandbox Code Playgroud)\n

kustomization.yaml像:

\n
apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\nnamespace: my-namespace\n\nresources:\n  - serviceaccount.yaml\n
Run Code Online (Sandbox Code Playgroud)\n

然后在叠加层中,您将eks.amazonaws.com/role-arn使用补丁替换注释。例如,如果您有一个名为production,您最终可能会得到以下布局:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 serviceaccount.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 overlay\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 production\n        \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n        \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 patch_aws_creds.yaml\n
Run Code Online (Sandbox Code Playgroud)\n

在哪里overlay/production/patch_aws_creds.yaml

\n
apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: my-service-account\n  annotations:\n    eks.amazonaws.com/role-arn: arn:aws:iam::1234:role/production-role\n
Run Code Online (Sandbox Code Playgroud)\n

overlay/production/kustomization.yaml像:

\n
apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\nresources:\n  - ../../base\n\npatches:\n  - patch_aws_creds.yaml\n
Run Code Online (Sandbox Code Playgroud)\n

有了这个,运行...

\n
kustomize build overlay/production\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
\n

如果您不喜欢策略合并补丁的格式,可以使用 json 补丁文档代替。这就是它在你的内联中的样子kustomization.yaml

\n
apiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\n\nresources:\n  - ../../base\n\npatches:\n  - target:\n      version: v1\n      kind: ServiceAccount\n      name: my-service-account\n    patch: |-\n      - op: replace\n        path: /metadata/annotations/eks.amazonaws.com~1role-arn\n        value: arn:aws:iam::1234:role/production-role\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n