簡體   English   中英

同一命名空間中有多個 Nginx Ingress 控制器?

[英]Multiple Nginx Ingress controller in same namespace?

據我了解,我們可以使用 Ingress 類注解在一個集群中使用多個 Nginx 入口控制器。 但是我有一個用例,我需要在同一個命名空間中使用多個入口控制器,以使用創建的相應入口規則在同一個命名空間中公開不同的服務。 我按照https://kubernetes.github.io/ingress-nginx/deploy/#azure創建一個示例入口控制器。 如果我想在同一個命名空間中有多個 Nginx 入口控制器,我應該修改所有參數。

提前致謝

從您的帖子中不清楚您是否打算部署多個 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/解釋了如何控制多個入口控制器。

我在 AKS(K8s 版本 1.22.4)上遇到過類似的問題。 我有兩個 Nginx 入口控制器,內部和外部。 在為每個人指定一個唯一的選舉 ID后,問題得到了解決。

這篇文章可能會有所幫助: https ://stackoverflow.com/a/72591382/4049017

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM