Kubernetes Ingressコントローラーは、Kubernetes環境で稼働するアプリケーションへの受信トラフィックを管理する専用のソフトウェア・コンポーネントで、外部ユーザーとコンテナ化されたサービスの間の橋渡しをします。
現代のビジネスは、数十または数百のマイクロサービスから構築された分散アプリケーションとワークロードに大きく依存しています。適切なトラフィック・オーケストレーションがなければ、各サービスに独自のパブリック・エンドポイントが必要となり、管理とセキュリティー上の重大な問題が発生する可能性があります。
例えば、ヘルスケア・プラットフォームでは、患者ポータル、プロバイダー・ダッシュボード、課金システム、コンプライアンス報告それぞれに個別のアクセス・ポイントが必要になる場合があります。こうしたアプローチは、コストがかさみ、運用も複雑になりがちです。
Kubernetes Ingressコントローラーは、アプリケーションのエントリー・ポイントでロード・バランサーかつインテリジェントなトラフィック・ルーターとして機能し、この課題に対処します。外部ユーザーが内部サービスにアクセスするためのトラフィック経路を中央集約的に確立します。
Kubernetesエコシステムには、GitHubなどのプラットフォームで入手できるオープンソースのツール(例:NGINX、Traefik)に加え、組織固有の要件に合わせて設計された商用ソリューションなど、さまざまなIngressコントローラーがあります。
IBMニュースレター
AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。
ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。
Kubernetesは当初Googleによって開発され、2015年にCloud Native Computing Foundation(CNCF)に寄贈されました。現在では、多くのフォーチュン500企業の重要なITインフラストラクチャーを支えており、Ingressコントローラーの管理はエンタープライズ運用にとって不可欠です。2022年の調査によると、組織の96%が、Kubernetesを本番環境で利用しているか、同技術の導入を評価中です。1
Kubernetesの登場以前、アプリケーションは専用サーバーや仮想マシン(VM)上で動作するのが一般的で、スケーリングにはコストと時間がかかっていました。Kubernetesはコンテナを導入しました。コンテナは、アプリケーションとその依存関係一式をパッケージ化した軽量で可搬性の高い単位です。
Kubernetesは、DevOpsのワークフローとアプリケーション展開に、スケール可能なコンテナ・オーケストレーションを導入することで変革をもたらしました。このオープンソース・プラットフォームは、自動化により、分散インフラストラクチャー全体にわたるコンテナ化されたアプリケーションのデプロイ、スケーリング、管理を実現し、開発チームと運用チームの円滑な連携を可能にします。
Kubernetesは、アプリケーションをPod(最小のデプロイ単位)に編成します。Podは1つ以上のコンテナ(通常はDockerコンテナ)で構成されます。これらのPodは、クラスター内のワーカー・ノード上で稼働し、コントロール・プレーンがクラスター全体の運用を調整します。Service(サービス)は、Podのグループに安定したネットワークIDを提供し、信頼性の高い通信パターンを実現します。
Ingressコントローラーは通常、Kubernetes APIを通じてクラスターの状態を監視する、特殊なポッドとしてデプロイされます。これらのコントローラーは、Ingressリソース(トラフィック・ルーティング・ルールを定義する構成オブジェクト)の変更を追跡し、新しいアプリケーションのデプロイメントや構成の更新を反映するためにルーティング・テーブルを自動的に更新します。
Ingressコントローラーの動作を理解するには、まずKubernetes Ingressを理解することが重要です。Ingressは、外部トラフィックをクラスター内のServiceに振り向けるルーティング・ルールを定義するAPIリソース(Ingressオブジェクト)です。
Kubernetes Ingressは、クラウドネイティブでコンテナ化されたアプリケーション環境に流入するネットワーク・トラフィック全般を指す一般用語としての「ingress」とは区別されます。Kubernetesにおいては、Ingressは、受信トラフィックを各Serviceへどのようにルーティングするかを管理するルールと設定一式を指します。これに対し、一般的な意味でのingressは、システムに入ってくるすべてのトラフィックを意味します(システムから外へ出るトラフィックを指すegressの反対語)。
KubernetesにおけるIngressとEgressについて詳しくは、こちらをご覧ください。
Kubernetes Ingressは、Kubernetesクラスター内のサービスへの外部アクセスを管理する宣言型アプローチを提供します。Ingressは、個々のサービス(NodePort、LoadBalancerサービスなど)をインターネットに直接公開する代わりに、複数の基準に基づいてリクエストをスマートにルーティングする、制御されたアクセス層を作成します。この機能により、通常はKubernetesクラスター内でClusterIPを使用して公開されるサービスへの外部トラフィックを、効率的に管理できます。
Kubernetes Ingressは、相補的な2つのコンポーネントを通じて機能します。
Ingressコントローラーは、設定ルールを読み取り適用するソフトウェア・コンポーネントであり、高度なトラフィック管理機能を備えたリバース・プロキシとして動作します。
従来型のレイヤー4(L4)ロード・バランサー(TCP、UDP、HTTP/HTTPSの経路など)は、IPアドレスとポートのみに基づいてトラフィックを分散します。これに対し、KubernetesのIngressコントローラーはレイヤー7(アプリケーション層)で動作し、より高度なルーティングを可能にします。
Kubernetes Ingress APIとHTTPRouteといった機能を活用することで、Ingressコントローラーは、以下のようなHTTP固有の詳細な属性に基づいてルーティングを決定します。
これらの決定は、ルーティング・ポリシーやその他の要件を規定する構成ルールに基づいています。Ingressコントローラーは、設定の変更を継続的に監視し、手作業なしでルーティングの動作を自動的に更新し、シームレスなトラフィック分散とセキュリティー管理を実現します。
Kubernetesクラスターでは、複数のIngressコントローラーを同時に稼働させ、トラフィックの種類やアプリケーションごとに役割を分担させることができます。各コントローラーはイベント駆動で動作し、Ingressリソースの変更を検知すると、仕様、アノテーション、メタデータを読み取り、実行可能なルーティング命令へと変換します。
Kubernetes Ingressコントローラーは受信リクエストを精査し、ホスト名やDNS名などの事前定義ルールに基づいてルーティングを決定します。HTTPおよびHTTPSトラフィックを処理し、SSL終端を実行するとともに、複数のServiceインスタンス間でインテリジェントな負荷分散を行います。
Kubernetes Ingressコントローラーは、名前空間をまたいだIngressリソースの変更について、Kubernetes APIを継続的に監視します。これらの変更がkubectlやCI/CDパイプライン、その他のツール(例:Helm、Terraform)から適用された場合でも、コントローラーは手動操作やサービス再起動を伴わずにルーティング・ルールを自動更新します。
多くのKubernetes Ingressコントローラーには負荷分散機能が組み込まれており、同一Serviceの複数インスタンスに受信リクエストを分配して最適なパフォーマンスを確保し、特定のインスタンスに負荷が集中するのを防ぎます。
最新のKubernetes Ingressコントローラーは、TLS終端、証明書の自動プロビジョニングと更新、セキュア通信の強制など、高度なSSL/TLS管理機能も備えています。
高度なKubernetes Ingressコントローラーは、バックエンド・サービスの稼働状況を継続的に監視し、障害が発生したインスタンスからトラフィックを自動的にルーティングすることで高可用性と優れたユーザー・エクスペリエンスを実現します。
大規模組織は、統一されたアクセス・ポイントの背後に数百もの社内アプリケーションを集約するためにIngressコントローラーを活用します。このアプローチにより、ポリシーの集中管理を通じてセキュリティーを強化しつつ、インフラストラクチャー・コストを削減できます。例えば、グローバル製造企業では、単一のIngressコントローラーの導入によって、各地域のERPシステム、サプライチェーン・アプリケーション、カスタマー・ポータルへのリクエストを振り分けることができます。
開発チームは、Ingressコントローラーを使って新機能のテスト用に分離された環境を作成します。また、開発中の機能に応じて適切なトラフィックを各環境へ振り向けるとともに、新しいテスト環境を自動的にセットアップできます。
企業は、Ingressコントローラーを使用し、社内APIをパートナーやベンダーと安全に共有します。組織毎に異なるアクセス許可と使用制限を設定することができ、個別のインフラストラクチャーを構築することなく、すべて単一のシステムで管理できます。
多国籍企業は、グローバルでのトラフィック管理戦略の一環としてIngressコントローラーを実装し、セキュリティーと監視ポリシーの一貫性を維持しながら、ユーザーを地理的に最適なデータセンターにルーティングします。
規制の厳しい業界では、Ingressコントローラーを活用して、必要なロギング、アクセス制御(ページの作成時に追加)、およびデータ・ガバナンスポリシーを実装します。すべての外部アクセスは、Ingressレイヤーを通じて一元的に監視および監査できます。
適切なKubernetes Ingressコントローラーの選定は、組織の要件、既存インフラストラクチャー、チームのケーパビリティーに依存します。各実装には、特定のユースケースに対する固有の利点があります。
Red Hat OpenShift on IBM Cloudは、フルマネージド型のOpenShift Container Platform(OCP)です。
コンテナ・ソリューションは、セキュリティー、オープンソースのイノベーション、迅速なデプロイメントを活用して、コンテナ化されたワークロードを実行およびスケールアップします。
IBMのクラウド・コンサルティング・サービスで新しい機能にアクセスし、ビジネスの俊敏性を高めましょう。ハイブリッドクラウド戦略や専門家とのパートナーシップを通じて、ソリューションを共創し、デジタル・トランスフォーメーションを加速させ、パフォーマンスを最適化する方法をご覧ください。