在 AKS 上使用 Terraform 从 ACR 部署 Helm 图表时出错

时间:2021-06-28 10:01:40

标签: kubernetes-helm azure-aks terraform-provider-azure azure-container-registry

目标:部署一个面向 Azure kubernetes 集群的舵图 Terraform。图表必须从 Azure 容器注册表中提取。

将舵图推送到 ACR 的步骤:

helm 注册表登录命令: 回声 $spPassword | helm 注册表登录 .azurecr.io --username --password-stdin

将图表保存到本地 从包含 helm chart.yml、values.yaml 和其他目录的目录中: 掌舵图表保存。 .azurecr.io/:

将图表推送到 Azure 容器存储库 掌舵推送 .azurecr.io/:

我能够从注册表中提取图表,再次导出到本地,并且可以手动成功安装。

接下来是基于 Terraform 的部署方法。下面是使用的代码片段:

provider "azurerm" {
  version = "~>2.0"
  features {}
}

data "azurerm_kubernetes_cluster" "credentials" {
  name                = "k8stest"
  resource_group_name = "azure-k8stest"
}

provider "helm" {
  kubernetes {
    host                   = data.azurerm_kubernetes_cluster.credentials.kube_config.0.host
    client_certificate     = base64decode(data.azurerm_kubernetes_cluster.credentials.kube_config.0.client_certificate)
    client_key             = base64decode(data.azurerm_kubernetes_cluster.credentials.kube_config.0.client_key)
    cluster_ca_certificate = base64decode(data.azurerm_kubernetes_cluster.credentials.kube_config.0.cluster_ca_certificate)

  }
}

resource "helm_release" "test-tf" {
  name       = "test-twinkle"
  repository  = "https://<myacrname>.azurecr.io/helm/v1/repo"
  repository_username = <serviceprincipal appid>
  repository_password = <serviceprincipal password>
  chart      = <chart name with which it was pushed to ACR>
  version    = <chart version with which it was pushed to ACR>
  namespace  = "test-dev"
  create_namespace  = "true"
}

错误: 在存储库中找不到图表版本。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,目前文档根本没有帮助。我确实在 stack 上找到了另一个答案,该答案通过使用 null_resource 以一种骇人听闻的方式解决了这个问题。我认为 ACR 的 OCI 可能尚未得到正确支持,因此您必须在使用已弃用的 API 或 helm3 之间进行选择,目前 ACR 处于试验阶段。我还没有找到另一种添加 Repo URL 的方法:(

相关问题