kubernetes 使用群集ConfigMap值作为Helm模板中的条件检查

6ie5vjzr  于 2022-11-21  发布在  Kubernetes
关注(0)|答案(1)|浏览(198)

我 有 一 个 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 值 , 而 不会 引发 任何 错误 。
更多 阅读 链接 :

okxuctiv

okxuctiv1#

Kubernetes 没有 任何 " 集群 变量 " 或 " 集群 环境 变量 " 的 概念 , 甚至 像 " 这个 集群 的 名称 是 什么 " 这样 的 问题 也 必须 在 部署 时 通过 注入 它们 的 值 来 回答 。
在 Helm 上下 文 中 , 我 会 通过 为 每个 聚类 提供 一 个 单独 的 YAML 值 文件 来 解决 这个 问题 。 这 与 作为 图表 一 部分 的 values.yaml 文件 是 分开 的 。 然后 , 您 可以 直接 在 那里 指定 所 需 的 变量 :
第 一 个
这些 文件 可以 与 部署 基础 结构 的 其余 部分 一起 签 入 源 代码 管理 。 如果 您 有 多 个 类似 的 服务 , 则 可以 使用 这些 文件 的 一 个 中央 副本 , 或者 使用 每个 图表 复制 它们 。
当 您 ( 或 您 的 部署 系统 ) 开始 部署 这些 文件 时 , 它 需要 使用 helm install -f 选项 传入 正确 的 值 文件 。

kubectl config use-context qa
helm upgrade my-chart . -f values.qa.yaml
...
kubectl config use-context prod
helm upgrade my-chart . -f values.prod.yaml

格式

相关问题