プレビュー版をご提供できることを嬉しく思います
NSMは無料です
マイクロサービス手法の実装は、配信の規模が拡大し、複雑になるにつれて困難を伴います。 サービス間の通信はより複雑になり、問題のデバッグはより困難になり、管理に必要なリソースが増えるサービスが増えています。
NSM は以下を提供することでこれらの問題を解決します。
- セキュリティ、これは今まで以上に重要になっています。 データ侵害は、企業の収益と評判の損失として年間数百万ドルの損失をもたらす可能性があります。 NSM は、すべての接続が mTLS を使用して暗号化されることを保証するため、ネットワーク経由でハッカーによって機密データが盗まれることはありません。 アクセス制御を使用すると、サービスが他のサービスと通信する方法に関するポリシーを設定できます。
- 交通管理。 アプリケーションの新しいバージョンを出荷するときは、エラーが発生した場合に備えて、アプリケーションへの受信トラフィックを制限することから始めることができます。 NSM のインテリジェントなコンテナ トラフィック管理を使用すると、時間の経過とともにトラフィックが増加する新しいサービスに対してトラフィック制限ポリシーを設定できます。 速度制限やサーキット ブレーカーなどのその他の機能により、すべてのサービスのトラフィック フローを完全に制御できます。
- 可視化。 何千ものサービスを管理することは、デバッグと視覚化の悪夢になる可能性があります。 NSM は、NGINX Plus で利用可能なすべての機能を表示する組み込みの Grafana ダッシュボードを使用して、この状況に対処するのに役立ちます。 また、実装された Open Tracing により、トランザクションを詳細に監視できます。
- ハイブリッド配送, あなたの会社が、他のほとんどの会社と同様に、完全に Kubernetes 上で実行されるインフラストラクチャを使用していない場合。 NSM は、レガシー アプリケーションが放置されないようにします。 実装された NGINX Kubernetes Ingress Controller の助けを借りて、レガシー サービスはメッシュ サービスと通信でき、またその逆も可能になります。
NSM はまた、暗号化と認証をコンテナ トラフィックに透過的に適用することで、ゼロトラスト環境におけるアプリケーションのセキュリティを確保します。 また、トランザクションの可視性と分析も提供し、展開を迅速かつ正確に開始し、問題のトラブルシューティングを行うのに役立ちます。 また、きめ細かなトラフィック制御も提供するため、DevOps チームはアプリケーションの一部をデプロイおよび最適化できると同時に、開発者は分散アプリケーションを構築して簡単に接続できるようになります。
NGINX サービス メッシュはどのように機能しますか?
NSM は、水平 (サービス間) トラフィック用の統合データ プレーンと垂直トラフィック用の組み込み NGINX Plus Ingress コントローラーで構成され、単一のコントロール プレーンによって管理されます。
コントロール プレーンは、NGINX Plus データ プレーン用に特別に設計および最適化されており、NGINX Plus サイドカー全体に分散されるトラフィック制御ルールを定義します。
NSM では、メッシュ内のサービスごとにサイドカー プロキシがインストールされます。 これらは、次のオープンソース ソリューションとインターフェイスします。
- Grafana、Prometheus パラメーターの視覚化、組み込み NSM パネルが作業に役立ちます。
- Kubernetes イングレス コントローラー。メッシュ内の受信トラフィックと送信トラフィックを管理します。
- SPIRE、メッシュ内の証明書の管理、配布、更新を行う CA。
- NATS: ルート更新などのメッセージをコントロール プレーンからサイドカーに送信するためのスケーラブルなシステム。
- オープン トレーシング、分散デバッグ (Zipkin および Yeter をサポート)。
- Prometheus は、リクエスト、接続、SSL ハンドシェイクの数などの特性を NGINX Plus サイドカーから収集して保存します。
機能とコンポーネント
データ プレーンとしての NGINX Plus は、サイドカー プロキシ (水平トラフィック) と Ingress コントローラー (垂直トラフィック) をカバーし、サービス間のコンテナ トラフィックをインターセプトして管理します。
特徴は次のとおりです。
- 相互 TLS (mTLS) 認証。
- 負荷分散。
- 耐障害性。
- 速度制限;
- サーキットブレーカー;
- ブルーグリーンおよびカナリア展開。
- アクセス制御。
NGINX サービス メッシュの起動
NSM を実行するには、以下が必要です。
- Kubernetes環境へのアクセス。 NGINX Service Mesh は、Amazon Elastic Container Service for Kubernetes (EKS)、Azure Kubernetes Service (AKS)、Google Kubernetes Engine (GKE)、VMware vSphere、ハードウェア サーバーにデプロイされた通常の Kubernetes クラスターなど、多くの Kubernetes プラットフォームでサポートされています。
- ツール
kubectl
、NSM のインストール元のマシンにインストールされます。 - NGINX Service Mesh リリース パッケージへのアクセス。 パッケージには、Kubernetes クラスターで使用可能なコンテナーのプライベート レジストリにアップロードするために必要な NSM イメージが含まれています。 パッケージには次のものも含まれています
nginx-meshctl
、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
コントロール プレーンが名前空間で正しく動作することを確認する nginxメッシュ、 あなたはこれを行うことができます:
$ 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 サイドカー プロキシがデフォルトでアプリケーションに追加されます。 自動追加を無効にするには、次をお読みください。
たとえば、アプリケーションをデプロイすると、 眠る 名前空間内 デフォルト、次にポッドを確認します。XNUMX つの実行中のコンテナーとアプリケーションが表示されます。 眠る および関連するサイドカー:
$ kubectl apply –f sleep.yaml
$ kubectl get pods –n default
NAME READY STATUS RESTARTS AGE
sleep-674f75ff4d-gxjf2 2/2 Running 0 5h23m
アプリケーションを監視することもできます 眠る NGINX Plus パネルで次のコマンドを実行して、ローカル マシンからサイドカーにアクセスします。
$ kubectl port-forward sleep-674f75ff4d-gxjf2 8080:8886
それなら中に入りましょう
個々の Kubernetes リソースを使用して、アクセス制御、レート制限、サーキット ブレークなどのトラフィック ポリシーを構成できます。詳細については、「
まとめ
NGINX Service Mesh は、以下から無料でダウンロードできます。
NGINX Plus Ingress Controller を試すには、アクティブ化してください
翻訳:同社エンジニア、Pavel Demkovich
出所: habr.com