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 とは

Google Cloud のお客様には、Google がサポートする Istio のディストリビューションである Anthos Service Mesh を使用することをおすすめします。Anthos Service Mesh は Istio API と互換性があるため、Istio サービス メッシュのメリットをすべて提供できます。

Anthos Service Mesh

Anthos Service Mesh は、Anthos のサブスクリプションを必要としないスタンドアロン サービスとして Google Kubernetes Engine(GKE)にインストールできます。Anthos Service Mesh の機能を試すには、GKE の Anthos Service Mesh クイックスタートをご覧ください。

Istio on GKE とは何ですか?

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

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

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

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

Istio on GKE の制限事項は次のとおりです。

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

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

  • このアドオン インストーラは GKE の一部ですが、Istio のインストールは Google がサポートするプロダクトではありません。サポート対象のプロダクトが必要な場合は、Anthos Service Mesh の方がおすすめです。

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

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

インストールの内容は?

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

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

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

Cloud Monitoring のサポート

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

モニタリング

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

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

  1. Google Cloud Console で [Monitoring] を選択するか、次のボタンを使用します。
    [Monitoring] に移動
  2. [Monitoring] のナビゲーション パネルで、 [Metrics Explorer] をクリックします。
  3. [Configuration] タブを選択し、[Resource type] と [Metric] を入力または選択します。

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

ロギング

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

トレース

Istio メッシュがトレース ビューアに表示される 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 で制御するため、インストール時に提供されるコントロール プレーン構成設定の大半は編集できません。次の指定された設定以外の構成を変更すると、Kubernetes アドオン マネージャーによって元に戻されます。編集できないオプションは、毎分元に戻されます。

Istio on GKE の使用中に構成できる構成は次のとおりです。

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

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

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

次のステップ