0

我正在尝试通过 terraform 将掌舵图部署到中国的 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
  }
}

如何在其中获取代理设置?任何帮助是极大的赞赏。

4

2 回答 2

0

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

在实现此功能之前,您可以考虑其他临时解决方法,例如在您的 terraform repo 上复制图表并从 helm provider 引用它

于 2021-03-11T07:46:34.430 回答
0

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

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"
  }
}

无论如何,谢谢您的意见!

于 2021-03-11T14:55:29.410 回答