【问题标题】:Multiple Nginx Ingress controller in same namespace?同一命名空间中有多个 Nginx Ingress 控制器?
【发布时间】:2021-09-22 06:45:35
【问题描述】:

据我了解,我们可以使用 Ingress 类注解在一个集群中使用多个 Nginx 入口控制器。但是我有一个用例,我需要在同一个命名空间中使用多个入口控制器,以使用创建的相应入口规则在同一个命名空间中公开不同的服务。 我按照https://kubernetes.github.io/ingress-nginx/deploy/#azure 创建了一个示例入口控制器。 如果我想在同一个命名空间中有多个 Nginx 入口控制器,我应该修改所有参数。

提前致谢

【问题讨论】:

    标签: nginx kubernetes kubernetes-ingress azure-aks nginx-ingress


    【解决方案1】:

    从您的帖子中不清楚您是否打算部署多个 nginx-ingress 控制器或不同的入口控制器。但是,两者都可以部署在同一个命名空间中。

    在部署不同的入口控制器的情况下,部署在同一个命名空间中并使用类注释来指定哪个入口规则由哪个入口控制器处理应该很容易。 但是,如果您想在同一个命名空间中部署多个 nginx-ingress-controllers,则必须使用将名称/标签或其他标识符更新为不同的东西。

    例如 - 你提到的链接,https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.47.0/deploy/static/provider/cloud/deploy.yaml , 需要更新为 -

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      labels:
        helm.sh/chart: ingress-nginx-3.33.0
        app.kubernetes.io/name: ingress-nginx-internal
        app.kubernetes.io/instance: ingress-nginx-internal
        app.kubernetes.io/version: 0.47.0
        app.kubernetes.io/managed-by: Helm
        app.kubernetes.io/component: controller
      name: ingress-nginx-internal
      namespace: ingress-nginx
    automountServiceAccountToken: true
    

    假设我们将第二个 nginx-ingress-controller 称为 ingress-nginx-internal;同样,您的链接中创建的所有资源都需要修改并将它们部署在同一个命名空间中。

    此外,您必须更新部署参数以指定 ingress.class,您的控制器将针对 -

    spec:
      template:
         spec:
           containers:
             - name: nginx-ingress-internal-controller
               args:
                 - /nginx-ingress-controller
                 - '--ingress-class=nginx-internal'
                 - '--configmap=ingress/nginx-ingress-internal-controller'
    

    链接https://kubernetes.github.io/ingress-nginx/user-guide/multiple-ingress/ 解释了如何控制多个入口控制器。

    【讨论】:

    • 感谢您的回复。我想在同一个命名空间中有多个 Nginx 入口控制器。在这种情况下,我一直无法理解我需要更新哪些标签。
    • 酷。标签 app.kubernetes.io/nameapp.kubernetes.io/instance 需要更新以使其可识别 [ref] (kubernetes.io/docs/concepts/overview/working-with-objects/…) 以及 metadata.name 。还要确保在正在创建的其他资源中引用新名称。
    • 嘿,@JithinZachariah - 如果解决方案有效,请您接受答案。
    • 嘿 Kumar,我假设只有在入口控制器部署在同一个命名空间中时才需要不同的入口类。对吗?
    • 并非如此。不管入口控制器部署在哪个命名空间,它们都可能发生冲突。使用入口类告诉你的入口规则使用特定入口控制器。
    猜你喜欢
    • 2018-08-05
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    相关资源
    最近更新 更多