在 terraform for azure china 中为 helm 存储库指定代理

Specify proxy for helm repository in terraform for azure china

我正在尝试通过 terraform 将 helm chart 部署到中国的 Azure Kubernetes 服务。问题是我无法从 k8s.gcr.io/ingress-nginx 中提取图像。我需要按照 https://github.com/Azure/container-service-for-azure-china/blob/master/aks/README.md#22-container-registry-proxy 中的描述指定代理,但我不知道如何通过 terraform 执行此操作。在西欧,我的资源看起来像

resource "helm_release" "nginx_ingress" {
  name      = "ingress-nginx"
  chart     = "ingress-nginx"
  repository = "https://kubernetes.github.io/ingress-nginx"
  namespace = kubernetes_namespace.nginx_ingress.metadata[0].name

  set {
    name  = "controller.service.annotations.service\.beta\.kubernetes\.io/azure-load-balancer-resource-group"
    value = azurerm_public_ip.nginx_ingress_pip.resource_group_name
  }

  set {
    name  = "controller.service.loadBalancerIP"
    value = azurerm_public_ip.nginx_ingress_pip.ip_address
  }
}

如何在其中获取代理设置?非常感谢任何帮助。

AFIK,Terraform 的 Helm 提供程序尚不支持代理设置。 此线程下正在讨论一个拉取请求:https://github.com/hashicorp/terraform-provider-helm/issues/552

在实现此功能之前,您可以考虑其他临时解决方法,例如在您的 terraform 存储库中复制图表和 reference it from the helm provider

原来我在弄清楚如何以正确的方式修改 helm chart 时遇到了一些问题,而且解决方案不完全是代理配置,而是直接使用不同的存储库进行图像拉取。这有效:

resource "helm_release" "nginx_ingress" {
  name      = "ingress-nginx"
  chart     = "ingress-nginx"
  repository = "https://kubernetes.github.io/ingress-nginx"
  namespace = kubernetes_namespace.nginx_ingress.metadata[0].name

  set {
    name  = "controller.service.annotations.service\.beta\.kubernetes\.io/azure-load-balancer-resource-group"
    value = azurerm_public_ip.nginx_ingress_pip.resource_group_name
  }

  set {
    name  = "controller.service.loadBalancerIP"
    value = azurerm_public_ip.nginx_ingress_pip.ip_address
  }

  set {
    name = "controller.image.repository"
    value = "k8sgcr.azk8s.cn/ingress-nginx/controller"
  }
}

无论如何感谢您的意见!