目标:部署一个面向 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"
}
错误: 在存储库中找不到图表版本。
答案 0 :(得分:0)
我遇到了同样的问题,目前文档根本没有帮助。我确实在 stack 上找到了另一个答案,该答案通过使用 null_resource 以一种骇人听闻的方式解决了这个问题。我认为 ACR 的 OCI 可能尚未得到正确支持,因此您必须在使用已弃用的 API 或 helm3 之间进行选择,目前 ACR 处于试验阶段。我还没有找到另一种添加 Repo URL 的方法:(