本頁說明如何在 Google Kubernetes Engine (GKE) 中使用自訂 Ingress 控制器。
啟用 HttpLoadBalancing
外掛程式並使用自訂 Ingress 控制器
您可以停用 HttpLoadBalancing
外掛程式,執行自訂 Ingress 控制器,例如 nginx-ingress
。這樣可防止 GKE Ingress 控制器處理 Ingress 資源。
如要啟用 HttpLoadBalancing
外掛程式並執行自訂 Ingress 控制器 (例如使用子集和 Private Service Connect 等功能),可以採用下列其中一種方法:
- 在 Ingress 資訊清單中,設定
kubernetes.io/ingress.class
註解。這項設定適用於執行所有 GKE 版本的叢集。 - 設定
ingressClassName
欄位。 - 設定預設 Ingress 類別
請務必確保任何程序不會意外覆寫 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 控制器行為」。
後續步驟
- 進一步瞭解 Google Cloud中的負載平衡。
- 瞭解如何設定內部應用程式負載平衡器的 Ingress。
- 瞭解如何設定外部應用程式負載平衡器的 Ingress。
- 使用 NGNIX Ingress 實作 GKE Ingress。