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}
提前致谢!
解决方案
Kustomize 不使用“变量”。您通常处理此问题的方法是修补叠加层中的注释。也就是说,您可以从如下所示的基本目录开始:
base
├── kustomization.yaml
└── serviceaccount.yaml
其中serviceaccount.yaml
包含您的ServiceAccount
清单:
apiVersion: v1
kind: ServiceAccount
metadata:
name: my-service-account
annotions:
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
不过,我不认为这真的能给你带来任何好处。
推荐阅读
- c++ - 不能在 RapidJSON 函数调用中使用 std::string 变量
- php - 附加自定义标签时有效的 json 输出
- spring-boot - Letsencrypt SSL 证书在没有 url 前缀 https:// 的情况下不起作用
- javascript - WebKit userContentController:didReceiveScriptMessage:iOS 13 未调用
- java - 为不同存储库中的源代码和测试代码生成代码覆盖率
- javascript - 如何从用户输入字段中获取数据并在不提交的情况下向用户显示?
- html - CSS - 如何在可调整大小的图像上保持固定点?
- typescript - ts-node 和 tsc 有什么区别
- node.js - 使用 multer 包在 nodejs 中处理每个路由的目的地
- c# - 序列化 xml 中的对象列表如何工作?