GKE へのマルチプロジェクト インストール

このガイドでは、別の Google Cloud プロジェクトにある複数の Google Kubernetes Engine(GKE)クラスタを含むメッシュ向けに Anthos Service Mesh をインストールする方法について説明します。

このガイドは、以下のオンボーディング ユースケースに使用できます。

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

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

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

異なるプロジェクト内のクラスタによるサービス メッシュでは、すべての機能を使用できるわけではありません。特に、Google Cloud コンソールの Anthos Service Mesh ダッシュボードは現在使用できません。ただし、プロジェクトごとに Cloud Logging でログを表示し、Cloud Monitoring で指標を表示できます。

始める前に

このガイドでは、次のものが用意されていることを前提としています。

Istio から移行する場合は、Istio からの移行の準備を必ず確認してください。

Anthos と Anthos Service Mesh の違い

Anthos Service Mesh は、GKE Enterprise で、もしくはスタンドアロン サービスとして利用できます。Google API は、請求方法を決定するために使用されます。Anthos Service Mesh をスタンドアロン サービスとして使用する場合、プロジェクトで Anthos 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 を無効にします

要件

  • クラスタが複数のプロジェクトにあるため、Shared Virtual Private Cloud(VPC)内に存在している必要があります。クラスタの構成については、共有 VPC を使用したクラスタの設定をご覧ください。

  • 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 つだけです。ノードを追加する必要がある場合は、クラスタのサイズ変更をご覧ください。

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

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

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

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

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

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

  • istio-proxy サイドカー コンテナのデフォルトのリソース上限を引き下げる場合は、新しい上限でメモリ不足(OOM)イベントを回避するのに十分なメモリを使用できるようにする必要があります。

認証局の選択

新規インストールと移行の両方で、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 接続を確立できません。

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

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

クラスタの登録

現時点では必須ではありませんが、プロジェクトのフリート(以前の environ)にクラスタを登録することをおすすめします。フリートを使用してクラスタを整理すると、複数のクラスタを簡単に管理できます。フリートにクラスタを登録することで、必要に応じてサービスやその他のインフラストラクチャをグループ化し、一貫したポリシーを適用できます。複数のプロジェクトにクラスタがある場合は、クラスタが属しているプロジェクトではなく、フリートのホスト プロジェクトにクラスタを登録する必要があります。クラスタを登録する方法の詳細については、フリートへのクラスタの登録をご覧ください。

フリートのホスト プロジェクトのコンセプトは、クラスタを設定して Anthos Service Mesh で必要なオプションを有効にする場合に重要です。クラスタのサービス メッシュは、プロジェクト番号に基づく値で識別されます。別のプロジェクトのクラスタを設定する場合は、フリートのホスト プロジェクトのプロジェクト番号を使用する必要があります。