Kubernetes Ingressコントローラーとは?

円形の建物の上方からの眺め

執筆者

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Kubernetes Ingressコントローラーとは?

Kubernetes Ingressコントローラーは、Kubernetes環境で稼働するアプリケーションへの受信トラフィックを管理する専用のソフトウェア・コンポーネントで、外部ユーザーとコンテナ化されたサービスの間の橋渡しをします。

現代のビジネスは、数十または数百のマイクロサービスから構築された分散アプリケーションとワークロードに大きく依存しています。適切なトラフィック・オーケストレーションがなければ、各サービスに独自のパブリック・エンドポイントが必要となり、管理とセキュリティー上の重大な問題が発生する可能性があります。

例えば、ヘルスケア・プラットフォームでは、患者ポータル、プロバイダー・ダッシュボード、課金システム、コンプライアンス報告それぞれに個別のアクセス・ポイントが必要になる場合があります。こうしたアプローチは、コストがかさみ、運用も複雑になりがちです。

Kubernetes Ingressコントローラーは、アプリケーションのエントリー・ポイントでロード・バランサーかつインテリジェントなトラフィック・ルーターとして機能し、この課題に対処します。外部ユーザーが内部サービスにアクセスするためのトラフィック経路を中央集約的に確立します。

Kubernetesエコシステムには、GitHubなどのプラットフォームで入手できるオープンソースのツール(例:NGINX、Traefik)に加え、組織固有の要件に合わせて設計された商用ソリューションなど、さまざまなIngressコントローラーがあります。

The DX Leaders

AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

ご登録いただきありがとうございます。

ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

Kubernetesとは

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リソース(トラフィック・ルーティング・ルールを定義する構成オブジェクト)の変更を追跡し、新しいアプリケーションのデプロイメントや構成の更新を反映するためにルーティング・テーブルを自動的に更新します。

IBM Cloud

Red Hat OpenShift AI on IBM Cloud:AIワークロードの導入

Red Hat OpenShift on IBM CloudでAI機能を活用できます。このビデオでは、スケーラブルな機械学習運用プラットフォームを使用して、AIワークロードを効率的に構築、導入、管理する方法について説明します。

Kubernetes 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リソース

Ingressリソース(KubernetesリソースまたはKubernetes APIオブジェクトとも呼ばれる)は、ルーティング・ルールを定義します。これらはYAMLまたはJSONで定義され、Ingressルール、SSL証明書、認証要件、トラフィック・ポリシーを指定します。

例えば、ユーザーはingressClassNameフィールドを使用してどのIngressコントローラーがリソースを管理するかを決定することができ、クラスタ内に複数のコントローラーが存在する場合は、特定のコントローラーへのトラフィック指示を可能にします。

Ingressコントローラー

Ingressコントローラーは、設定ルールを読み取り適用するソフトウェア・コンポーネントであり、高度なトラフィック管理機能を備えたリバース・プロキシとして動作します。

Kubernetes Ingressコントローラーの仕組み

従来型のレイヤー4(L4)ロード・バランサー(TCP、UDP、HTTP/HTTPSの経路など)は、IPアドレスとポートのみに基づいてトラフィックを分散します。これに対し、KubernetesのIngressコントローラーはレイヤー7(アプリケーション層)で動作し、より高度なルーティングを可能にします。

Kubernetes Ingress APIとHTTPRouteといった機能を活用することで、Ingressコントローラーは、以下のようなHTTP固有の詳細な属性に基づいてルーティングを決定します。

  • URLパスとホスト名
  • HTTPヘッダーとメソッド
  • コンテンツとCookieのリクエスト
  • 認証トークンとユーザーコンテキスト

これらの決定は、ルーティング・ポリシーやその他の要件を規定する構成ルールに基づいています。Ingressコントローラーは、設定の変更を継続的に監視し、手作業なしでルーティングの動作を自動的に更新し、シームレスなトラフィック分散とセキュリティー管理を実現します。

Kubernetesクラスターでは、複数のIngressコントローラーを同時に稼働させ、トラフィックの種類やアプリケーションごとに役割を分担させることができます。各コントローラーはイベント駆動で動作し、Ingressリソースの変更を検知すると、仕様、アノテーション、メタデータを読み取り、実行可能なルーティング命令へと変換します。

Kubernetes Ingressコントローラーの主な機能

リクエスト処理

Kubernetes Ingressコントローラーは受信リクエストを精査し、ホスト名やDNS名などの事前定義ルールに基づいてルーティングを決定します。HTTPおよびHTTPSトラフィックを処理し、SSL終端を実行するとともに、複数のServiceインスタンス間でインテリジェントな負荷分散を行います。

