Azure Kubernetes Service 用の Istio ベースのサービス メッシュ アドオン
Istio は、分散アーキテクチャまたはマイクロサービス アーキテクチャで開発者とオペレーターが直面する課題を解決します。 Istio ベースのサービス メッシュ アドオンは、正式にサポートされているテスト済みの Azure Kubernetes Service (AKS) 向け統合を提供します。
サービス メッシュとは
最新のアプリケーションは一般的にマイクロサービスの分散コレクションとして設計され、それぞれのコレクションで個別のビジネス機能が実行されます。 サービス メッシュは、アプリケーションに追加できる専用のインフラストラクチャ レイヤーです。 これを使用すると、監視、トラフィック管理、セキュリティなどの機能を透過的に追加できます。これらの機能を独自のコードに追加する必要はありません。 サービス メッシュという用語は、このパターンの実装に使用するソフトウェアの種類と、そのソフトウェアを使用するときに作成されるセキュリティ ドメインまたはネットワーク ドメインの両方を表します。
Kubernetes ベースのシステムなどで分散サービスのデプロイのサイズと複雑さが増すにつれて、そのデプロイを把握して管理するのが困難になることがあります。 場合によっては、検出、負荷分散、障害復旧、メトリック、監視などの機能を実装する必要があります。 サービス メッシュでは、A/B テスト、カナリア デプロイ、レート制限、アクセスの制御、暗号化、エンド ツー エンド認証といったより複雑な運用要件にも対応できます。
分散アプリケーションを可能にしているのは、サービス間通信です。 サービスの数が増えると、この通信をアプリケーション クラスター内およびアプリケーション クラスター間でルーティングする作業がますます複雑になります。 Istio を使用すれば、この複雑さを軽減しながら、開発チームの負担も和らげることができます。
Istio とは
Istio は、既存の分散アプリケーションに透過的にレイヤー化するオープンソース サービス メッシュです。 Istio の強力な機能により、サービスをセキュリティで保護し、接続、監視するための一貫した効率的な方法が提供されます。 Istio を使用すると、サービス コードをほとんどまたはまったく変更せずに、負荷分散、サービス間認証、監視を行うことができます。 その強力なコントロール プレーンにより、次のような重要な機能を利用できます。
- TLS (トランスポート層セキュリティ) 暗号化と強力な ID ベースの認証と認可を使用して、クラスター内のサービス間通信をセキュリティで保護。
- HTTP、gRPC、WebSocket、および TCP トラフィックの自動負荷分散。
- 豊富なルーティング規則、再試行、フェールオーバー、およびフォールト インジェクションによる、トラフィックの動作のきめ細かい制御。
- アクセス制御、レート制限、クォータがサポートされる、プラグ可能なポリシー レイヤーおよび構成 API。
- クラスター内のすべてのトラフィック (クラスターのイングレスとエグレスを含む) の自動メトリック、ログ、およびトレース。
アドオンとオープンソース Istio の違い
このサービス メッシュ アドオンはオープンソースの Istio を使用し、これに基づいて作成されています。 アドオンには、次の追加の利点があります。
- Istio バージョンがテスト済みで、サポートされている Azure Kubernetes Service バージョンとの互換性も検証済みです。
- Istio コントロール プレーンのスケーリングと構成は Microsoft が処理します。
- Istio が有効になっている場合、
coredns
などの AKS コンポーネントのスケーリングは Microsoft が調整します。 - ユーザーによってトリガーされたときに、Microsoft が Istio コンポーネントのマネージド ライフサイクル (アップグレード) を提供します。
- 外部と内部のイングレス設定が検証済みです。
- Prometheus 用 Azure Monitor マネージド サービスと Azure Managed Grafana との連携が検証済みです。
- アドオンに対して正式な Azure サポートが提供されます。
制限事項
AKS 用の Istio ベースのサービス メッシュ アドオンには、次の制限があります。
このアドオンは、AKS の Open Service Mesh アドオンを使用する AKS クラスターでは機能しません。
このアドオンは、Istio の自己管理型インストールを使用する AKS クラスターでは機能しません。
このアドオンは、メッシュの下に追加される仮想ノードと関連付けられたポッドの追加をサポートしていません。
このアドオンは、送信トラフィック制御用のエグレス ゲートウェイをまだサポートしていません。
このアドオンは、サイドカーを使用しないアンビエント モードをまだサポートしていません。 現在、Microsoft は、Istio オープン ソースのアンビエント ワークストリームに貢献しています。 アンビエント モードの製品統合はロードマップにあり、アンビエント ワークストリームの進化に合わせて継続的に評価されています。
このアドオンは、マルチクラスター デプロイをまだサポートしていません。
このアドオンでは、Windows Server コンテナーがまだサポートされていません。 Windows Server コンテナーは、現在、オープン ソースの Istio ではまだサポートされていません。 この機能の質問に関する問題点の追跡は、こちらを参照してください。
現在、カスタム リソース
ProxyConfig, WorkloadEntry, WorkloadGroup, IstioOperator, WasmPlugin
を用いたメッシュのカスタマイズはブロックされます。このアドオンを使うと、次の
EnvoyFilter
フィルターの種類の使用は許可され、他のフィルターの種類はブロックされます。- Lua (
type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua
) - コンプレッサー (
type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
) - ローカル レート制限 (
type.googleapis.com/envoy.extensions.filters.http.local_ratelimit.v3.LocalRateLimit
)
Note
これらの
EnvoyFilter
は許可されていますが、(Lua スクリプトや圧縮ライブラリなど) から発生する問題は、Istio アドオンのサポート範囲外です。 Istio アドオンの機能と構成オプションのサポート カテゴリの詳細については、サポート ポリシー ドキュメントを参照してください。- Lua (
Istio イングレス ゲートウェイまたはメッシュ トラフィック管理のための Gateway API (GAMMA) は、現在、Istio アドオンではまだサポートされていません。 ただし、Istio イングレス トラフィック管理のための Gateway API は現在、そのアドオンに対応するよう開発が進められています。 アドオンでは、IP アドレスとサービス タグに関する Istio イングレス ゲートウェイの注釈のカスタマイズがサポートされていますが、ポートまたはプロトコルの構成は現在はサポートされていません。
フィードバックと機能の質問
Istio アドオンに関するフィードバックと機能の質問を提出するには、AKS GitHub リポジトリで "service-mesh" というラベルを付けて問題を作成します。
次のステップ
Azure Kubernetes Service