GKE への単一プロジェクトのインストール

このガイドでは、同じプロジェクトにある 1 つ以上の GKE クラスタを含むメッシュ用に Anthos Service Mesh バージョン 1.9.8 をインストールする方法、同バージョンへの移行やアップグレードを行う方法について説明します。Google が提供するスクリプトである install_asm を使用してプロジェクトとクラスタを構成し、istioctl install を使用して Anthos Service Mesh をインストールします。

このガイドと、オンボーディング ユースケース用のスクリプトを使用できます。

  • Anthos Service Mesh 1.9.8 の新規インストール

  • 1.8 or a 1.9 patch release からのアップグレード。これより前のバージョンからのアップグレードはサポートされていません。

  • オープンソースの Istio 1.8 or 1.9 から Anthos Service Mesh への移行。以前のバージョンの Istio を使用している場合は、Anthos Service Mesh に移行する前に、先にアップグレードする必要があります。アップグレードする必要がある場合は、該当する Istio のバージョンの Istio のアップグレード ページに移動します。複数のマイナー バージョンをまたいで Istio を一度にアップブレードすること(たとえば 1.6.x から 1.8.x へのアップブレード)は、公式にテストされておらず、推奨もされていません。移行を計画する際は、Istio からの移行の準備を必ず確認してください。

前提条件

このガイドは、以下のものがあることを前提としています。

Anthos と Anthos Service Mesh の違い

Anthos Service Mesh は、GKE Enterprise で、もしくはスタンドアロン サービスとして利用できます。Google API は、請求方法を決定するために使用されます。Anthos Service Mesh をスタンドアロン サービスとして使用する場合、プロジェクトで Anthos API を有効にしないでください。 このスクリプトにより、他のすべての必要な Google API が有効になります。Anthos Service Mesh の料金については、料金をご覧ください。

  • GKE Enterprise サブスクライバーの場合は、GKE Enterprise API を必ず有効にしてください。

    API の有効化

  • GKE Enterprise のサブスクライバーでない場合でも Anthos Service Mesh をインストールできますが、Google Cloud コンソールの一部の UI 要素と機能は GKE Enterprise のサブスクライバーのみが使用できます。サブスクライバーと非サブスクライバーが使用できる機能については、GKE Enterprise と Anthos Service Mesh の UI の違いをご覧ください。

  • GKE Enterprise API を有効にしていて、Anthos Service Mesh をスタンドアロン サービスとして使用する場合は、GKE Enterprise API を無効にします