構成管理

Kubernetes Ingressコントローラーは、名前空間をまたいだIngressリソースの変更について、Kubernetes APIを継続的に監視します。これらの変更がkubectlやCI/CDパイプライン、その他のツール(例:Helm、Terraform)から適用された場合でも、コントローラーは手動操作やサービス再起動を伴わずにルーティング・ルールを自動更新します。

ロード・バランシング

多くのKubernetes Ingressコントローラーには負荷分散機能が組み込まれており、同一Serviceの複数インスタンスに受信リクエストを分配して最適なパフォーマンスを確保し、特定のインスタンスに負荷が集中するのを防ぎます。

TLS管理

最新のKubernetes Ingressコントローラーは、TLS終端、証明書の自動プロビジョニングと更新、セキュア通信の強制など、高度なSSL/TLS管理機能も備えています。

ヘルスチェック

高度なKubernetes Ingressコントローラーは、バックエンド・サービスの稼働状況を継続的に監視し、障害が発生したインスタンスからトラフィックを自動的にルーティングすることで高可用性と優れたユーザー・エクスペリエンスを実現します。

Kubernetes Ingressコントローラーのユースケース

アプリケーションの集約

大規模組織は、統一されたアクセス・ポイントの背後に数百もの社内アプリケーションを集約するためにIngressコントローラーを活用します。このアプローチにより、ポリシーの集中管理を通じてセキュリティーを強化しつつ、インフラストラクチャー・コストを削減できます。例えば、グローバル製造企業では、単一のIngressコントローラーの導入によって、各地域のERPシステム、サプライチェーン・アプリケーション、カスタマー・ポータルへのリクエストを振り分けることができます。

開発およびステージング環境

開発チームは、Ingressコントローラーを使って新機能のテスト用に分離された環境を作成します。また、開発中の機能に応じて適切なトラフィックを各環境へ振り向けるとともに、新しいテスト環境を自動的にセットアップできます。

パートナーおよびベンダーとの連携

企業は、Ingressコントローラーを使用し、社内APIをパートナーやベンダーと安全に共有します。組織毎に異なるアクセス許可と使用制限を設定することができ、個別のインフラストラクチャーを構築することなく、すべて単一のシステムで管理できます。

世界規模のトラフィック分散

多国籍企業は、グローバルでのトラフィック管理戦略の一環としてIngressコントローラーを実装し、セキュリティーと監視ポリシーの一貫性を維持しながら、ユーザーを地理的に最適なデータセンターにルーティングします。

コンプライアンスおよび監査要件

規制の厳しい業界では、Ingressコントローラーを活用して、必要なロギング、アクセス制御(ページの作成時に追加)、およびデータ・ガバナンスポリシーを実装します。すべての外部アクセスは、Ingressレイヤーを通じて一元的に監視および監査できます。

Kubernetes Ingressコントローラーのメリット

  • インフラストラクチャーの集約:従来型のアーキテクチャーでは、アプリケーションごとに専用のロード・バランサーが必要となることが多く、ハードウェア費用と運用コストが増大します。Ingressコントローラーを用いると、複数アプリケーションを共有インフラストラクチャーの背後に集約でき、ロード・バランシングにかかるコストを削減し、リソース利用率を向上させます。
  • 開発サイクルの加速:開発チームは、ネットワーク管理者の関与や外部ロード・バランサーの構成を行うことなく、新機能をデプロイしてテストできます。Ingressコントローラーは、ルーティング変更をバージョン管理と自動化されたデプロイメント・パイプラインで管理するGitOpsワークフローをサポートします。
  • オブザーバビリティーの強化:先進的なIngressコントローラーは、アプリケーションの利用パターン、ユーザー行動、パフォーマンスのボトルネックに関する詳細な分析情報を提供し、オブザーバビリティーを高めます。この可視性により、キャパシティー計画、機能採用、ユーザー体験の最適化に関するデータ駆動の意思決定が可能になります。
  • セキュリティーの自動適用:複数のシステムにまたがってセキュリティー・ポリシーを構成するのではなく、Ingressコントローラーのポリシーを通じて、認証、認可、レート制限、WAF(Webアプリケーション・ファイアウォール)ルール、DDoS保護を一元的に適用できます。セキュリティー更新は、すべてのアプリケーションに即時に展開できます。
  • クラウド間の可搬性:クラウド固有のロード・バランシング・サービスとは異なり、Ingressコントローラーは、異なるクラウド・プロバイダーおよびオンプレミスのインフラストラクチャーにわたって一貫した機能を提供します。アーキテクチャーを変更することなく、環境間でアプリケーションを移行できます。
  • ダイナミック・スケーリング機能:Ingressコントローラーは、リアルタイムのトラフィック状況、バックエンドのキャパシティ、設定されたポリシーに基づいて、ルーティングパターンを自動的に調整できます。この機能により、変化の激しいビジネス環境に適応する高度なトラフィック・シェーピングが可能になります。

