有没有办法从另一个values.yaml文件渲染helm图表values.yaml文件

问题描述 投票:0回答:1

我正在寻找从

nginx ingress
安装
argocd
。在
argocd
应用程序中,引用 nginx-ingress` 公共 helm 图表作为带有 2 个自定义值文件的源。 1 具有跨环境的共同值,2 具有特定值。 例如:1.common-values.yaml

controller:
    ingressClass: nginx-internal
    service:
        internal:
            loadBalancerIP: {{ .Values.public_ip }}
  1. 开发特定.yaml 文件
public_ip: "1.2.3.4" 

最后我想要它看起来像这样

controller:
   ingressClass: nginx-internal
   service:
       internal:
           loadBalancerIP: 1.2.3.4

我不想在两个

values.yaml
文件中保留相同的 yaml 引用,这也是可能的,因为我将从我的 terraform 中将特定值输出为 json。 例如 test.json

{
    "internal_ip": "1.2.3.4"
}

另一种可能的方法是将一个值 yaml 文件保留在 helm 模板文件夹中并传递 value.yaml 文件并生成一个包含所有渲染值的新 yaml 文件,但在我的情况下,我无法使用入口 helm 图表模板文件,寻找一个值文件本身的替代方案。

我尝试在values.yaml中创建像$public_ip这样的变量,并尝试从另一个值传递值,但helm图表没有从values.yaml文件渲染

kubernetes-helm azure-aks argocd gitops
1个回答
0
投票

使用普通的 helm 命令,您只需嵌套几个值文件,最新的文件将具有优先级,即如果您的基本 value.yaml 文件包含内容:

controller:
    ingressClass: nginx-internal
    service:
        internal:
            loadBalancerIP: placeholder_ip

并且您的 Specific-values.yaml 文件包含内容:

controller:
    service:
        internal:
            loadBalancerIP: 1.2.3.4

并且您仅引用特定值.yaml(即使您不引用它,默认情况下也会将基数用作第一个条目),结果将是:

controller:
    ingressClass: nginx-internal
    service:
        internal:
            loadBalancerIP: 1.2.3.4

我相信你正在寻找什么。

最后,如果出于任何原因您需要在传递给 helm 命令之前可视化合并结果,您可以使用 Reliza CLI 的 helmvalues 功能 - https://github.com/relizaio/reliza-cli#18-use-case -覆盖并获取合并舵图值

© www.soinside.com 2019 - 2024. All rights reserved.