1

我有一个全新的(非常空的)AKS 集群。我想使用 helm 在不同的命名空间和不同的入口类中安装 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 入口控制器实例的正确方法是什么?

4

1 回答 1

5

我认为您设置了错误的值,因此类名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

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

于 2021-09-24T14:25:15.920 回答