使用 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.
定义存储库
我已经使用 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.
定义存储库