【问题标题】:Helm package deployment using Terraform使用 Terraform 部署 Helm 包
【发布时间】:2021-01-28 01:48:50
【问题描述】:

我已经使用 Terraform 设置了我的 Azure Kubernetes 集群,它运行良好。

我尝试使用 Helm 部署包,但无法部署并出现以下错误。

Error: chart "stable/nginx-ingress" not found in https://kubernetes-charts.storage.googleapis.com repository

注意:我也尝试了其他软件包,但我无法使用下面的“Terraform 资源”进行部署是 Terraform 代码。我使用 helm 命令尝试了本地 helm 包,它可以工作。我认为 Terraform 掌舵资源的问题。 “nginx”是一个示例包,无法使用 Terraform 部署任何包。

resource "azurerm_kubernetes_cluster" "k8s" {
  name                = var.aks_cluster_name
  location            = var.location
  resource_group_name = var.resource_group_name
  dns_prefix          = var.aks_dns_prefix
  kubernetes_version  = "1.19.0"
  # private_cluster_enabled = true
  linux_profile {
    admin_username = var.aks_admin_username
    ssh_key {
      key_data = var.aks_ssh_public_key
    }
  }
  default_node_pool {
    name                = var.aks_node_pool_name
    enable_auto_scaling = true
    node_count          = var.aks_agent_count
    min_count           = var.aks_min_agent_count
    max_count           = var.aks_max_agent_count
    vm_size             = var.aks_node_pool_vm_size
  }
  service_principal {
    client_id     = var.client_id
    client_secret = var.client_secret
  }

#   tags = data.azurerm_resource_group.rg.tags
}

provider "helm" {
  version = "1.3.2"
  kubernetes {
    host = azurerm_kubernetes_cluster.k8s.kube_config[0].host
    client_key             = base64decode(azurerm_kubernetes_cluster.k8s.kube_config[0].client_key)
    client_certificate     = base64decode(azurerm_kubernetes_cluster.k8s.kube_config[0].client_certificate)
    cluster_ca_certificate = base64decode(azurerm_kubernetes_cluster.k8s.kube_config[0].cluster_ca_certificate)
    load_config_file       = false
  }
}

resource "helm_release" "nginx-ingress" {
  name        = "nginx-ingress-internal"
  repository  = "https://kubernetes-charts.storage.googleapis.com"
  chart       = "stable/nginx-ingress"
  set {
        name  = "rbac.create"
        value = "true"
    }
}

【问题讨论】:

    标签: terraform kubernetes-helm azure-aks


    【解决方案1】:

    您应该跳过图表名称中的stable:它是一个存储库名称,但您没有定义掌舵存储库。你的resource 应该是这样的:

    resource "helm_release" "nginx-ingress" {
      name        = "nginx-ingress-internal"
      repository  = "https://kubernetes-charts.storage.googleapis.com"
      chart       = "nginx-ingress"
      ...
    }
    

    相当于helm命令:

    helm install nginx-ingress-internal nginx-ingress --repo https://kubernetes-charts.storage.googleapis.com 
    

    您也可以使用repository_config_path 定义存储库。

    【讨论】:

    • 谢谢。我有包含大量自定义图表的现有代码,并且所有存储库都指向“repository =”helm.cyberproof.io:8080“”并且出现错误。有什么想法吗?
    • 网址应包含协议,即http://helm.cyberproof.io:8080
    • 我有这样的代码资源 "helm_release" "clc" { name = "clc-release" repository = "helm.cyberproof.io:8080" chart = "clc" version = "1.1.71-axa" dependency_update = 真等待 = 假超时 = 1800 }
    猜你喜欢
    • 2020-09-18
    • 1970-01-01
    • 2019-09-04
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    • 2018-11-08
    • 2020-04-21
    相关资源
    最近更新 更多