具有 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

和服务:

https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.27.0/deploy/static/provider/cloud-generic.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 时,将重新配置现有控制器,但不会部署第二个控制器。 我做错了什么?

  1. 对于 nginx 服务,您需要提供选择器和标签,以便它选择您的第二个 nginx 入口控制器 pods。

  2. 您刚刚更改了现有入口控制器名称为 nginx-ingress-controller 的现有部署。这就是为什么它重新配置您现有的入口 controller.You 需要使用 不同名称 创建新部署 yaml 并在新部署中添加 --ingress-class 标志的原因。

我建议为入口控制器 1 和入口控制器 2 创建两个不同的命名空间和两组不同的 yaml,并更改这些 yaml 中的名称、命名空间、标签和选择器。