1

假设我需要像这样创建环境变量或 ConfigMap 条目:

- name: JDBC_URL
  value: "jdbc:db2://alice-service-a:50000/db1"
- name: KEYCLOAK_BASE_URL
  value: "http://alice-keycloak:8080/auth"

名称前缀在哪里alice-。如何使用 Kustomize 执行此操作?

我实际使用的容器确实需要对其他容器的引用,这些容器是上述“变量”的字符串连接。

Kustomize 似乎vars无法做到这一点。文档条目Unstructured Edits似乎描述了这一点,并且位于名为“Eschewed Features”的标题下,所以我猜这不会发生。类似的功能请求,#775 支持 envsubst 样式变量扩展已关闭。

来自 Helm,这很容易。

如果我想从 Helm 迁移到 Kustomize,但需要创建一个 env 或 ConfigMap 条目,例如 eg jdbc:db2://${namePrefix}-service-b:${dbPort}/${dbName}(诚然是一个人为的例子),我有什么选择?

我猜我将不得不求助于 Kustomize 外部的功能,比如envsubst. 有没有将这些拼凑在一起的最佳实践,还是我自己写custom-deploy-script.sh

4

1 回答 1

2

恐怕我遇到了 Kustomize 的限制之一。

Kubernetes 配置管理的状态:一个未解决的问题 | 通过杰西孙 | Argo Project在“Kustomize: The Bad”下有这样的说法:

没有参数和模板。使 kustomize 应用程序具有如此可读性的相同属性也可能使其非常受限。例如,我最近试图让 kustomize CLI 为自定义资源而不是部署设置图像标签,但无法做到。Kustomize 确实有一个“变量”的概念,它看起来很像参数,但不知何故不是,只能在 Kustomize 认可的字段路径白名单中使用。我觉得这是一个解决方案,尽管让困难的事情变得容易,但最终却让简单的事情变得困难。

相反,我已经开始使用gomplate:除了 Kustomize 之外,用于模板渲染的灵活命令行工具来解决上述挑战,但是必须使用两个不适合一起工作的工具并不理想。

编辑:我们最终为此使用ytt而不是gomplate.

我强烈推荐这篇文章:Kubernetes 配置管理的状态:一个未解决的问题。很高兴知道我不是唯一一个遇到这个障碍的人。

于 2021-01-21T09:40:01.227 回答