要件

  • GKE クラスタは次の要件を満たす必要があります。

    • Autopilot クラスタには istio-sidecar-injectorMutatingWebhookConfiguration を許可しない Webhook の制限があるため、GKE クラスタは Standard でなければなりません。

    • 4 つ以上の vCPU を備えたマシンタイプ(e2-standard-4 など)。クラスタのマシンタイプに 4 つ以上の vCPU がない場合は、異なるマシンタイプへのワークロードの移行の説明に従ってマシンタイプを変更します。

    • ノードの最小数は、マシンタイプによって異なります。Anthos Service Mesh には、8 つ以上の vCPU が必要です。4 つの vCPU を持つマシンタイプの場合、クラスタには少なくとも 2 つのノードが必要です。8 つの vCPU を持つマシンタイプの場合、クラスタには 1 ノードだけが必要です。ノードを追加する必要がある場合は、クラスタのサイズ変更をご覧ください。

    • デフォルトでは、スクリプトはクラスタで Workload Identity を有効にします。Workload Identity は、Google API を呼び出すためのおすすめの方法です。Workload Identity を有効にすると、Workload Identity の制限事項で説明されているように、ワークロードから Google API への呼び出し方法が変わります。

      新しいインストールを実施し、Anthos Service Mesh 認証局(Mesh CA)を使用する予定の場合は、GKE Workload Identity の代わりとしてフリートの Workload Identity プールを使用できます。フリートの Workload Identity プール(プレビュー)で Mesh CA を使用するには、クラスタが所属するプロジェクトにクラスタを登録するスクリプトを実行する前に、クラスタの登録の手順を行うか、--enable_registration フラグを指定する必要があります。スクリプトの実行例については、フリートの Workload Identity プールでメッシュ CA を有効にするをご覧ください。

    • クラスタをリリース チャンネルに登録します。この操作は省略できますが、行うことをおすすめします。Regular リリース チャンネルに登録することをおすすめします。他のチャネルは Anthos Service Mesh 1.9.8 でサポートされていない GKE バージョンをベースにしていることがあります。詳細については、サポートされている環境をご覧ください。静的 GKE バージョンがある場合は、既存のクラスタをリリース チャンネルに登録するの手順を行ってください。

  • サービス メッシュに含めるには、サービスポートに名前を付ける必要があります。名前には、name: protocol[-suffix] の構文でポートのプロトコルを含める必要があります。角かっこは、ダッシュで始まるオプションの接尾辞です。詳細については、サービスポートの命名をご覧ください。

  • 限定公開クラスタに Anthos Service Mesh をインストールする場合は、ファイアウォールでポート 15017 を開き、自動サイドカー インジェクションと構成検証で使用する Webhook が適切に機能する必要があります。詳細については、限定公開クラスタのポートを開くをご覧ください。

  • 組織にサービス境界を作成した場合は、Mesh CA サービスを境界に追加する必要があります。詳細については、サービス境界へのメッシュ CA の追加をご覧ください。

  • 移行の場合、istiodistio-system 名前空間にインストールする必要があります。

  • 1 つの Google Cloud プロジェクトに関連付けることができるメッシュは 1 つのみです。

  • istio-proxy サイドカー コンテナのデフォルトのリソース制限を変更する場合は、メモリ不足(OOM)イベントを回避するために、新しい値はデフォルト値より大きい値にする必要があります。

  • Windows Server ワークロードの場合、Istio はサポートされません。クラスタに Linux と Windows Server の両方のノードプールがある場合でも、Anthos Service Mesh をインストールして Linux ワークロードで使用できます。

コントロール プレーンのカスタマイズ

Anthos Service Mesh がサポートする機能はプラットフォームによって異なります。サポートされている機能を確認して、Google Cloud の GKE でサポートされている機能を把握することをおすすめします。一部の機能はデフォルトで有効になっており、それ以外は IstioOperator オーバーレイ ファイルを作成することで、必要に応じて有効にすることもできます。install_asm スクリプトを実行するときに、オーバーレイ ファイルで --custom_overlay オプションを指定できます。

認証局の選択

新規インストールと移行の両方で、Anthos Service Mesh 認証局(Mesh CA)または Istio CA(旧称 Citadel)を認証局(CA)として使用して、相互 TLS(mTLS)証明書を発行できます。

次の理由から、Mesh CA を使用することをおすすめします。

  • Mesh CA は、信頼性の高いスケーラブルなサービスで、Google Cloud 上で動的にスケーリングされるワークロード用に最適化されています。
  • Mesh CA を使用する場合、Google は CA バックエンドのセキュリティと可用性を管理します。
  • Mesh CA を使用すると、クラスタ間で単一のルート オブ トラストを使用できます。

ただし、次のような場合、Istio CA の使用を検討できます。

  • カスタム CA を使用する場合。
  • Istio から移行する場合。

    Istio CA を選択すると、移行中に mTLS トラフィックは中断されないため、ダウンタイムはほとんどありません。Mesh CA を選択する場合は、ルート オブ トラストが Istio CA から Mesh CA に変更されるため、移行時のダウンタイムをスケジューリングする必要があります。Mesh CA ルートオブ トラストへの移行を完了するには、すべての名前空間内の Pod をすべて再起動する必要があります。このプロセスにおいて、古い Pod は新しい Pod で mTLS 接続を確立できません。

注: Anthos Service Mesh の新規インストールでは、Mesh CA はデフォルトでスクリプトによって有効化されます。