Ingressコントローラーにおける課題

  • パフォーマンスに関する考慮事項:すべての外部トラフィックはIngressコントローラーを経由するため、本番環境において潜在的なボトルネックになります。組織は、可用性を高めるために、慎重に容量を検討し、適切な監視を実装し、冗長性を設計する必要があります。
  • 学習曲線と運用上のオーバーヘッド:チームは、Kubernetesネットワークの概念、YAML構成管理、分散システムのトラブルシューティングに関する専門知識を身につけねばならず、そのためには多大なトレーニングと運用上の調整が必要になる場合があります。

Kubernetes Ingressコントローラーのオプション

適切なKubernetes Ingressコントローラーの選定は、組織の要件、既存インフラストラクチャー、チームのケーパビリティーに依存します。各実装には、特定のユースケースに対する固有の利点があります。

  • NGINX Ingress Controller:最も広く採用されているオプションである NGINX Ingress Controller(ingress-nginx)は、エンタープライズ・グレードのパフォーマンスと高度なカスタマイズ性を提供します。NGINXの成熟したエコシステムは、充実したドキュメント、商用サポートの選択肢、実績ある拡張性を備えています。
  • Traefik Ingressコントローラー:Traefikは、自動サービス検出と使いやすさを重視して、最新のクラウドネイティブ環境向けに設計されています。Traefikは、Kubernetesサービスが頻繁に変更される動的な環境を得意としており、統合されたサービス・メッシュとコンテナ・レジストリーを提供します。
  • HAProxy Ingress Controller:業界標準の HAProxy ロード・バランサーに基づく HAProxy Ingress Controller は、高トラフィック環境でも堅牢な性能を発揮します。このコントローラーは、高度な負荷分散アルゴリズム、詳細な統計、きめ細かなトラフィック制御を可能にします。
  • Istioゲートウェイ: 包括的なIstioサービス・メッシュ・プラットフォームの一部であるIstioゲートウェイは、高度なトラフィック管理、セキュリティー、およびオブザーバビリティー機能を備えています。Istioゲートウェイは、トラフィック分割、フォールトインジェクション、分散トレースなどの高度な機能もサポートしています。
  • クラウド・プロバイダーのソリューション:主要クラウド・プロバイダーは、自社プラットフォームと深く統合された最適化済みの Ingress コントローラーを提供しています。AWS Load Balancer controller、Google Cloud Load Balancer、Azure Application Gateway Ingress controller、IBM Cloud Application Load Balancer は、クラウドネイティブ・サービスとのシームレスな統合、自動スケーリング、簡素化された課金を提供します。
  • Envoyベースのコントローラー:Ambassador や Emissary-Ingress を含む、Envoy プロキシー上に構築された Ingress コントローラーは、高性能なトラフィック管理と高度なオブザーバビリティー機能を提供します。多くの場合、認証、レート制限、APIゲートウェイ機能が組み込まれており、包括的なAPI管理戦略を構築する組織に適しています。
関連ソリューション
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloudは、フルマネージド型のOpenShift Container Platform(OCP)です。

Red Hat OpenShiftの詳細はこちら
コンテナ・ソリューション

コンテナ・ソリューションは、セキュリティー、オープンソースのイノベーション、迅速なデプロイメントを活用して、コンテナ化されたワークロードを実行およびスケールアップします。

コンテナの詳細はこちら
クラウド・コンサルティング・サービス 

IBMのクラウド・コンサルティング・サービスで新しい機能にアクセスし、ビジネスの俊敏性を高めましょう。ハイブリッドクラウド戦略や専門家とのパートナーシップを通じて、ソリューションを共創し、デジタル・トランスフォーメーションを加速させ、パフォーマンスを最適化する方法をご覧ください。

クラウド・サービス
次のステップ

フルマネージドのRed Hat OpenShiftプラットフォームをぜひお試しいただくか、または、IBM Cloud Kubernetesエコシステムの柔軟性をご覧ください。ニーズに合わせたスケーラブルで安全なソリューションにより、開発とデプロイメントのプロセスを加速できます。

Red Hat OpenShiftの詳細はこちら Kubernetesはこちら