【问题标题】:Vault Helm chart run with terraform does not create an ingress on kubernetes使用 terraform 运行的 Vault Helm 图表不会在 kubernetes 上创建入口
【发布时间】:2022-08-04 16:52:10
【问题描述】:

我正在尝试通过在 Terraform 之外运行 Vault Helm 图表来在 Kubernetes 集群上安装 Vault。由于某种原因,没有创建入口。 当我转发 pods 端口时,用户界面正常,所以我假设一切正常,但是入口不可用让我绊倒了。 编辑:运行 terraform apply 时没有错误。 如果还有其他地方我应该看,请告诉我。 这是我的 helm_release 资源:

  name       = \"vault\"
  repository = \"https://helm.releases.hashicorp.com\"
  chart      = \"vault\"

  namespace        = \"vault\"
  create_namespace = true

  set {
    name  = \"ui.enabled\"
    value = \"true\"
  }

  #Set ingress up to use cert-manager provided secret
  set {
    name  = \"ingress.enabled\"
    value = \"true\"
  }

  set {
    name  = \"ingress.annotations.cert-manager\\\\.io/cluster-issuer\"
    value = \"letsencrypt-cluster-prod\"
  }

  set {
    name  = \"ingress.annotations.kubernetes\\\\.io/ingress\\\\.class\"
    value = \"nginx\"
  }

  set {
    name  = \"ingress.tls[0].hosts[0]\"
    value = var.vault_hostname
  }

  set {
    name  = \"ingress.hosts[0].host\"
    value = var.vault_hostname
  }

  set {
    name  = \"ingress.hosts[0].paths[0]\"
    value = \"/\"
  }
}

我对所有这些技术都比较陌生,以前曾与 puppet 合作过,所以如果有人能指出我正确的方向,我将非常感激。

  • 是否有任何错误或它什么也没显示?
  • 运行 terraform apply 时没有错误。如果还有其他地方我应该看,请告诉我^^
  • 似乎为您提供了错误的值github.com/hashicorp/vault-helm/blob/main/templates/…。它应该是 server.ingress.enabled。

标签: kubernetes terraform hashicorp-vault terraform-provider-helm


【解决方案1】:

我实现了使用局部变量启用入口,这是工作示例

locals {
    values = {
        server= {
            ingress = {
              enabled = var.server_enabled
              labels = {
                traffic = "external"
              }
              ingressClassName = "nginx"
              annotations = {
                "kubernetes.io/tls-acme" =  "true"
                "nginx.ingress.kubernetes.io/ssl-redirect" = "true"
              }
              hosts = [{
                host = vault.example.com
                paths = ["/"]
              }]
              tls = [
                {
                  secretName = vault-tls-secret
                  hosts = ["vault.example.com"]
                }
              ]
            }
        }
    }
}
resource "helm_release" "vault" {
  name          = "vault"
  namespace     = "vault"
  repository = "https://helm.releases.hashicorp.com"
  chart      = "vault"
  version       = "0.19.0"
  create_namespace = true
  # other value to set
  #set { 
   # name = "server.ha.enabled"
    #value = "true"
  #}
    values = [
    yamlencode(local.values)
  ]
}

【讨论】:

  • 那是因为您在此处的 YAML 中有根密钥“服务器”。对于开源 helm 图表,artifacthub 帮助您找到 values.yaml 的正确结构,例如:artifacthub.io/packages/helm/hashicorp/…
  • 罪魁祸首是它在服务器下,这与局部变量无关。
  • 问题应该作为错字关闭,imo。
  • 我同意,它与局部变量无关,但要处理 helm 值的嵌套性质,它似乎很清楚
猜你喜欢
  • 2022-01-15
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 2019-04-26
  • 1970-01-01
  • 2020-10-11
  • 2021-09-10
  • 2019-07-08
相关资源
最近更新 更多