带2个入口的Kubernetes(nginx)

带2个入口的Kubernetes(nginx),kubernetes,nginx-ingress,Kubernetes,Nginx Ingress,我尝试为我的azure Kubernetes集群(AKS)创建第二个入口。一个供公司内部使用,一个供客户使用 第一个控制器由以下脚本构建: 以及服务: Nginx()的官方教程说,我需要使用--ingres类标志来分隔这两个控制器。当创建两个控制器时,我需要引用ingress.class注释使用哪个控制器的每个资源 第一个问题 这很有意义,因为我可以使用路由规范创建两个不同的入口。但我是否也需要在Nginx服务中引用控制器 第二个问题 我在我的机器上编辑mandatory.yaml,并通过本

我尝试为我的azure Kubernetes集群(AKS)创建第二个入口。一个供公司内部使用,一个供客户使用

第一个控制器由以下脚本构建:

以及服务:

Nginx()的官方教程说,我需要使用--ingres类标志来分隔这两个控制器。当创建两个控制器时,我需要引用ingress.class注释使用哪个控制器的每个资源

第一个问题 这很有意义,因为我可以使用路由规范创建两个不同的入口。但我是否也需要在Nginx服务中引用控制器

第二个问题 我在我的机器上编辑mandatory.yaml,并通过本地yaml文件应用它。 因此,我将--ingress类标志传递给控制器的参数(从mandatory.yaml第218行开始):

当我使用--ingress class=nginx internal将其重新部署为mandatory.yaml时,将重新配置现有控制器,但不会部署第二个控制器。 我做错了什么

  • 对于nginx服务,您需要提供选择器和标签,以便它选择第二个nginx入口控制器吊舱

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


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

    我收到以下错误:7 leaderelection.go:367]更新锁失败:configmaps“入口控制器领导人内部网nginx internal”禁止:用户“system:serviceaccount:ingress nginx:nginx ingress serviceaccount”无法更新命名空间“ingress nginx”中API组“”中的资源“configmaps”。我错了什么?有一个名为“nginx入口角色”的角色。在该角色的resourceNames部分添加“ingress controller leader intranet nginx internal”。@ArghyaSadhu我理解添加“ingress controller leader intranet nginx internal”资源名称会让第二个ingress访问权限更新configmap,但您能解释一下这一问题的根本原因吗?第一个入口似乎在更新其configmap时没有问题。
    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