使用 Terraform 部署 Helm 包

Helm package deployment using Terraform

我已经使用 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"
    }
}

您应该跳过图表名称中的 stable:它是一个存储库名称,但您没有定义 helm 存储库。您的 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.

定义存储库