このページでは、Google Kubernetes Engine(GKE)でカスタム Ingress コントローラを使用する方法について説明します。
HttpLoadBalancing
アドオンを有効にしたカスタム Ingress コントローラを使用する
HttpLoadBalancing
アドオンを無効にすると、nginx-ingress
などのカスタム 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 マニフェストで 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-class
を true
に設定して 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 コントローラの動作をご覧ください。
次のステップ
- Google Cloud でのロード バランシングの詳細を確認する。
- 内部ロードバランサ用の Ingress の構成方法を学習する。
- 外部ロードバランサ用の Ingress の構成方法を学習する。
- NGNIX Ingress を使用して GKE Ingress を実装する。