【问题标题】:How to pass output from terraform to Helm subchart如何将 terraform 的输出传递到 Helm 子图
【发布时间】:2021-05-31 10:52:01
【问题描述】:

我正在使用 0.14.2 Terraform 版本和 1.3.2 Helm 提供程序。

我有一个 terraform 任务,我在其中获得输出,然后在掌舵图中使用。到目前为止,一切都很好。 在我执行 de helm deploy 的任务中,我设置了我必须使用的 var:

resource "helm_release" "kong-deploy" {
  for_each   =  local.ob

  chart      = "./helm-charts/kong"
  name       = "kong"
  namespace  = each.value
  create_namespace = true
  version    = "platform-2.10"
  timeout = 30
  values = [file("./helm-values/${local.environment}/kong/kong-${local.environment}-${each.value}.yaml")]
   set {
      name  = "WORKER_NODE"
      value = aws_eks_node_group.managed_workers[each.value].node_group_name
      type  = "string"
    }
}

树目录就是这样,我必须在 postgres 子图中使用 WORKER_NODE 变量。

├── charts
│   └── postgres
│       ├── Chart.yaml
│       ├── templates
│       │   ├── deployment.yaml
│       │   ├── env.yaml
│       │   └── service.yaml
│       └── values.yaml
├── Chart.yaml
├── files
│   └── purgeKongService.sh
├── templates
│   ├── configmap.yaml
│   ├── deployment.yaml
│   ├── env.yaml
│   ├── ingress.yaml
│   └── service.yaml
└── values.yaml

我尝试像使用其他图表一样使用此 var,但没有成功:

nodeSelector:
        eks.amazonaws.com/nodegroup: "{{ .Values.WORKER_NODE }}"

如何将此变量传递给子图表?

【问题讨论】:

    标签: kubernetes terraform kubernetes-helm


    【解决方案1】:

    如果我理解这一点,您想访问子图表内的父图表值。为此,您可以将其设置为全局值或单独定义子图表值。在这种情况下,我会将其设置为全局值:

    values.yaml:

        global:
          WORKER_NODE: <default value>
    

    从那里,在您的 TF 代码中,您可以通过 global.WORKER_NODE 设置它以传递给 kong 图表和 postgres 子图表。

    此外,在命名图表值时最好使用驼峰命名法。所以你应该使用workerNode,而不是WORKER_NODE

    最佳实践:https://helm.sh/docs/chart_best_practices/values/

    子图和全局:https://helm.sh/docs/chart_template_guide/subcharts_and_globals/#global-chart-values

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 2020-12-20
      • 2021-08-29
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      相关资源
      最近更新 更多