カスタム Ingress コントローラを使用する


このページでは、Google Kubernetes Engine(GKE)でカスタム Ingress コントローラを使用する方法について説明します。

HttpLoadBalancing アドオンを有効にしたカスタム Ingress コントローラを使用する

HttpLoadBalancing アドオンを無効にすると、nginx-ingress などのカスタム Ingress コントローラを実行できます。これにより、GKE Ingress コントローラにより Ingress リソースが処理されなくなります。

HttpLoadBalancing アドオンを有効にしたカスタム Ingress コントローラを実行する場合、サブセット化Private Service Connect などの機能を利用するには、次のいずれかの方法を使用できます。

プロセスによって spec.ingressClassName が誤って上書きされないようにする必要があります。spec.IngressClassName を有効値から空の文字列("")に変更する更新オペレーションによって、GKE Ingress コントローラで Ingress が処理されます。

ingressClassName フィールドを構成する

Ingress マニフェストで ingressClassName フィールドを設定することで、カスタム Ingress コントローラを使用できます。次のマニフェストでは、nginx Ingress コントローラを指定する 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 クラスを構成する

アノテーション ingressclass.kubernetes.io/is-default-classtrue に設定して IngressClass リソースを作成すると、クラスタ内のすべての Ingress リソースにデフォルトの Ingress クラスを構成できます。

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 コントローラの動作の概要

GKE バージョン 1.18 以降を実行しているクラスタの場合、GKE Ingress コントローラで Ingress が処理されるかどうかは、Ingress マニフェストの kubernetes.io/ingress.class アノテーションと ingressClassName フィールドの値によって決まります。詳細については、GKE Ingress コントローラの動作をご覧ください。

次のステップ