如何将带有值的容器添加到 helm release

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

使用 helm_release 提供程序,我想将 sidecar 容器附加到 helm 版本。具体来说,我想将 sqlproxy 容器附加到 keto 版本。以下是我的初步尝试,但它没有传递 sqlproxy config 的值。如何将带有值的容器添加到 helm 版本中?

locals {
  db_username = "postgres"
  sql_port = "5432"
}

resource "helm_release" "keto" {
  name       = "ory"
  repository = "https://k8s.ory.sh/helm/charts"
  chart      = "keto"

  values = [
    <<EOT
    serviceAccount:
      create: false
      name: ${module.service_account.value.id}
    job:
      serviceAccount:
        create: false
        name: ${module.service_account.value.id}
    keto:
      config:
        dsn: postgres://${local.db_username}:${random_password.password.result}@pg-sqlproxy-gcloud-sqlproxy:${local.sql_port}/db
    deploy:
      extraContainers:
        name: gcloud-sqlproxy
        image: # what to place here? how to add extra values here?
    EOT
  ]
}

keto 的文档显示它提供了一个

deployment:extraContainers
字段,我可以在其中设置容器的名称和图像;但是,不确定如何传递 sqlproxy 所需的附加值

terraform kubernetes-helm ory
1个回答
0
投票

如何使用任何特定设置都是相当特定于图表的,并且对于添加边车容器之类的事情没有通用的方法。

在此特定图表中,

extraContainers
设置用作

      containers:
        - name: {{ .Chart.Name }}
          # ... about another 100 lines of settings ...
        {{- if $extraContainers }}
          {{- tpl $extraContainers . | nindent 8 }}
        {{- end }}

也就是说,如果设置了

extraContainers
,那么它一定是一个字符串;它通过 Helm
tpl
扩展函数运行,以使用顶级 Helm 对象渲染 Go 文本/模板标记;并且结果缩进到部署规范中的正确级别。

在您显示的 YAML 中,您需要以

extraContainers:
结束
|
行,创建 YAML 块标量(多行字符串)。在其下方,您需要放置容器规范的完整 YAML 列表。如果您愿意,您可以在其中包含模板块。

deploy:
  extraContainers: |
    - name: gcloud-sqlproxy
      image: gcr.io/cloudsql-docker/gce-proxy
      env:
        - name: KETO_CONFIG_DSN
          value: {{ .Values.keto.config.dsn }}

请注意,您已经为代理提供了几个指向单独 Helm 图表的链接。这本质上会为其创建一个单独的 Helm 版本和 Kubernetes 部署等对象;它无法将其作为 sidecar 附加到其他部署,并且您无法在 sidecar 容器配置中使用该图表的任何设置。

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