サービスグリッドのlstioの紹介

このブログへのリンク: https://security.blog.csdn.net/article/details/128449214

1. マイクロサービスの概念

マイクロサービスとは、完全なアプリケーションのすべてのモジュールを複数の異なるサービスに分割することであり、各サービスは個別に展開、維持、拡張でき、通常は RESTful API を介して相互に通信できます. これらのサービスはビジネス機能の構築を中心に展開し、各サービスは次のことができますさまざまなプログラミング言語とさまざまなデータ ストレージ テクノロジを使用します。

マイクロサービス設計の本質は、より明確な機能とより洗練されたビジネスを備えたサービスを使用して、より大きくより現実的な問題を解決することです。

2. サービスメッシュの概念

サービス メッシュは通常、アプリケーション自体を意識せずに、アプリケーションと一緒に展開される一連の軽量ネットワーク プロキシを介して実装されます。

サービス グリッドは、アプリケーションに対して透過的なサイドカーとしてサービスの隣で実行されます. アプリケーションを通過するすべてのトラフィックはサイドカーを通過します. したがって、サイドカーは、サービスの検出、負荷分散、インテリジェントなルーティングなどのトラフィック制御機能を実装します.フォールト挿入、ヒューズ デバイス、TLS ターミネーションなど。サービス グリッドの出現により、マイクロサービス ガバナンスがアプリケーション自体から分離され、サイドカーの形でコードの結合度が大幅に減少し、マイクロサービス管理が複雑ではなくなります。

現在、より一般的なサービス グリッドには、Istio、Linkerd、Envoy、NginMesh、Conduit などがあります。その中で、Istio は、コミュニティの人気と大手メーカーの共同開発投資により、サービス グリッドの業界標準となっています。

3.lstio(イスティオ)の紹介

3.1. Istio アーキテクチャー

Istio はマイクロサービス管理フレームワークであり、サービス グリッドの代表的な実装とも考えられており、Google、IBM、Lyft が共同で開発したオープン ソース プロジェクトです。アーキテクチャ図は次のとおりです。

ここに画像の説明を挿入

Istio アーキテクチャの設計はソフトウェア定義ネットワーク (SDN) に似ています. 主にコントロール プレーンとデータ プレーンの 2 つの部分に分けられます. データ プレーンは一連のエージェントで構成され、サービスの隣にデプロイされます.サイドカーの形式. これらのエージェントは、サービス間のすべてのサービスを管理する責任があります. ネットワーク通信; コントロールプレーンは、データプレーンのエージェントを管理および構成するために使用されます. この設計には多くの利点があります. 第一に、ビジネス コンテナのコー​​ドを変更する必要がないため、アプリケーションは最大限に透過的になり、アプリケーションはプロキシ インジェクションを認識しなくなります. 一方、Istio のオープン インターフェイスと柔軟な展開メカニズムが大幅に改善され、スケーラビリティと移植性が向上します。最後に、Istio の統合ポリシー管理は、多くのサービスベースのポリシーをサイドカーから切り離し、API を介してそれらを一様に管理することで、運用コストを簡素化します。

3.2. データプレーン

Istio のデータ プレーンは、一連のネットワーク プロキシで構成されています。Istio で使用されるデフォルトのプロキシは Envoy です。もちろん、linkerd、nginmesh、moison、または開発者自身が作成したプロキシなど、他のプロキシに置き換えることもできます。Envoy は、C++ に基づいて開発された高性能プロキシであり、サービス メッシュ内のサービスのすべてのインバウンドおよびアウトバウンド トラフィックを仲介します。Envoy プロキシは、Istio データ プレーン トラフィックと対話する唯一のコンポーネントです。

Envoy のコアは L3/L4 および L7 レイヤー ネットワーク プロキシです. Envoy の内部フィルター メカニズムとオープン フィルター プログラミング インターフェースを通じて、開発者は Envoy の既存のフィルターまたはカスタム フィルターを使用して、ビジネス トラフィックをきめ細かく管理できます。

Envoy の組み込み機能には、「サービス検出」、「負荷分散」、「TLS 終了」、「HTTP/2」、「GRPC プロキシ」、「サーキット ブレーカー」、「ヘルス チェック」、「トラフィック分割のパーセンテージに基づくグレースケール」が含まれます。リリース」、「フォールトインジェクション」など。

Envoy は通常、Istio でサイドカーとしてデプロイされ、サイドカーはビジネス コンテナーと同じポッドにデプロイされます。このデプロイ モードにより、Istio は大量のトラフィック関連情報をメタデータとして抽出できます。Istio は、これらのメタデータを使用して対応するポリシーを実装し、同時にメタデータを Prometheus、Zipkin、Jaeger などの外部監視システムに送信して、サービス グリッドで発生する動作を視覚化できます。

