在同一 AKS 群集中安装多个 nginx 入口控制器实例

Installing multiple nginx ingress controller instances in the same AKS cluster

我有一个全新的(空的)AKS 集群。我想使用 helm 在不同的命名空间和不同的入口 class 安装 nginx 入口控制器的两个实例。

我从第一个开始:

helm install ingress1 ingress-nginx/ingress-nginx --namespace namespace1 --set controller.ingressClass=class1

NAME: ingress1
LAST DEPLOYED: Fri Sep 24 20:46:28 2021
NAMESPACE: namespace1
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The ingress-nginx controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.

一切顺利

现在我选择第二个:

helm install ingress2 ingress-nginx/ingress-nginx --namespace namespace2 --set controller.ingressClass=class2

Error: rendered manifests contain a resource that already exists. Unable to continue with install: IngressClass "nginx" in namespace "" exists and cannot be imported into the current release: invalid ownership metadata; annotation validation error: key "meta.helm.sh/release-name" must equal "ingress2": current value is "ingress1"; annotation validation error: key "meta.helm.sh/release-namespace" must equal "namespace2": current value is "namespace1"

在同一集群中安装多个 nginx ingress controller 实例的正确方法是什么?

我认为您设置了错误的值,因此 class 名称在两个安装中都是 nginx。看看这里的模板:controller-ingressclass

如果您使用的是官方 ingress-nginx Helm 存储库:https://kubernetes.github.io/ingress-nginx 然后尝试设置为:controller.ingressClassResource.name=class1|class2 而不是:

helm install ingress1 ingress-nginx/ingress-nginx --namespace namespace1 --set controller.ingressClassResource.name=class1

helm install ingress2 ingress-nginx/ingress-nginx --namespace namespace2 --set controller.ingressClassResource.name=class2

根据您的需要,您可能还需要更改其他值of the ingressClassResource