使用自訂 Ingress 控制器


本頁說明如何在 Google Kubernetes Engine (GKE) 中使用自訂 Ingress 控制器。

啟用 HttpLoadBalancing 外掛程式並使用自訂 Ingress 控制器

您可以停用 HttpLoadBalancing 外掛程式,執行自訂 Ingress 控制器,例如 nginx-ingress。這樣可防止 GKE Ingress 控制器處理 Ingress 資源。

如要啟用 HttpLoadBalancing 外掛程式並執行自訂 Ingress 控制器 (例如使用子集Private Service Connect 等功能),可以採用下列其中一種方法:

請務必確保任何程序不會意外覆寫 spec.ingressClassName。如果更新作業將 spec.IngressClassName 從有效值變更為空字串 (""),GKE Ingress 控制器就會處理 Ingress。

設定 ingressClassName 欄位

如要使用自訂 Ingress 控制器,請在 Ingress 資訊清單中設定 ingressClassName 欄位。下列資訊清單說明 Ingress,其中指定了 nginx Ingress 控制器

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: cafe-ingress
spec:
 ingressClassName: nginx
 tls:
 - hosts:
   - cafe.example.com
   secretName: cafe-secret
 rules:
 - host: cafe.example.com

這項設定適用於 GKE 1.18 至 1.21 版的 Ingress v1beta1 API,以及 GKE 1.19 以上版本的 Ingress v1 API。

設定預設 Ingress 類別

如要為叢集中的所有 Ingress 資源設定預設 Ingress 類別,請建立 IngressClass 資源,並將註解 ingressclass.kubernetes.io/is-default-class 設為 true

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: nginx-public
  annotations:
    ingressclass.kubernetes.io/is-default-class: "true"
spec:
  controller: k8s.io/ingress-nginx

這項設定適用於執行 GKE 1.19 以上版本的叢集。

GKE Ingress 控制器行為摘要

如果叢集執行的是 1.18 以上版本的 GKE,GKE Ingress 控制器是否會處理 Ingress,取決於 Ingress 資訊清單中的 kubernetes.io/ingress.class 註解值和 ingressClassName 欄位。詳情請參閱「GKE Ingress 控制器行為」。

後續步驟