使用Terraform进行头盔包部署

时间:2020-10-13 17:15:21

标签: terraform kubernetes-helm azure-aks

我已使用Terraform设置了Azure Kubernetes群集,并且运行良好。

我尝试使用 Helm 部署软件包,但无法部署低于错误的级别。

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

注意:我也尝试了其他软件包,但无法使用下面的“ Terraform Resource”进行部署的是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"
    }
}

1 个答案:

答案 0 :(得分: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来定义存储库。