Home Google用語集Ingress(イングレス)

Ingress(イングレス)

by B-cafe
0 comments

Ingress(イングレス)

Ingress(イングレス)は、Kubernetes(クーバネティス)環境において、クラスタ内部のサービスへ外部からHTTP/HTTPSトラフィックをルーティングするためのAPIオブジェクトです。簡単に言うと、ウェブサイトへのアクセスを、適切なサーバーに振り分ける「交通整理役」のようなものです。🚗


Ingressがないとどうなるの?

Kubernetesクラスタ内で動くアプリケーション(サービス)は、通常、クラスタ内部のプライベートIPアドレスを持っています。そのため、外部のインターネットから直接アクセスすることはできません。外部からアクセスできるようにするには、通常、以下の方法が考えられます。

  • NodePort: 各ワーカーノード(サーバー)の特定のポートを開放し、そのポート経由でサービスにアクセスできるようにする方法です。しかし、多くのサービスを公開するとポートの管理が煩雑になります。

  • LoadBalancer: クラウドプロバイダが提供するロードバランサーをプロビジョニングし、それ経由でサービスにアクセスできるようにする方法です。これは便利ですが、サービスごとにロードバランサーが必要になり、コストがかさむ場合があります。

これらの方法では、設定が複雑になったり、コストが増えたりする課題がありました。


Ingressの役割とメリット

Ingressは、これらの課題を解決し、より柔軟かつ効率的に外部からのアクセスを制御します。

  1. 単一のエントリーポイント: 複数のサービスに対して、一つのIPアドレス(またはドメイン名)でアクセスを受け付けることができます。これにより、クライアントは複数のIPアドレスを覚える必要がなくなります。


  2. ルーティングルール: 受信したリクエストのURLパスやホスト名に基づいて、どのサービスにトラフィックを振り分けるかを細かく設定できます。

    • 例:「example.com/blogへのアクセスはブログサービスへ」「example.com/shopへのアクセスはショッピングサービスへ」
    • 例:「blog.example.comへのアクセスはブログサービスへ」「shop.example.comへのアクセスはショッピングサービスへ」

  3. SSL/TLS終端: HTTPS通信のために必要なSSL/TLS証明書をIngressの段階で処理できます。これにより、バックエンドのサービス側でSSL/TLSの設定をする手間が省けます。

  4. ロードバランシング機能: トラフィックを複数のバックエンドサービスインスタンスに分散し、負荷を均等に保ちます。

Ingress Controllerとの関係

Ingress自体は「交通整理のルール」を定義するだけです。実際にそのルールを解釈し、トラフィックをルーティングする役割を担うのがIngress Controllerです。Nginx Ingress Controller、GCE Ingress Controller、Traefikなど、様々なIngress Controllerが存在します。

Google CloudのGKE(Google Kubernetes Engine)では、デフォルトでGCE Ingress Controllerが利用でき、Google Cloudのロードバランサーと連携して動作します。


どんな時に便利?

  • 複数のWebサービスを一つのドメインで公開したい場合: マイクロサービスアーキテクチャで複数のサービスが連携するようなシステムで特に有効です。

  • 異なるパスやサブドメインでサービスを切り替えたい場合: 会社のウェブサイトとブログを同じドメインで運用したいが、アクセス先を分けたい場合など。

  • SSL/TLS証明書を一元管理したい場合: 複数のサービスでSSLを利用する際に、Ingressで一括して証明書を管理できます。


関連リンク

You may also like