NGINX.COM
Web Server Load Balancing with NGINX Plus

Kubernetesが非常に優れたプラットフォームであることは既にご存じの方も多いかと思います。そして最大限に活用するためには、様々なツールと連携をして活用することも必要となります。Ingress Controllers がその一つです。Kubernetes を使用している方は、Ingress Controllerについて良くご存じかもしれません。ここでは、Ingress 及び Ingress Controllerについて改めて、簡単にまとめてみます。

設計上、Podはクラスター内の他Podからのみアクセスでき、外部ネットワークからはアクセスできません。Ingress は、外部接続のルールを定義する HTTP負荷分散用の Kubernetes に組み込みまれている構成要素です。外部アクセスを提供する必要がある場合は、Serviceリソースを利用。さらにURI パス、バックエンドサービス名、その他の情報を含むルールを定義する Ingress リソースを作成します。次に、Ingress Controllerを使用して、ロードバランサーを自動的に構成し、Ingressリソースを基に設定を有効にします。

NGINX(Part of F5)の提供するNGINX Ingress Controller は、Kubernetes アプリケーションにエンタープライズ グレードのリバースプロキシを提供します。このブログでは、NGINX Ingress Controller と Ranch App及びMarketplace との統合について説明します。まず最初に、NGINX Ingress Controller について説明しましょう。

NGINXを使用するKubernetes Ingress Controllerは2種類あります。どちらもオープンソースで、GitHub でホストされています。そのうち1 つは Kubernetes オープンソース・コミュニティ(kubernetes/ingress-nginx on GitHub)によってメンテナンスされているもの、もう1つはNGINX(Part of F5)が提供しているものとなります。(nginxinc/kubernetes-ingress on GitHub)

NGINX Ingress Controllerとどう違うのか?

Kubernetesコミュニティ版の NGINX Ingress Controllerとの違いについて、NGINX 製品管理担当副社長である Sidney Rabsatt は下記のように述べています。

・開発理念:Ingress Controllerの設計において、NGINXが最も重要だと考えていることは、長期的な安定性と一貫性を提供することです。リリース間の動作の変更、特に下位互換性を損なうような変更を避けるために、可能な限りの努力を払っています。アップグレード時に予期せぬサプライズが発生しない安定性がNGINX Ingress Controllerでは保証されます。

・継続的な実稼働への対応:NGINX は、NGINX Ingress Controllerの全てのリリースで商用サポートを提供とメンテナンスしています。NGINXのオープンソース版、NGINX Plusのどちらを使用しているかにかかわらず、「エンタープライズグレード」の品質でご使用いただけます。

・統合されたコードベース:NGINX Ingress Controllerは、負荷分散に 100% 純粋な NGINX または NGINX Plusインスタンスを使用し、ネイティブなNGINX 機能のみを使用してベスト プラクティス構成を適用することが可能です。これは、サードパーティのモジュールまたは Lua コードに依存していません。Kubernetesコミュニティ版の Ingress Controllerは、NGINX Plusに固有の一部の機能について、低速になりがちな Lua コードに依存しています。

・セキュリティ:NGINX Ingress Controllerは、GitHub上でロードバランサー (NGINX および NGINX Plus) とIngress Controllerのソフトウェア (Go アプリケーション) を自社で開発および保守しています。

・サポート:NGINX Ingress Controllerは、有償版NGINX Plusおよび NGINX オープンソース版のどちらにも対応していますが、有償版NGINX PlusでNGINX Ingress Controllerを使用した場合に得られる主なメリットをご紹介します。

  • 追加機能 – リアルタイムメトリックス、高度な負荷分散拡張機能、セッションパーシステンス、アクティブヘルスチェック、JWT認証
  • 動的再構成 – より高速で中断のない再構成により、一貫したパフォーマンスとリソース使用率でアプリケーションを提供できます。
  • 商用サポート – 経験豊富なNGINX技術者のサポートを受けることでDevOps チームに NGINX 開発者がいるような安定した運用が可能になります。 NGINX、NGINX Plusはどちらも、ベアメタル、コンテナ、VM、パブリック/プライベート/ハイブリッドクラウド等、あらゆるプラットフォームにデプロイできます。

SUSE RancherとNGINXの連携