Mesh CA からの証明書には、アプリケーションのサービスに関する次のデータが含まれます。

  • Google Cloud プロジェクト ID。
  • GKE 名前空間
  • GKE サービス アカウント名

クラスタの登録

Google Cloud コンソールの統合ユーザー インターフェースにアクセスするには、クラスタをフリートで登録する必要があります。フリートは、Google Cloud 外のクラスタを含むクラスタとそのワークロードを表示して管理するために統合された方法を提供します。

クラスタが所属するプロジェクトに、クラスタを登録するようにスクリプトを実行する際、クラスタの登録の手順を行うか、--enable_registration フラグを指定します。

必要なツールのインストール

スクリプトは、Cloud Shell 上、または Linux を実行するローカルマシン上で実行できます。Cloud Shell で必要なすべてのツールがプリインストールされます。macOS には bash の古いバージョンが付属しているため、サポートされませんので注意してください。

Cloud Shell

Cloud Shell は、Debian ベースの Linux オペレーティング システムを実行している g1-small Compute Engine 仮想マシン(VM)をプロビジョニングします。Cloud Shell を使用する利点は次のとおりです。

  • Cloud Shell には、gcloudkubectlkpt、必要な他のコマンドライン ツールが含まれています。

  • Cloud Shell の $HOME ディレクトリには 5 GB の永続ストレージ スペースがあります。

  • テキスト エディタを選択できます。

    • コードエディタ。Cloud Shell ウィンドウの上部にある をクリックしてアクセスします。

    • Emacs、Vim、Nano。Cloud Shell のコマンドラインからアクセスします。

Cloud Shell を使用するには:

  1. Google Cloud コンソールに移動します。
  2. Google Cloud プロジェクトを選択します。
  3. Google Cloud コンソール ウィンドウの上部にある [Cloud Shell をアクティブにする] ボタンをクリックします。

    Google Cloud Platform コンソール

    Google Cloud コンソールの一番下にある新しいフレームの中で Cloud Shell セッションが開き、コマンドライン プロンプトが表示されます。

    Cloud Shell セッション

  4. コンポーネントを更新します。

    gcloud components update
    

    次のような出力が返されます。

    ERROR: (gcloud.components.update)
    You cannot perform this action because the gcloud CLI component manager
    is disabled for this installation. You can run the following command
    to achieve the same result for this installation:
    
    sudo apt-get update && sudo apt-get --only-upgrade install ...
  5. long コマンドをコピーし、貼り付けてコンポーネントを更新します。

ローカル Linux コンピュータ

  1. 次のツールがインストールされていることを確認してください。

  2. gcloud CLI を使用して認証します。

    gcloud auth login
    
  3. コンポーネントを更新します。

    gcloud components update
    
  4. kpt から検出できるように、パスに git を設定します。

スクリプトのダウンロード

このセクションでは、スクリプトのダウンロード、必須パラメータとオプション パラメータの設定方法、スクリプトの実行方法について説明します。スクリプトの機能の詳細については、スクリプトについてをご覧ください。

  1. Anthos Service Mesh 1.9.8 をインストールするスクリプトのバージョンを、現在の作業ディレクトリにダウンロードします。

    curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.9 > install_asm
    
  2. 現在の作業ディレクトリにファイルの SHA-256 をダウンロードします。

    curl https://storage.googleapis.com/csm-artifacts/asm/install_asm_1.9.sha256 > install_asm.sha256
    
  3. 両方のファイルを同じディレクトリに置いて、ダウンロードを検証します。

    sha256sum -c --ignore-missing install_asm.sha256
    

    検証が成功すると、コマンドは install_asm: OK を出力します。

    互換性を維持するため、install_asm.sha256 にはチェックサムを 2 回含めて、スクリプトのすべてのバージョンの名前を install_asm に変更できるようにします。--ignore-missing が存在しないというエラーが表示された場合は、--ignore-missing フラグを指定せずに上記のコマンドを再実行します。

  4. スクリプトを実行可能にします。

    chmod +x install_asm
    

次のステップ