NGINX Full Version

無料のサービスメッシュ「NGINX Service Mesh」

NGINX Plusをデータプレーンとして利用してKubernetes環境のコンテナトラフィックを管理する、完全統合型の軽量サービスメッシュ「NGINX Service Mesh(NSM)」の開発版を発表します。NSMは現在無料でダウンロードできますので、開発・テスト環境で、ぜひNSMをお試しください。皆様からのGitHubへのフィードバック投稿をお待ちしています。

マイクロサービス手法を採用する場合、導入の規模の拡大と複雑化に伴い、いくつかの課題が生じることになります。サービス間の通信は複雑で、問題のデバッグが困難になる恐れがあり、またサービス が増えればその分、管理対象のリソースが増加することになります。

NSMは、以下の機能の一元的なプロビジョニングを可能にすることで、これらの課題に対処します。

NSMは、暗号化と認証をコンテナトラフィックにシームレスに適用することで、ゼロトラスト環境のアプリケーションを保護します。これによってトランザクションの可観測性と洞察がもたらされ、すばやく的確な導入と問題解決が促進されます。さらには、トラフィックの細かな管理が実現することで、DevOpsチームによるアプリケーションコンポーネントの導入と最適化が可能になるだけでなく、Devチームが分散アプリケーションを構築し、それらに容易に接続できるようになります。

NGINX Service Meshとは?

NSMは、マイクロサービスアプリケーション間トラフィック用の統合データプレーンと、ネイティブに統合された外部トラフィック用のNGINX Plus Ingress Controllerからなり、これらが1つのコントロールプレーンで管理されます。

コントロールプレーンは、NGINX Plus データプレーン向けに設計・最適化されており、NGINX Plusサイドカーに分散されるトラフィック管理ルールを定義します。

NSMでは、すべてのサービスやアプリケーションに並んでサイドカープロキシがメッシュに導入されます。これらのプロキシは、以下のオープンソースソリューションと統合されます。

機能とコンポーネント

NGINX Plusは、データプレーンとしてサイドカープロキシ(East-Westトラフィック)とIngress Controller(North-Southトラフィック)をカバーする一方で、サービス間のコンテナトラフィックの傍受と管理を行います。機能には以下のものが含まれます。

NGINX Service Meshの使用を開始するには

NSMの使用を始めるには、まず以下の準備が必要となります。

NSMをデフォルト設定で導入するには、以下のコマンドを実行します。導入時には、メッシュコンポーネントが問題なく導入されているか、また最終的にそのNSMが専用のネームスペースで動作しているかどうかを、トレースにより確認できます。

$ DOCKER_REGISTRY=your-Docker-registry ; MESH_VER=0.6.0 ; \
 ./nginx-meshctl deploy  \
  --nginx-mesh-api-image "${DOCKER_REGISTRY}/nginx-mesh-api:${MESH_VER}" \
  --nginx-mesh-sidecar-image "${DOCKER_REGISTRY}/nginx-mesh-sidecar:${MESH_VER}" \
  --nginx-mesh-init-image "${DOCKER_REGISTRY}/nginx-mesh-init:${MESH_VER}" \
  --nginx-mesh-metrics-image "${DOCKER_REGISTRY}/nginx-mesh-metrics:${MESH_VER}"
Created namespace "nginx-mesh".
Created SpiffeID CRD.
Waiting for Spire pods to be running...done.
Deployed Spire.
Deployed NATS server.
Created traffic policy CRDs.
Deployed Mesh API.
Deployed Metrics API Server.
Deployed Prometheus Server nginx-mesh/prometheus-server.
Deployed Grafana nginx-mesh/grafana.
Deployed tracing server nginx-mesh/zipkin.
All resources created. Testing the connection to the Service Mesh API Server...

Connected to the NGINX Service Mesh API successfully.
NGINX Service Mesh is running.

非デフォルト設定など、追加のコマンドオプションがある場合は、以下を実行します。

$ nginx-meshctl deploy –h

NSMコントロールプレーン がnginx-meshネームスペースで正しく動作していることを確認するには、以下を実行します。

$ kubectl get pods –n nginx-mesh
NAME                                 READY   STATUS    RESTARTS   AGE
grafana-6cc6958cd9-dccj6             1/1     Running   0          2d19h
mesh-api-6b95576c46-8npkb            1/1     Running   0          2d19h
nats-server-6d5c57f894-225qn         1/1     Running   0          2d19h
prometheus-server-65c95b788b-zkt95   1/1     Running   0          2d19h
smi-metrics-5986dfb8d5-q6gfj         1/1     Running   0          2d19h
spire-agent-5cf87                    1/1     Running   0          2d19h
spire-agent-rr2tt                    1/1     Running   0          2d19h
spire-agent-vwjbv                    1/1     Running   0          2d19h
spire-server-0                       2/2     Running   0          2d19h
zipkin-6f7cbf5467-ns6wc              1/1     Running   0          2d19h

手動もしくは自動のインジェクションのポリシーを設定する導入オプションによっては、NGINXサイドカープロキシが導入済みのアプリケーションにデフォルトで挿入することが可能です。自動インジェクションを無効にする方法については、こちらの資料をご参照ください。

たとえば、defaultネームスペースにsleepアプリケーションを導入した後にポッドを調べると、sleepアプリケーションと それに関連するNGINX Plus サイドカーの2つのコンテナが動作していることがわかります。

$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NAME                     READY   STATUS    RESTARTS   AGE
sleep-674f75ff4d-gxjf2   2/2     Running   0          5h23m

以下のコマンドを実行して、ローカルマシンでサイドカーが表示されるようにすることで、native NGINX Plus dashboardsleepアプリケーションをモニタリングすることもできます。

$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886

続いて、ブラウザでhttp://localhost:8080/dashboard.htmlを開きます。Prometheusサーバに接続して、sleepアプリケーションをモニタリングすることも可能です。

Kubernetesでカスタムリソースを利用して、アクセス制御、レート制限、サーキットブレーカーなどのトラフィックポリシーを設定できます。詳しくは、こちらの資料をご参照ください。

まとめ

NGINX Service Meshは、F5 ポータルから無料でダウンロードしていただけます。御社の開発・テスト環境でNSMをお試しいただいた後に、是非GitHubにフィードバックを投稿してください。

NGINX Plus Ingress Controllerを試すには、30日間の無料トライアルを今すぐ開始していただけます。F5までお問い合わせいただければ、個別のユースケースのご相談にも対応します。