具有 2 个入口的 Kubernetes (nginx)
Kubernetes with 2 ingress (nginx)
我尝试为我的 Azure Kubernetes 集群 (AKS) 创建第二个入口。一种供公司内部使用,一种供客户使用。
第一个控制器由以下脚本构建:
https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.27.0/deploy/static/mandatory.yaml
和服务:
Nginx 的官方教程(https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/) 说我需要使用 --ingress-class 标志来分隔两个控制器。当创建两个控制器时,我需要引用 ingress.class 注释使用哪个控制器的每个资源。
第一个问题
这是有道理的,因为我可以创建两个具有路由规范的不同入口。但是我是否还需要在 Nginx 服务中引用控制器?
第二题
我在我的机器上编辑 mandatory.yaml 并通过本地 YAML 文件应用它。
所以我将 --ingress-class 标志传递给控制器的参数(从 mandatory.yaml 行 218 开始):
containers:
- name: nginx-ingress-controller
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:master
args:
- /nginx-ingress-controller
- --configmap=$(POD_NAMESPACE)/nginx-configuration
- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
- --udp-services-configmap=$(POD_NAMESPACE)/udp-services
- --publish-service=$(POD_NAMESPACE)/ingress-nginx
- --annotations-prefix=nginx.ingress.kubernetes.io
- --ingress-class=nginx-external
当我使用 --ingress-class=nginx-internal 重新部署 mandatory.yaml 时,将重新配置现有控制器,但不会部署第二个控制器。
我做错了什么?
对于 nginx 服务,您需要提供选择器和标签,以便它选择您的第二个 nginx 入口控制器 pods。
您刚刚更改了现有入口控制器名称为 nginx-ingress-controller
的现有部署。这就是为什么它重新配置您现有的入口 controller.You 需要使用 不同名称 创建新部署 yaml 并在新部署中添加 --ingress-class
标志的原因。
我建议为入口控制器 1 和入口控制器 2 创建两个不同的命名空间和两组不同的 yaml,并更改这些 yaml 中的名称、命名空间、标签和选择器。
我尝试为我的 Azure Kubernetes 集群 (AKS) 创建第二个入口。一种供公司内部使用,一种供客户使用。
第一个控制器由以下脚本构建:
https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.27.0/deploy/static/mandatory.yaml
和服务:
Nginx 的官方教程(https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/) 说我需要使用 --ingress-class 标志来分隔两个控制器。当创建两个控制器时,我需要引用 ingress.class 注释使用哪个控制器的每个资源。
第一个问题
这是有道理的,因为我可以创建两个具有路由规范的不同入口。但是我是否还需要在 Nginx 服务中引用控制器?
第二题
我在我的机器上编辑 mandatory.yaml 并通过本地 YAML 文件应用它。 所以我将 --ingress-class 标志传递给控制器的参数(从 mandatory.yaml 行 218 开始):
containers:
- name: nginx-ingress-controller
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:master
args:
- /nginx-ingress-controller
- --configmap=$(POD_NAMESPACE)/nginx-configuration
- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
- --udp-services-configmap=$(POD_NAMESPACE)/udp-services
- --publish-service=$(POD_NAMESPACE)/ingress-nginx
- --annotations-prefix=nginx.ingress.kubernetes.io
- --ingress-class=nginx-external
当我使用 --ingress-class=nginx-internal 重新部署 mandatory.yaml 时,将重新配置现有控制器,但不会部署第二个控制器。 我做错了什么?
对于 nginx 服务,您需要提供选择器和标签,以便它选择您的第二个 nginx 入口控制器 pods。
您刚刚更改了现有入口控制器名称为
nginx-ingress-controller
的现有部署。这就是为什么它重新配置您现有的入口 controller.You 需要使用 不同名称 创建新部署 yaml 并在新部署中添加--ingress-class
标志的原因。
我建议为入口控制器 1 和入口控制器 2 创建两个不同的命名空间和两组不同的 yaml,并更改这些 yaml 中的名称、命名空间、标签和选择器。