Istio on GKE

Istio とは

Istio は、統一された方法でマイクロサービスの接続、管理、保護を実現するオープン サービス メッシュです。マイクロサービス コードを変更することなく、サービス間のトラフィックフ ローの管理、アクセス ポリシーの適用、テレメトリー データの集計を行うことができます。

Istio には次のものが用意されています。

  • HTTP、gRPC、WebSocket、MongoDB、TCP トラフィックの自動負荷分散。
  • 高度なルーティング ルール、再試行、フェイルオーバー、フォールト インジェクションによるトラフィックの動作のきめ細かい制御。
  • アクセス制御、レート上限、割り当てをサポートする構成可能なポリシーレイヤと API。
  • クラスタの上り(内向き)と下り(外向き)を含む、クラスタ内のすべてのトラフィックの指標、ログ、トレースの自動作成。
  • ID ベースの認証と承認を使用した、クラスタ内の安全なサービス間通信。

Istio のアクセス制御、ルーティング ルールなどを構成するには、追加の検証を提供する kubectl または Istio コマンドライン ツール istioctl を使用して、カスタム Kubernetes API を使用します。

Istio の詳細については、istio.io にあるオープンソース ドキュメントをご覧ください。

Anthos Service Mesh とは

Anthos Service Mesh は、Google の完全にサポートされている Istio ディストリビューションです。Anthos Service Mesh は Istio API と互換性があるため、Istio サービス メッシュのメリットをすべて提供できます。

Anthos Service Mesh

Anthos Service Mesh の機能を使ってみるには、GKE 向け Anthos Service Mesh クイックスタートをご覧ください。

Istio on GKE とは何ですか?

Istio on GKE は、GKE クラスタに Istio を自動的にインストールしてアップグレードするためのツールです。GKE をアップグレードすると、アドオンは GKE に対応する最新バージョンの Istio に自動的にアップグレードされます。これにより、Istio のインストールとアップグレードを GKE クラスタのライフサイクルの一部として簡単に管理できます。

Istio on GKE を使用する場合、Istio はクラスタ内で実行されることに注意してください。クラスタで実行されている Istio コンポーネントにはサービスレベル契約(SLA)がありません。

Istio on GKE を使用するべきですか?

Istio on GKE はインストールとアップグレードを管理しますが、構成オプションを制限するコントロール プレーンのデフォルトのインストール オプションを使用します。こうした制限とサービスがベータ版のステータスにあることから、このアドオンを本番環境で使用することはできません。本番環境のワークロードには、Anthos Service Mesh の方が適しています。

アドオンの制限事項は次のとおりです。

  • インストールされた Istio のバージョンは、GKE のバージョンに関連付けられており、個別に更新することはできません。

  • コントロール プレーンの構成には厳格な制限があります。これらの制限があるため、本番環境で Istio on GKE アドオンを使用しないことをおすすめします。

  • このアドオン インストーラは GKE の一部ですが、結果として生成される Istio のインストールは Google がサポートするプロダクトではありません。サポート対象のプロダクトが必要な場合は、Anthos Service Mesh の方が適切です。

より新しいバージョンの Istio を使用する必要がある場合、または Istio コントロール プレーン構成をより細かく制御する場合は(本番環境のユースケースで発生する可能性がある)、Anthos Service Mesh を使用することをおすすめします。

なんらかの理由で自動インストール機能を使用しなくなった場合は、アドオンをアンインストールできます。その方法については、Istio on GKE のアンインストールをご覧ください。

インストールの内容は?

Istio on GKE でクラスタを作成または更新すると、次のコア Istio コンポーネントがインストールされます。

このインストールにより、Istio サイドカー プロキシをサービス ワークロードに追加して、コントロール プレーンと通信して Istio メッシュに参加させることもできます。

アドオンのインストールとアンインストールの詳細については、Istio on GKE のインストールをご覧ください。

Cloud Monitoring のサポート

Google Kubernetes Engine Monitoring が有効になっているクラスタでは、上記のコア コンポーネントとともに Istio Stackdriver アダプタがインストールされます。アダプタは、メッシュから Cloud Logging、Cloud Monitoring、Cloud Trace に指標、ロギング、トレースデータを送信して、Google Cloud Console でサービスの動作を監視できます。プロジェクトとクラスタに対して特定の Cloud Logging、Cloud Monitoring、または Cloud Trace 機能を有効にすると、そのデータはデフォルトでメッシュから送信されます。Istio on GKE アドオンでは、Cloud MonitoringLoggingTraceのクラスタのノードプールにアクセス スコープが自動的に設定されます。

モニタリング

