この記事は10部構成の一部です。
- Reduce Complexity with Production-Grade Kubernetes(英語)
- 高度なトラフィック管理でKubernetesの耐障害性を向上させる方法
- Kubernetesの可視性を向上させる方法
- トラフィック管理ツールを使ってKubernetesを安全にする6つの方法
- Ingress Controllerの選択ガイド, Part 1: 要件の特定
- Ingress Controllerの選択ガイド, Part 2 : リスクと将来性
- Ingress Controllerの選び方ガイド, Part 3:オープンソース / デフォルト / 商用版
- Ingress Controllerの選択ガイド, Part 4 : NGINX Ingress Controllerのオプション(この記事です)
- サービスメッシュの選び方
- Performance Testing NGINX Ingress Controllers in a Dynamic Kubernetes Cloud Environment(英語)
これらのブログ一式を無料のebookとして下記よりダウンロードいただけます。– Kubernetes のテスト環境から本番環境への移行
Cloud Native Computing Foundation(CNCF)のSurvey 2020によると、NGINXはKubernetesのIngress Controllerで最もよく使われているデータプレーンですが、「NGINX Ingress Controller」が複数あることをご存知でしょうか?
2018年に「Wait, Which NGINX Ingress Controller for Kubernetes Am I Using? 」というタイトルで公開したこのブログの旧バージョンは、NGINXを使用する人気のIngress Controllerが2つ存在するというコミュニティメンバーとの会話をきっかけに作成されました。
なぜ混乱が起きたのか(今でもそうですが)、簡単に理解できます。どちらのIngress Controllerに多くの共通点があります。
- ” NGINX Ingress Controller” と呼ばれています。
- オープンソースで提供されています。
- GitHubでホストされており、非常によく似たレポ名です。
- プロジェクトが同時期にスタートしています。
そしてもちろん、最大の共通点は、同じ機能を実装していることです。
わかりやすくするために、2つのバージョンをこのように区別しています。
また、NGINXをベースにしたIngress Controllerは、Kongなど他にも多数ありますが、幸いにもその名前は簡単に見分けがつきます。どの NGINX Ingress Controllerを使用しているかわからない場合は、実行中の Ingress Controllerのコンテナイメージを確認し、Docker イメージ名と上記のレポを比較してみてください。
NGINX Ingress Controllerのゴールと優先順位
NGINX Ingress ControllerとコミュニティIngress Controller(NGINXオープンソースをベースにした他のIngress Controllerも同様)の主な違いは、その開発とデプロイメントモデルで、これは順番に異なるゴールと優先順位に基づいています。
- 開発理念 – NGINXのすべてのプロジェクトおよび製品において最優先されるのは、長期的な安定性と一貫性を備えた高速かつ軽量なツールを提供することです。リリース間の動作の変更、特に後方互換性を破壊するような変更を避けるために、可能な限りの努力を行っています。アップグレードの際に予期せぬ驚きを感じることがないことをお約束します。また、私たちは、ベアメタル、コンテナ、VM、パブリッククラウド、プライベートクラウド、ハイブリッドクラウドなど、どのようなプラットフォームにもデプロイできるように、選択肢を大切にしています。
- 統合されたコードベース – NGINX Ingress Controllerは、ロードバランシングに100%純粋なNGINXオープンソースまたはNGINX Plusインスタンスを使用し、NGINXのネイティブ機能のみを使用してベストプラクティスの構成を適用しています。サードパーティのモジュールやLuaコードに依存することなく、相互運用性テストを実施しています。ロードバランサー(NGINXとNGINX Plus)とIngress Controllerのソフトウェア(Goアプリケーション)を自分たちで開発し、メンテナンスしています。私たちは、Ingress Controllerのすべてのコンポーネントの権限を一手に引き受けています。
- 高度なトラフィック管理 – Kubernetes標準のIngressリソースの制限の1つは、高度な機能でカスタマイズするために、アノテーション、ConfigMaps、顧客テンプレートなどの補助機能を使用しなければならないことです。NGINX Ingressリソースは、TCP/UDP、サーキットブレーキング、A/Bテスト、ブルーグリーンデプロイメント、ヘッダー操作、相互TLS認証(mTLS)、Webアプリケーションファイアウォール(WAF)などのIngress負荷分散機能の実装を簡素化する、ネイティブでタイプセーフ、かつインデントされた設定様式を提供します。
- 継続的な生産準備 – すべてのリリースは、サポート可能な生産標準に基づき構築され、維持されています。NGINXオープンソースベースエディションとNGINXプラスベースエディションのいずれを使用している場合でも、この「エンタープライズグレード」の焦点から同様に利益を得ることができます。NGINX Open SourceのユーザーはGitHub上で当社のエンジニアリングチームから質問に回答してもらうことができ、NGINX Plusのユーザーは最高のサポートを受けることができます。いずれにせよ、NGINXの開発者がDevOpsチームにいるようなものです。
NGINX Open SourceとNGINX Plusの比較 – 商用版へのアップグレードをお勧めする理由
まず、NGINX PlusベースのNGINX Ingress Controllerで得られる主なメリットもおさらいしておきましょう。Ingress Controllerの選択ガイド, Part 3:オープンソース / デフォルト / 商用版で説明したように、オープンソースと商用のIngress Controllerにはかなりの違いがあります。大規模なKubernetesのデプロイと本番での複雑なアプリを計画している場合、当社の商用Ingress Controllerはいくつかの重要な領域で時間とコストを節約できるでしょう。
セキュリティとコンプライアンス
多くの組織がKubernetesアプリケーションの本番での提供に失敗する主な理由の1つは、セキュリティとコンプライアンスを維持することの難しさです。NGINX PlusベースのNGINX Ingress Controllerは、アプリケーションと顧客の安全を維持するために重要な5つのユースケースを提供します。
- エッジの保護 – 適切に設計されたKubernetesの導入において、Ingress ControllerはKubernetes内で動作するサービスに流れるデータプレーントラフィックの唯一のエントリポイントであり、Webアプリケーションファイアウォール(WAF)に最適な場所となっています。NGINX App ProtectはNGINX Ingress Controllerと統合し、KubernetesアプリをOWASP Top 10やその他多くの脆弱性から保護し、PCI DSSコンプライアンスを確保し、ModSecurityを上回ります。
- 認証と承認の一元化 – OAuth 2.0 フレームワーク上に構築された OpenID Connect (OIDC) と JSON Web Token (JWT) 認証により、イングレスポイントで認証とシングルサインオン (SSO) レイヤーを実装することが可能です。
- エンドツーエンドの暗号化の実装 – サービス間のトラフィックを保護する必要がある場合、おそらくサービスメッシュを探すことになるでしょう。常に無料のNGINX Service MeshはNGINX Ingress Controllerとシームレスに統合され、他のメッシュよりもレイテンシーが少なく、イングレスとイグレスの両方のmTLSトラフィックを効率的に制御することができます。
- タイムリーで積極的なパッチ通知 – CVE が報告されると、加入者は積極的に情報を受け取り、迅速にパッチを入手することができます。GitHubでアップデートを探したり、パッチのリリースを数週間(数ヶ月)待つ必要がなく、すぐにパッチを適用して悪用されるリスクを軽減することができます。
- FIPSに準拠する – FIPSモードを有効にして、NGINX Plusと通信するクライアントが信頼できる実装で強力な暗号を使用していることを確認することができます。
ドイツの大手自動車メーカーAudiがどのようにRed Hat OpenShiftアプリケーションを保護したかをNGINXの活用で技術的ビジョンとアプリの革新を未来につなげるAudi社で紹介しています。
アプリケーションのパフォーマンスとレジリエンス
開発者やプラットフォーム運用チームにとって、アップタイムとアプリの速度はしばしば重要な業績評価指標(KPI)となります。NGINX PlusベースのNGINX Ingress Controllerは、Kubernetesの約束を実現するのに役立つ5つのユースケースを提供します。
- ライブモニタリング – NGINX Plusのダッシュボードには、何百もの主要なロードおよびパフォーマンスメトリクスが表示されるので、遅い(またはダウンしている)アプリケーションの原因をすばやくトラブルシューティングすることができます。
- 障害の早期発見と解決 – TCPとUDPのアップストリームサーバーの健全性を積極的に監視するアクティブヘルスチェックを備えたサーキットブレーカーを導入します。
- 再起動不要の再設定 – より高速で中断のない再設定により、一貫したパフォーマンスとリソースの使用、およびオープンソースの代替品よりも低いレイテンシーでアプリケーションを提供できるようにします。
- 新機能とデプロイの徹底的なテスト – キーバリューストアを活用して、再読み込みの必要なくパーセンテージを変更することにより、A/Bテストとブルーグリーンデプロイメントを簡単に実行できるようにします。
- サポートニーズの迅速な解決 – コミュニティからの回答を待てない企業や、機密データの漏洩リスクを避けたい企業にとって、機密性の高い商用サポートは欠かせません。NGINXサポートは、お客様のニーズに合わせて複数の階層で提供され、インストール、デプロイメント、デバッグ、およびエラー修正に関する支援をカバーしています。また、何か「おかしい」と感じたときにもサポートを受けることができます。
ビジネス・テキスト・メッセージング企業であるZipwhip社が、SaaSアプリケーションの99.99%のアップタイムを達成した方法をStrengthen Security and Traffic Visibility on Amazon EKS with NGINXで紹介しています。
次のステップ: NGINX Ingress Controllerを試す
もし、あなたのアプリにオープンソースのIngress Controllerが適していると判断されたなら、弊社のGitHubリポジトリですぐに始めることができます。
大規模なプロダクションデプロイメントには、NGINX Plus をベースにした商用 NGINX Ingress Controllerを試してみてください。NGINX App Protect を含む 30 日間の無料トライアルが利用可能です。