3.3. コントロールプレーン

Istiod は Istio のコントロール プレーン コンポーネントであり、istiod には Pilot、Citadel、Galley の 3 つのサブコンポーネントが含まれています。

パイロット

Pilot は、Envoy Sidecar のサービス ディスカバリの提供、インテリジェントなルーティングと回復力 (A/B テスト、カナリア デプロイ、タイムアウト、再試行、サーキット ブレーカーなど) のためのトラフィック管理の提供、およびトラフィックを制御する高度なルーティング ルールの特定の Envoy への変換を担当します。構成し、実行時に Envoy/Sidecar コンテナに伝播します。

ここに画像の説明を挿入

上の図から、対話プロセスは主に次の 3 つのステップに分かれていることがわかります。

1. プラットフォームがサービスの新しいインスタンスを開始し、インスタンスが Pilot のプラットフォーム アダプターに通知する;
2. プラットフォーム アダプターが Pilot の抽象モデルを使用してインスタンスを登録する;
3. Pilot がトラフィック ルールと構成をデータ プレーン上の Envoy エージェントに送信する;

この疎結合設計により、Istio を Kubernetes、Consul、Nomad などの複数の環境で実行しながら、トラフィック管理用に同じ Operator インターフェースを維持できることがわかります。

シタデル

Citadel は Istio のセキュリティ モジュールです. 組み込みの ID および証明書管理を通じて, 強力なサービス間およびエンドユーザー認証をサポートできます. 同時に、Citadel を使用してサービス グリッド内の暗号化されていないトラフィックをアップグレードできます.

ギャレー

ギャレーは、Istio 構成プロセスにおける検証、抽出、処理、および配布のコア コンポーネントです. ビジネス機能をデータ プレーンに直接提供するのではなく、コントロール プレーン上の他のコンポーネントにサポートを提供するため、他のコンポーネントは、 Galley を扱う.したがって、基盤となるプラットフォーム (Kubernetes など) から分離します。

4.Istioの特徴

4.1、Istio トラフィック管理

Istio には、リクエスト ルーティング、フォールト インジェクション、トラフィック マイグレーションなど、豊富なトラフィック管理機能があります。

リクエスト ルーティング

Istio は、カナリア デプロイメントを実現するために、アクセス サービス トラフィックを特定のバージョンにリダイレクトするために主に使用されるユーザー配信のリクエスト ルーティング ポリシーをサポートします (カナリア リリースとは、本番環境のバックエンド アプリケーションをステージ バージョンで段階的に更新することを指します (必要)フロー制御機能)、および小規模な検証が期待に応えた後、本番環境全体に昇格されます). この方法は、新しいプロジェクトをオンラインでテストするときに多くの利点をもたらします.

故障注入

Istio のフォールト注入メカニズムは、主にアプリケーション全体のフォールト リカバリ機能をテストするために使用されます. 最終的に、フォールト戦略が非互換で制限的でないことを確認できます. 他のネットワーク層で導入されたフォールト メカニズムとは異なり、Istio はアプリケーションにフォールトを挿入します. http ステータス コードを使用して失敗の結果を示すなど、より多くの結果を取得できるようにします。

トラフィックの移行

トラフィックの移行とは、アプリケーションのあるバージョンから別のバージョンへのトラフィックの段階的な移行を指します. Istio では、一連のルールを設定することでこの目標を達成できます. たとえば、リクエストのトラフィックの 50% をサービス A の v1 バージョンに送信され、残りの 50% のトラフィックはサービス A の v2 バージョンに送信されます。次に、しきい値を調整して移行を行い、最終的にトラフィックの 100% をサービス A の v2 バージョンに送信します。

4.2. Istio のセキュリティー

Istio は、Citadel コンポーネントを介してサービス グリッド内のサービスに署名付き証明書を提供し、マイクロサービス間の通信セキュリティを確保できます. さらに、Istio の認証および承認メカニズムは、サービス グリッド サービスに比較的安全なアクセス環境を提供します.

4.3. Istio 可観測性

Istio のアーキテクチャ全体には、kiali、Prometheus、Grafna などの監視および可視化ツールが含まれているため、サービス グリッド内のサービス コール チェーンとリクエスト数を可視化することができ、サービス グリッドの可観測性が向上します。

おすすめ

転載: blog.csdn.net/wutianxu123/article/details/128449214