我 有 一 个 Kubernetes 集群 和 一 个 应用 程序 , 我 试图 使用 Helm 在 集群 上 部署 该 应用 程序 。 我 正在 更改 的 模板 文件 是 _helpers.tpl
文件 。
有 一 个 特定 的 ConfigMap 值 , 我 的 集群 * * 没有 * * ( 假设 API_FLAG
) , 我 的 应用 程序 需要 运行 一 个 * 可选 的 作业 * ( 假设 publishapi
, 默认 设置 true
) , 该 作业 在 Values.yaml
文件 中 定义 。 还有 其他 ConfigMap 值 需要 存在 , 以 使 作业 成功 完成 , 然后 我 可以 进一步 添加 到 检查 用例 中 。
我 需要 创建 一 个 特定 的 工作 流 , 主要 检查 :
- 如果
API_FLAG
存在 于 我们 的 集群 中 , 则 验证 其他 ConfigMap 值 , 并且publishapi
作为 默认 值 (true
) 继续 , 但是 - 如果
API_FLAG
不 存在 于 我 的 群 集中 , 则 整个publishapi
步骤 不能 运行 , 即 , 就 像 它 被 设置 为false
一样 , - 且 在 任何 情况 下 都 不会 引发 错误 。
我 知道 如何 使用 和 调用 ConfigMap 值 , 但 我 无法 使用 带有 * ConfigMap 值 的 条件 * 作为 检查 。 下面 是 一 个 简单 的 代码 片段 , 可以 解释 此 问题 和 我 正在 尝试 的 操作 :
if (env.API_FLAG) {
// get other ConfigMap values/secrets from the environment
// set Values.publishapi -> true
} else {
// set Values.publishapi -> false
}
中 的 每 一 个
到 目前 为止 , 我 看到 的 关于 此 模板 的 唯一 文档 只 考虑 了 从 Values . yaml 文件 获取 变量 , 但 我 无法 获得 任何 文档 来 从 kubernetes 集群 本身 获取 ConfigMap 值 , 而 不会 引发 任何 错误 。
更多 阅读 链接 :
1条答案
按热度按时间okxuctiv1#
Kubernetes 没有 任何 " 集群 变量 " 或 " 集群 环境 变量 " 的 概念 , 甚至 像 " 这个 集群 的 名称 是 什么 " 这样 的 问题 也 必须 在 部署 时 通过 注入 它们 的 值 来 回答 。
在 Helm 上下 文 中 , 我 会 通过 为 每个 聚类 提供 一 个 单独 的 YAML 值 文件 来 解决 这个 问题 。 这 与 作为 图表 一 部分 的
values.yaml
文件 是 分开 的 。 然后 , 您 可以 直接 在 那里 指定 所 需 的 变量 :第 一 个
这些 文件 可以 与 部署 基础 结构 的 其余 部分 一起 签 入 源 代码 管理 。 如果 您 有 多 个 类似 的 服务 , 则 可以 使用 这些 文件 的 一 个 中央 副本 , 或者 使用 每个 图表 复制 它们 。
当 您 ( 或 您 的 部署 系统 ) 开始 部署 这些 文件 时 , 它 需要 使用
helm install -f
选项 传入 正确 的 值 文件 。格式