SUSE Rancher(以下Rancher)は皆様ご存じの通り、コンテナ管理の利便性や効率を上げることが可能なプラットフォームです。オンプレミスやクラウドサービス上に、Kubernetesクラスターを構築し管理を可能にします。また、「カタログ」化されたアプリケーションがすぐに使えるのも特長です。

SUSEに統合されたRancher Labs との提携により、NGINX Ingress Controllerは、Rancher上のカタログサービスに登録されており、簡単にRancher上で選択、展開できるようになっています。

そしてNGINXオープンソース版をまずは活用することができる Rancher Chart の形式でソリューションを提供しています。こちらを活用して拡張機能を備えた商用サポートされているバージョンの NGINX Plus への簡単なアップグレード パスを提供します。

両方のバージョンの設定について見ていきましょう。

いくつかの前提条件を満たした上で、Rancher Chart UI を介していくつかの構成オプションを設定し、NGINX オープンソースまたは NGINX Plusを Rancherの管理クラスターにデプロイします。

NGINX PlusのIngress Controllerを使うことで、次に説明する多くの高度な機能をRancher上で利用できるようになります。これには、Kubernetes クラスター内に配置されるWebアプリケーションファイアウォール (WAF) 機能を備えたNGINX App Protect もIngress Controllerに含まれています。

では、なぜKubernetesにそもそもNGINX Ingress Controllerが必要なのでしょうか?

NGINX Ingress Controllerを連携させることで、SSL/TLS終端、WebSocket、URLリライト、HTTP/2、Prometheus、さらにHelmChartでインストール等の機能が提供されます。NGINX PlusのNGINX Ingress Controllerとの連携により、下記のようなメリットも付加されます。

  • Ingress設定と運用の複雑さを軽減
  • 高度な負荷分散機能の実現
  • 可観測性
  • セキュリティ
  • セルフサービスとマルチテナンシー
  • 本番環境への適用

Kubernetes環境に最適なWAF、NGINX App Protect との統合

前述したように、NGINX Ingress Controllerは、WAFモジュールであるNGINX App Protectを搭載しています。これは、悪意のある攻撃からコンテナアプリケーションを保護するとともに、Ingress Controllerで唯一のNGINXによりサポートされたWAF です。

WAFをIngress Controller に統合する重要な理由

WAFをIngress Controller に統合することで、管理者とアプリ開発者の双方に次の3つの利点がもたらされます。

  • コンテナアプリケーションの保護
  • データプレーンの統合
  • コントロールプレーンの統合 – 管理するセキュリティツールが少なくなるため、潜在的な障害点が減少します。

開発者は、他のチームに権限付与や設定依頼することなく、WAF機能をワークフローに組み込むこともできます。これにより、効率が高まりセキュリティ要件の準拠を実現できます。

まとめ

このようにRancherとNGINX Ingress Controllerを組み合わせることで、現在NGINXで利用しているリバースプロキシ設定を簡単に活用することや、NGINX App Protectによるコンテナアプリケーションの保護、各組織やチームによるマルチテナント、CI/CDを意識したシステム運用をしていただくことが可能になります。

Hero image
Kubernetes のテスト環境から本番環境への移行

快適なKubernetes環境を実現するには、Kubernetesネイティブなやり方でトラフィックを理解し、管理する必要があります。
このEBOOK では、POC からカナリアリリース、ブルーグリーンデプロイメントを利用し本番環境にいたるまで、トラフィックフローを柔軟に効果的に管理する際に必要となる情報や、Kubernetes 戦略に求められる要素を明確でわかりやすい解説と共に提供いたします。



著者について

鈴木孝彰

シニアソリューションエンジニア

About F5 NGINX

F5 NGINXについて
F5, Inc.は、人気のオープンソースプロジェクト「NGINX」を支援しています。NGINXはモダンアプリケーションを開発・構築するためのテクノロジースイートを提供しています。NGINXとF5製品との併用で、コードからユーザーまでの広範なアプリケーション領域をサポートし、マルチクラウドアプリケーションサービスとしてNetOpsとDevOps間の課題を解決します。

詳しくはnginx.co.jpをご覧ください。Twitterで@nginxをフォローして会話に参加することもできます。