プロジェクトとクラスタを設定する

asmcli を使用して Cloud Service Mesh をインストールするときに、--enable_all フラグまたはより詳細な有効化フラグを含めると、プロジェクトとクラスタを自動的に構成できます。asmcli を使わず、自分で変更の設定を行う場合は、このページの手順に沿って進めてください。

以前のバージョンの Cloud Service Mesh がインストールされている場合は、最新の Cloud Service Mesh バージョンに asmcli を使用してアップグレードする前に、プロジェクトまたはクラスタを変更する必要はありません。

デフォルトでは、asmcliistio-ingressgateway をインストールしません。コントロール プレーンとゲートウェイを個別にデプロイして管理することをおすすめします。Cloud Service Mesh は、ゲートウェイ デプロイの自動インジェクションをサポートしているため、Cloud Service Mesh のアップグレードは容易に行うことができます。Cloud Service Mesh をアップグレードした後、サービスと同じようにゲートウェイを再起動して、新しいコントロール プレーンの構成を取得します。詳細については、ゲートウェイのインストールとアップグレードをご覧ください。

始める前に

プロジェクトを設定する

  1. クラスタが作成されたプロジェクトのプロジェクト ID を取得します。

    gcloud

    次のコマンドを実行します。

    gcloud projects list
    

    Console

    1. Google Cloud コンソールの [ダッシュボード] ページに移動します。

      [ダッシュボード] ページに移動する

    2. ページの上部にあるプルダウン リストをクリックします。表示された [選択元] ウィンドウで、プロジェクトを選択します。

      プロジェクト ID は、プロジェクト ダッシュボードの [プロジェクト情報] カードに表示されます。

  2. プロジェクト ID を使用して、ワークロード プールの環境変数を作成します。

    export WORKLOAD_POOL=PROJECT_ID.svc.id.goog
    
  3. 必要な Identity and Access Management(IAM)のロールを設定します。プロジェクト オーナーの場合は、インストールを完了するために必要なすべての権限が付与されます。プロジェクト オーナーでない場合は、次の IAM ロールを付与する担当者が必要になります。次のコマンドの PROJECT_ID は、前の手順のプロジェクト ID で置き換え、GCP_EMAIL_ADDRESS は Google Cloudへのログインに使用するアカウントに置き換えます。

    ROLES=(
    'roles/servicemanagement.admin' \
    'roles/serviceusage.serviceUsageAdmin' \
    'roles/meshconfig.admin' \
    'roles/compute.admin' \
    'roles/container.admin' \
    'roles/resourcemanager.projectIamAdmin' \
    'roles/iam.serviceAccountAdmin' \
    'roles/iam.serviceAccountKeyAdmin' \
    'roles/gkehub.admin')
    for role in "${ROLES[@]}"
    do
      gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "user:GCP_EMAIL_ADDRESS" \
        --role="$role"
    done
    

    asmcli の実行時に --enable_all フラグまたは --enable_gcp_iam_roles フラグを指定すると、必要な IAM ロールが自動的に設定されます。

  4. 必要な Google API を有効にします。

    gcloud services enable \
        --project=PROJECT_ID \
        mesh.googleapis.com
    

    このコマンドは、mesh.googleapis.com に加えて次の API も有効にします。

    API 目的 無効化が可能か
    meshconfig.googleapis.com Cloud Service Mesh は、Mesh Configuration API を使用して、メッシュから Google Cloudに構成データをリレーします。また、Mesh Configuration API を有効にすると、Google Cloud コンソールの Cloud Service Mesh のページにアクセスして、Cloud Service Mesh 認証局を使用できます。 ×
    meshca.googleapis.com マネージド Cloud Service Mesh で使用される Cloud Service Mesh 認証局に関連します。 ×
    container.googleapis.com Google Kubernetes Engine(GKE)クラスタを作成するために必要です。 ×
    gkehub.googleapis.com メッシュをフリートとして管理するために必要です。 ×
    monitoring.googleapis.com メッシュ ワークロードのテレメトリーをキャプチャするために必要です。 ×
    stackdriver.googleapis.com Service UI を使用するために必要です。 いいえ
    opsconfigmonitoring.googleapis.com Google Cloud クラスタで Service UI を使用するために必要です。 いいえ
    connectgateway.googleapis.com マネージド Cloud Service Mesh コントロール プレーンがメッシュ ワークロードにアクセスできるようにするために必要です。 ○*
    trafficdirector.googleapis.com 高可用性でスケーラブルなマネージド コントロール プレーンを実現します。 ○*
    networkservices.googleapis.com 高可用性でスケーラブルなマネージド コントロール プレーンを実現します。 ○*
    networksecurity.googleapis.com 高可用性でスケーラブルなマネージド コントロール プレーンを実現します。 ○*

    API の有効化に数分かかることがあります。API が有効になると、次のような出力が表示されます。

    Operation "operations/acf.601db672-88e6-4f98-8ceb-aa3b5725533c" finished
    successfully.
    

    asmcli の実行時に --enable_all フラグまたは --enable_apis フラグを指定すると、必要な API が有効になります。

クラスタを設定する

--enable_all フラグ、またはより詳細な有効化フラグのいずれかを指定すると、asmcli によってクラスタが設定されます。

  1. クラスタをフリートに登録します。

  2. プロジェクトを初期化してインストールの準備をします。次のコマンドでサービス アカウントを作成し、サイドカー プロキシなどのデータプレーン コンポーネントがプロジェクトのデータとリソースに安全にアクセスできるようにします。次のコマンドで、FLEET_PROJECT_IDフリート ホスト プロジェクトに置き換えます。

    curl --request POST  \
     --header "Authorization: Bearer $(gcloud auth print-access-token)" \
     --header "Content-Type: application/json" \
     --data '{"workloadIdentityPools":["FLEET_PROJECT_ID.hub.id.goog","FLEET_PROJECT_ID.svc.id.goog","PROJECT_ID.svc.id.goog"]}' \
     "https://meshconfig.googleapis.com/v1alpha1/projects/PROJECT_ID:initialize"
    

    コマンドを実行すると、空の中かっこ {} が返されます。

  3. クラスタ上の GKE の場合は、Google Cloud CLI のデフォルトのゾーンまたはリージョンを設定します。 Google Cloud ここでデフォルトを設定しない場合、このページの gcloud container clusters コマンドに --zone オプションまたは --region オプションを指定してください。

    • シングルゾーン クラスタがある場合は、デフォルト ゾーンを設定します。

      gcloud config set compute/zone CLUSTER_LOCATION
      
    • リージョン クラスタがある場合は、デフォルト リージョンを設定します。

      gcloud config set compute/region CLUSTER_LOCATION
      
  4. GKE on Google Cloud クラスタの場合は、Workload Identity を有効にします。

    gcloud container clusters update CLUSTER_NAME \
        --project=PROJECT_ID \
        --workload-pool=${WORKLOAD_POOL}
    

    Workload Identity の有効化には、最長で 10~15 分ほどかかることがあります。

  5. GKE on Google Cloud クラスタの場合は、GKE で Cloud Monitoring と Cloud Logging を有効にします。

    gcloud container clusters update CLUSTER_NAME \
        --project=PROJECT_ID \
        --enable-stackdriver-kubernetes
    

これで、プロジェクトとクラスタについて、asmcli を使用して新規インストールを行う準備が整いました。

次のステップ