[この投稿は、eBook「Managing Kubernetes Traffic with F5 NGINX: A Practical Guide」からの抜粋です。今すぐ無料でダウンロードしてください。]
HTTPトラフィックに加え、NGINX Ingress ControllerはTCPとUDPのトラフィックをロードバランシングするため、下記に含まれるプロトコルに基づくさまざまなアプリやユーティリティのトラフィック管理に使用することができます。
- MySQL、LDAP、MQTT – 多くの一般的なアプリケーションで利用されているTCPベースのアプリケーション
- DNS、syslog、RADIUS – エッジデバイスや非トランザクションアプリケーションで使用されるUDPベースのユーティリティ
NGINX Ingress ControllerによるTCPおよびUDPのロードバランシングは、以下のような状況でKubernetesアプリケーションにネットワークトラフィックを分散させるのにも効果的なソリューションです。
- エンドツーエンド暗号化(EE2E)を使用し、NGINX Ingress Controllerではなく、アプリケーションに暗号化と復号化を処理させる場合。
- TCPまたはUDPをベースとするアプリケーションで、高いパフォーマンスのロードバランシングが必要な場合。
- 既存のネットワーク(TCP/UDP)ロードバランサーをKubernetes環境に移行する際に、変更点を最小限に抑えたい場合。
NGINX Ingress Controllerには、TCP/UDPのロードバランシングをサポートする2つのNGINX Ingressリソースが付属しています。
- GlobalConfiguration リソースは通常、クラスタ管理者が、DevOpsチームが使用できるTCP/UDPポート(
listeners
)を指定するために使用されます。各NGINX Ingress Controllerのデプロイメントには、1つのGlobalConfigurationリソースしかないことに注意してください。 - TransportServer リソースは通常、DevOpsチームがアプリケーションのTCP/UDPロードバランシングを構成するために使用されます。NGINX Ingress Controllerは、GlobalConfigurationリソースで管理者がインスタンス化したポートのみをリッスンします。これにより、ポート間の競合を防ぎ、管理者が安全であると事前に判断したポートのみをDevOpsチームが公共の外部サービスに公開することを保証し、セキュリティのレイヤーを追加します。
次の図は、GlobalConfiguration および TransportServer リソースの使用例の例です。gc.yamlでは、クラスタ管理者がGlobalConfigurationリソースでTCPおよびUDPリスナーを定義しています。ts.yamlでは、DevOpsエンジニアがTransportServerリソースでTCPリスナーを参照し、MySQL展開にトラフィックをルーティングしています。
gc.yaml definesのGlobalConfigurationリソースは、2つのリスナーを定義しています。ポート514のUDPリスナーはsyslogサービスへの接続用、ポート5353のTCPリスナーはMySQLサービスへの接続用です。
ts.yamlのTransportServerリソースの6~8行目は、gc.yamlで定義されているTCPリスナーを名前(mysql-tcp
)で参照し、9~14行目はTCPトラフィックをmysql-db
upstreamに送るルーティングルールを定義しています。
この例では、DevOpsエンジニアがMySQLクライアントを使用して、MySQLデプロイメント内のrawdata_content_schema
データベースのテーブルのリストを出力して確認し、設定が機能していることを検証しています。
$ echo “SHOW TABLES” | mysql –h <external_IP_address> -P <port> -u <user> –p rawdata_content_schema
Enter Password: <password>
Tables_in_rawdata_content_schema
authors
posts
UDPトラフィック用のTransportServerリソースも同様に構成されます。完全な例については、GitHubのNGINX Ingress ControllerリポジトリのBasic TCP/UDP Load Balancingをご覧ください。NGINXに詳しい ユーザーであれば、リポジトリの Support for TCP/UDP Load Balancing の例で示されているように、stream-snippets
ConfigMap キーを使用してネイティブ NGINX 設定で TransportServer リソースを拡張することができます。
TransportServerリソースで設定可能な機能の詳細については、NGINX Ingress Controllerのドキュメントのドキュメントを参照してください。
この投稿は、当社のeBook「Managing Kubernetes Traffic with F5 NGINX: A Practical Guide」からの抜粋です。今すぐ無料でダウンロードできます。
NGINX PlusをベースにしたNGINX Ingress Controllerを30日間の無料トライアルで今すぐお試しいただくか、お客様の使用例について弊社までお問い合わせください。