さまざまな条件による外部通信の制御にはNGINX Ingress Controllerを活用
NGINX Ingress ControllerではHTTP、gRPC、WebSocketのリバースプロキシを同時に設定可能で、HTMLヘッダーやコンテンツの中身をチェックする「Active Health Checks」機構も利用できる。加えて、アプリケーションごとにJWT・OpenIDベースの認証機能を持たせることも可能だ。
また、アプリケーションの新しいバージョンがKubernetes環境に、旧バージョンがAWS環境にあり、それぞれを区別して振り分けたい場合など、NGINX Ingress ControllerのExternalNameという設定を利用して実現できる。
「組織によってGCPを使う部署、AWSを使う部署、Azure環境を使う部署がそれぞれ存在する場合もあるでしょう。ExternalNameを使えばうまくルーティングの制御ができます。コンピューターパワーが必要な場面など、データセンターの物理環境にも振り分けが可能です。新しいバージョンをリリースする際、まずは1割の人だけに新バージョンにアクセスさせてエラー率やバグを見るようなweightの設定もできます」と鈴木氏。
さらに、マルチクラウドやオンプレミス環境に設置したAPIもNGINX Controller 3.0を活用することで管理ができる。各環境にエージェントを設置してControllerからURLリライトやレート制限、端末ごとの認証・制限などの設定、管理を可能にする仕組みだ。
続いて鈴木氏は、監視運用という視点でのNGINX活用についての説明に移った。NGINXはインフラ・サービス監視ツールの「Prometheus」のインテグレーションもあるので、そこでログを取得・監視することもできる。「F5/NGINX Community!」のイベントでは、NGINXにて処理中コネクション数のメトリクスを利用してPrometheusで監視したログを、Kubernetes環境にあるPodのオートスケーリングの指標にした、ウォンテッドリーの事例が発表された。
「アプリケーションがどのように使われているか、レスポンスタイムはどれくらいか、といった状態を把握する際にも使えます。Datadogなどのエージェントにも対応しているので、簡単に2~3行の設定をすると、グラフィカルなダッシュボードで監視可能です。複数台の合計値や平均値なども見ることができ、NGINX Controllerから好みのパラメーターを取り出してオリジナルのダッシュボードに展開することも可能です」と鈴木氏は話す。
NGINXの導入、活用方法、監視運用まで説明した鈴木氏はこのあと、先ほど紹介したExternalNameによる振り分けのデモンストレーションを実施した。
デモンストレーションは、GKE上に用意したKubernetesクラスターと、Amazon EC2インスタンスに置いたWebページを振り分けるもの。ExternalNameにはAWSのURLを指定する。「https://gke-v2.example.com/」はGKEへ、「https://aws-v2.example.com/」はAmazon EC2インスタンスに向ける設定で、5分ほどで設定が完了した。
さらにAzureのKubernetes環境における同様のデモンストレーションも行われた。
デモンストレーションについて鈴木氏は「サービスの実態はGKEに、ちょっと作って試したいものはAWSに置いておく場合にも使えます。AzureにもKubernetesサービスがあるので同じように設定できます。このようにKubernetesなら、NGINXの設定をうまく使うことで、マルチクラウド環境が手軽に利用可能です。振り分けたあとにBasic認証や、JWT認証の処理を入れることもできますよ」と解説を加え、セッションを締めくくった。
お問い合わせ
NGINX (Part of F5)