Google Cloud プロジェクトで Cloud Monitoring API が有効化されている場合、Istio メッシュはサービスに関連する指標(たとえば、特定のサービスが受信したバイト数なが)を自動的に送信します。それらの指標は Metrics Explorer に表示されます。これらの指標を使用して、カスタム ダッシュボードとアラートを作成し、サービスの推移を時系列でモニタリングできます。また、例えばサービスが所定のリクエスト数に近づいた場合などにアラートを受信できます。フィルタや集計を使用したこれらの指標を Monitoring の組み込み指標と組み合わせて、サービスの動作に対する新しい分析情報を得ることもできます。

Metrics Explorer を使用してモニタリング対象リソースの指標を表示する方法は次のとおりです。

  1. Google Cloud Console で [Monitoring] を選択するか、次のボタンを使用します。
    [Monitoring] に移動
  2. [Monitoring] のナビゲーション パネルで、 [Metrics Explorer] をクリックします。
  3. モニタリング対象リソースの名前を [Find resource type and metric] テキスト ボックスに入力します。

Istio 指標の完全なリストについては、Cloud Monitoring のドキュメントをご覧ください。

ログ

Google Cloud プロジェクトで Cloud Logging API が有効になっている場合、Istio メッシュは自動的にログを Logging に送信します。送信されたログはログビューアに表示されます。BigQuery へのログのエクスポートなど、ログデータでできることの詳細については、Cloud Logging のドキュメントをご覧ください。

トレース

Istio メッシュがトレース ビューアに表示される Cloud Trace にトレースデータを自動的に送信するように、Cloud Trace を有効にできます。パフォーマンスのボトルネックを見つけるために分散トレースを最大限に活用するには、トレース ヘッダーをインストルメント化するようにワークロードを変更する必要があります。この方法については、Istio 分散トレース ガイドをご覧ください。

アップグレード プロセスの仕組みとは?

Istio のライフサイクルは、GKE アップグレード プロセスの一部として管理されます。GKE には、2 つのアップグレード プロセスがあります。

  • マスター アップグレード: マスター アップグレード プロセスは自動的に行われ、マスターノード上の Kubernetes コントロール プレーン コンポーネント(API サーバー、スケジューラ、コントローラ マネージャーなど)とアドオンを更新します。Istio コントロール プレーン コンポーネントのアップグレードは、このプロセスの一部として管理されます。
  • ノードのアップグレード: ノードのアップグレード プロセスは、自動(オプトイン、推奨)または手動です。これにより、ワーカーノード上の Kubernetes コンポーネントが更新され、同じバージョンのマスターノードと同期されます。Istio サイドカーのアップグレードは、このプロセスの一部として管理されます。

Istio on GKE は、コントロール プレーンを新しい(必ずしも最新ではない)Stable バージョンにアップグレードします。バージョンは、一定期間にわたって観測されたオープンソース デプロイの安定性とパフォーマンスに基づいて選択されます。バージョン アップグレードは、istio-gke-announce グループで事前に発表されます。通常、バージョン アップグレードは、最新のバージョンから 2 週間以上にわたってすべての GKE バージョンに段階的に展開されます。

コントロール プレーンのバージョンは、最後の 2 つのデータプレーン(サイドカー プロキシ)のバージョンとの下位互換性を確認するためにテストされます。GKE クラスタをアップグレードしたら、(自動挿入を有効にして)Pod を再起動するか、適切なバージョンを再度挿入して、サイドカーを最新バージョンのコントロール プレーンに可能な限り早く更新することをおすすめします。

Istio on GKE ではコントロール プレーン バージョンのユーザー コントロールは許可されません。

コントロール プレーンの設定を変更する

コントロール プレーンのインストールとアップグレード方法は Istio on GKE で制御するため、インストール時に提供されるコントロール プレーン構成設定の大半は編集できません。デフォルトのインストール オプションは、ラベル付きの Istio on GKE バージョン のマニフェストで確認できます(適用されるマニフェストは、選択した mTLS モードと Cloud Logging、Cloud Monitoring、Cloud Trace 設定によって異なります)。たとえば、バージョン 1.0.3-gke.3 のインストール オプションは、storage/browser/gke-release/istio/release/1.0.3-gke.3/manifests/ の下のコンソールにあります。以下に指定された設定以外のこれらのオプションの編集は、Kubernetes アドオン マネージャーによって元に戻されます。編集できないオプションは、毎分元に戻されます。

アドオンの使用時に構成できる設定(および本番環境インストールの場合は必須)は、次のとおりです。

  • 自動スケーリングを使用するか、レプリカの数を手動で設定して、コントロール プレーン コンポーネントの水平スケーリングを行います。
  • コントロール プレーン コンテナのリソース リクエスト。
  • 付属の Istio Ingress ゲートウェイなどのアップグレード中に使用し続ける必要があるデプロイのポッド停止予算。

これらの設定方法については、コントロール プレーンの設定をご覧ください。

アドオンによってインストールがアップグレードされても、指定した設定は保持されます。

次のステップ