はじめに
マイクロサービスを使用する場合、ワークロードの保護と監視が最優先事項です。手動で行う場合、監視は難しい作業です。開発者は、システム内の安全な通信を確保するために各サービスを構成する必要があります。さらに、彼らは交換を監視する必要があり、これには時間がかかります。アプリ自体の開発に費やされた可能性のある時間。
代わりに、はるかに単純なソリューションがあります– Istioなどのサービスメッシュプラットフォームを使用します 。
このチュートリアルでは、Istio、そのアーキテクチャ、およびその使用方法について学習します。
Istioとは何ですか? –Istioサービスメッシュの定義
イスティオ は、マイクロサービス間の通信とデータ共有を管理するオープンソースのサービスメッシュ実装です。このプラットフォームは、ネットワークサービスの管理の複雑さを軽減するために追加されました。
インストールすると、Kubernetesポッド内のアプリケーションコンテナの横にプロキシが挿入されます。各プロキシは、ポリシーを適用しながら、リクエストをインターセプトし、トラフィックを適切なサービスにルーティングするように構成されています。
サービスメッシュが必要な理由
モノリシックアーキテクチャからマイクロサービスアーキテクチャに移行することで、開発者は、はるかに高速なソフトウェア開発ライフサイクル内で、柔軟性が高く、復元力があり、スケーラブルなアプリケーションを構築する機会を得ることができます。マイクロサービスアーキテクチャには多くの利点がありますが、アプリケーション開発の進化には特定の課題もあります。
アーキテクチャは連携して動作する多くの個別のサービスで構成されているため、シームレスな通信を確保することが重要です。これらの自律コンポーネントは、APIを介して相互に通信します。ただし、トラフィックフローとAPI呼び出しの管理には、開発チームの多大な時間と労力が必要です。
チームメンバーがネットワークロジックではなくサービスロジックの開発に集中できるようにするサードパーティソリューションが必要でした。したがって、Istioのようなサービスメッシュは、サービス間通信のネットワーク層を管理するように設計されています。
Istioアーキテクチャ
Istioアーキテクチャには、2つの主要なコンポーネントが含まれています。
- コントロールプレーン。 このコンポーネントは、データプレーンでプロキシを構成および管理するために使用されます。
- データプレーン。 Istioの2番目の要素には、ポッド内に挿入されたすべてのサイドカープロキシが含まれます。
コントロールプレーン
バージョン1.5より前は、コントロールプレーンは、パイロット、シタデル、ギャレーなどのさまざまなコンポーネントのクラスターでした。 Istio1.5はIstiodを導入しました 、上記のコンポーネントを1つに結合したコントロールプレーン。 Istiodは、サービスメッシュの構成と操作を簡素化しました。
コントロールプレーンのIstioサービスには次のものが含まれます:
- パイロット EnvoyAPIを使用してEnvoyサイドカーと通信します。トラフィック管理、ルーティング、およびサービス検出を担当します。
- 城塞 ユーザー認証、証明書、および資格情報の管理を管理することにより、サービス間の安全な通信を提供します。
- ギャレー 構成管理、取り込み、配布、および処理を担当します。
データプレーン
データプレーンは使節で構成されています プロキシ サイドカーとしてポッドに配備されました。これらは、システム内のすべてのサービスと対話し、トラフィックを管理します。これには、マイクロサービス間のすべてのネットワーク通信の制御が含まれます。
これらはサイドカーとして追加されるため、プロキシを実装するためにアプリケーションのアーキテクチャを再設計する必要はありません。
プロキシは、ルーティングルール(HTTP、gRPC、TCPの場合)を指定し、TLSとトラフィックの暗号化を適用することでトラフィックを制御します。
すべてのトラフィックはEnvoyプロキシを通過します。したがって、これらのコンポーネントは大量のデータを収集し、ビジネストラフィックに関する貴重な洞察を提供します。
エンボイプロキシは以下を提供します:
- 動的なサービス検出
- 負荷分散
- ヘルスチェック
- TLS終了
- HTTP/2およびgRPCプロキシ
- サーキットブレーカー
- パーセンテージベースのトラフィック分割による段階的なロールアウト
- フォールトインジェクション
- 豊富な指標
Istioの機能
プラットフォームの最も重要な機能は次のとおりです。
1。 トラフィック制御
Istioの主な機能は、トラフィック管理におけるその役割です。 Envoyプロキシを介してルーティングルールを実装することにより、サービス間のトラフィックの流れを制御します。プロキシをデプロイすることにより、Istioはサービス自体に変更を加えることなくトラフィックとAPI呼び出しを転送します。これにより、ユーザーはカナリアロールアウト、段階的ロールアウト、およびA/Bテストを実行できます。
2。 可観測性
プラットフォームは、ネットワーク層内のすべての着信および発信トラフィックを制御および監視します。したがって、将来の開発に役立つ洞察を提供する大量のデータを収集します。
3。 セキュリティ
開発者は潜在的な脅威やハッキングからアプリケーションを保護しますが、Istioはすべての内部通信を承認、認証、および暗号化します。ポッドとサービスは相互に通信し、Istioのポリシーに基づいてデータを転送します。
Istioの長所と短所
Istioをマイクロサービスアーキテクチャに実装するかどうかを判断するのに役立つように、その長所と短所のいくつかを見てください。
利点
- ネットワークパフォーマンスの問題に関する洞察を提供します。
- サービス間およびポッド間通信を保護します。
- 通信とデータ転送を管理するルーティングルールとポリシーを実装します。
- カナリアの展開とA/Bテストを有効にします。
短所
- Istioはセットアップと実装に時間がかかります。
- また、適切なセットアップと暗号化された通信を確保するために.yamlファイルを構成することは困難です。