コンテンツにスキップ

Ingressコントローラー@Ingressコントローラー系

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. Ingressコントローラー

Ingressコントローラーとは

Ingressコントローラーは、kube-controllerのように単一/複数のIngressにwatchイベントを送信する、

これのルールに応じたリバースプロキシやロードバランサー (Ingressコントローラーの種類による) を作成し、Node外からの受信した通信をServiceにルーティングする。

注意点として、IngressコントローラーがServiceにルーティングするのであって、Ingressはあくまでルーティングのルールを定義しているだけである。

Kubernetesの周辺ツール (例:Prometheus、AlertManager、Grafana、ArgoCDなど) のダッシュボードを複数人で共有して参照する場合には、何らかのアクセス制限を付与したIngressを作成することになる。

kubernetes_ingress-controller


SSL証明書の割り当て

Ingressコントローラーは、Secretに設定されたSSL証明書を参照し、これを自身のロードバランサー (例:Nginx) に渡す。

kubernetes_ingress-controller_certificate


Ingressの設定値のバリデーション

Ingressコントローラーは、『***-controller-admission』というServiceでwebhookサーバーを公開している。

このwebhookサーバーは、新しく追加されたIngressの設定値のバリデーションを実行する。

これにより、不正なIngressが稼働することを防止できる。

このwebhookサーバーの登録時、まず『***-create』というJob配下のPodが、有効期限の長いSSL証明書を持つSecretを作成する。

その後、『***-patch』というJob配下のPodが、ValidatingWebhookConfigurationにこのSSL証明書を設定し、webhookサーバーにSSL証明書が割り当てられる。


02. 外部Ingressコントローラー

外部Ingressコントローラーの種類

Ingressコントローラーには種類があり、コントローラーごとに作成するリバースプロキシやロードバランサーが異なる。

外部Ingressコントローラーの種類 リバースプロキシ、ロードバランサー 開発環境 本番環境
Nginx Ingressコントローラー Nginx
minikubeのingressアドオン (実体はNginx Ingressコントローラー) Nginx
AWS Load Balancerコントローラー AWS ALB
Google Cloud CLBコントローラー Google Cloud CLB
Istio Ingressコントローラー Istio IngressGateway (実体はEnvoy)
Contourコントローラー Envoy
... ... ... ...