Skip to content
Latchkey

Kubernetes の Ingress とは?外部トラフィックのルーティング

Ingress は、クラスタに入る外部トラフィックに対する HTTP/S のルーティングルール - hostname と path による - を定義する Kubernetes オブジェクトです。

pod と Service はデフォルトで内部的です。アプリを HTTP または HTTPS で外の世界に公開するには、リクエストを中に取り込み、正しい Service にディスパッチする手段が必要です。Ingress はそのための宣言的なルールセットであり、ingress controller はそれを実際に強制する proxy です。

host と path によるルール

Ingress は、受信リクエストを hostname と URL の path に基づいてバックエンドの Service にマッピングします。例えば api.example.comapi Service にルーティングされ、app.example.comweb Service にルーティングされます - すべて1つの入口の背後で。

ingress controller

Ingress オブジェクトは controller なしでは不活性です。ingress controller(NGINX、Traefik、クラウドの load balancer)は Ingress オブジェクトを監視し、ルールを強制するために実際の proxy を設定します。controller がなければ、ルーティングもありません。

TLS 終端

Ingress は一般に HTTPS を終端します。証明書を保持する TLS Secret を参照すると、controller が TLS を提供し、内部では平文の HTTP を転送します。cert-manager のようなツールが証明書の発行を自動化します。

Ingress と Service type LoadBalancer の違い

  • LoadBalancer Service は1つの Service を公開し、多くの場合それぞれにクラウド LB が1つ付きます。
  • Ingress は、HTTP ルーティングを伴う単一の LB の背後に多数の Service を集約します。
  • Ingress は path と hostname を理解しますが、素の Service は理解しません。

CD における Ingress

CD が新しい Service を deploy するとき、通常はそれを公開するために付随する Ingress(または chart の値)を apply します。preview 環境は、しばしば PR ごとの hostname を Ingress 経由でルーティングされ、取り壊し時に削除されます。

重要なポイント

  • Ingress は、内部 Service への HTTP/S ルーティングを host と path で宣言します。
  • ルールを実際に強制するには ingress controller が必要です。
  • Ingress は多数の Service を1つの入口の背後に集約し、TLS を扱います。

関連ガイド