Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Part-107: Kubernetes Ingress in Google Kubernetes Engine

2025年10月03日に「Dev.to」が公開したITニュース「Part-107: Kubernetes Ingress in Google Kubernetes Engine」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

KubernetesのIngressは、外部からの通信をアプリケーション層で賢くルーティングする仕組み。ホスト名やURLに基づき、複数のアプリへのアクセスを効率的に振り分ける。Google Kubernetes Engine (GKE) ではIngressコントローラが管理されており、設定が容易で、アプリのトラフィック管理をシンプルにする。

ITニュース解説

Kubernetes環境でアプリケーションを動かす際、そのアプリケーションを外部から利用できるようにするために、様々な方法がある。最も基本的な方法として、Serviceという仕組みを用いる。Serviceには、ClusterIP、NodePort、LoadBalancerといった種類があり、それぞれ異なる用途と特性を持つ。しかし、これらのServiceだけでは、複雑な要件に対応しきれない場合がある。例えば、単一のIPアドレスで複数の異なるアプリケーションにトラフィックを振り分けたい、あるいはURLのパスによって異なるアプリケーションにアクセスさせたいといった、より高度なトラフィック管理が必要な場面だ。このような場合に、Ingressという機能が非常に役立つ。

Ingressは、アプリケーション層、つまりOSI参照モデルの第7層(L7)で動作する。これは、HTTPやHTTPS、HTTP/2といったアプリケーションプロトコルを直接理解し、それに基づいてトラフィックを制御できることを意味する。外部からKubernetesクラスターに入ってくる通信を、ホスト名、URLのパス、さらにはHTTPヘッダーといった情報に基づいて、適切なアプリケーション(Service)へとルーティングするルールを定義できるのが、Ingressの最大の特長である。複数のLoadBalancerを個別に設定する代わりに、Ingress一つで全てのトラフィックを中央集権的に管理できるため、運用の手間とコストを削減することにもつながる。

Google Kubernetes Engine(GKE)でIngressを利用する際には、さらに大きなメリットがある。GKEでは、Ingressの制御を行うIngress Controllerというコンポーネントを、Google Cloudがサービスとして提供・管理している。これにより、ユーザーは自分でIngress Controllerをデプロイしたり、その運用管理について深く心配したりする必要がなくなる。ただし、GKEクラスターの設定で「HTTP Load Balancing」が有効になっていることを確認する必要がある。これは、GKEのIngressがGoogle CloudのHTTP(S) Load Balancerを内部的に利用するためだ。

GKEで利用できるIngressサービスには、主に三つのタイプがある。一つ目は「内部Ingress Service」で、これはクラスター内部やプライベートなネットワーク内でのみ利用されるアプリケーション向けに設計されている。外部インターネットからのアクセスは許可せず、組織内のユーザーや他の内部サービスからのアクセスに限定したい場合に用いる。二つ目は「外部Ingress Service」で、これは一般的なインターネット公開用のアプリケーション、つまりWebサイトやAPIサービスなど、パブリックなアクセスを受け入れるアプリケーション向けに使われる。そして三つ目は「マルチクラスターIngress」だ。これは、複数のGKEクラスターにわたってアプリケーションをデプロイしているような、大規模で複雑な環境で利用される。複数のクラスターに分散されたアプリケーション全体に対して、一貫したトラフィックルーティングを提供することができる。

KubernetesでIngressリソースを定義する際には、YAML形式のマニフェストファイルを作成する。このマニフェストには、いくつかの重要な要素が含まれる。まず「Annotations(アノテーション)」だ。これは、Ingressが利用するLoad Balancerに対して、追加の設定を行うために使われる。例えば、静的IPアドレスを割り当てたり、SSL証明書を設定したり、特定のLoad Balancerタイプを指定したりといった、より詳細な制御をここで行う。次に「Ingress Spec(仕様)」があり、ここでIngressの主要なルーティングルールと、万が一どのルールにもマッチしなかった場合の「デフォルトバックエンド」を定義する。そして最も重要なのが「Routing Rules(ルーティングルール)」だ。これは、外部からのリクエストがどのように処理されるかを具体的に記述する部分だ。例えば、「https://example.com/app1」というURLへのリクエストは「app1サービス」へと送る、「https://example.com/app2」というURLへのリクエストは「app2サービス」へと送るといった形で、パスベースのルーティングを設定できる。ホスト名に基づいて異なるサービスに振り分ける、ホストベースのルーティングも同様に可能だ。

このように、IngressはKubernetesアプリケーションにとって、非常に強力で柔軟なトラフィック管理機能を提供する。複数の外部Load Balancerを用意する手間を省き、単一の入り口で複雑なルーティング要件を処理できるため、システム全体のシンプル化に貢献する。パスベースやホストベースのルーティングをサポートすることで、単一のドメイン名やIPアドレスで多様なサービスを提供することが可能になる。特にGKEにおいては、Ingress Controllerの管理がGoogleによって行われるため、セットアップが簡単で、システムエンジニアを目指す初心者にとっても導入しやすい機能と言えるだろう。Ingressを理解し活用することで、より効率的で堅牢なアプリケーション公開環境を構築できるようになる。

関連コンテンツ

関連IT用語