プロジェクトと GKE クラスタを自分で設定する

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

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

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

始める前に

プロジェクトを設定する

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

    gcloud

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

    gcloud projects list
    

    コンソール

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

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

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

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

  2. 次の環境変数を作成します。

    • プロジェクト ID を使用してワークロード プールを設定します。

      export WORKLOAD_POOL=PROJECT_ID.svc.id.goog
      
    • プロジェクト番号を使用して、メッシュ ID を設定します。

      export MESH_ID="proj-PROJECT_NUMBER"
      
  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 メッシュから Google Cloud に構成データをリレーします。また、Google Cloud コンソールの Anthos Service Mesh ページにアクセスし、Anthos Service Mesh 認証局(Mesh CA)を使用できるようにします。
    meshca.googleapis.com Anthos Service Mesh Certificate Authority API。Anthos Service Mesh に含まれるマネージド証明書プロバイダの使用を許可します。この API は、Certificate Authority Service または Istio CA を使用している場合でも有効です。
    container.googleapis.com オープンソースの Kubernetes テクノロジーを用いたコンテナベースのアプリケーションの構築と管理に使用されます。
    monitoring.googleapis.com Cloud Monitoring のデータと構成を管理します。Google Cloud コンソールに表示されるアプリケーションのテレメトリーの保存に使用します。
    gkehub.googleapis.com メッシュのスコープを構成するために使用します。詳細については、フリート管理のドキュメントをご覧ください。
    stackdriver.googleapis.com Google Cloud のオペレーション スイートが、Google Cloud の内外部のアプリ、プラットフォーム、サービス全体でシグナルを収集するために使用します。
    opsconfigmonitoring.googleapis.com Google Cloud のリソースを収集、集約、インデックス登録し、Anthos Service Mesh UI を有効にします。
    connectgateway.googleapis.com Google インフラストラクチャが、複数のクラウド環境とハイブリッド環境で登録済みの GKE クラスタに安全に接続できるようにします。

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

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

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

クラスタを設定する

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

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

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

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

      gcloud config set compute/region CLUSTER_LOCATION
      
  2. クラスタに mesh_id ラベルを設定します。クラスタの既存のラベルを残す場合は、mesh_id ラベルの追加時にそれらのラベルを含める必要があります。

    1. クラスタに既存のラベルがあるかどうかを確認するには:

      gcloud container clusters describe CLUSTER_NAME \
          --project PROJECT_ID
      

      出力で resourceLabels フィールドを探します。ラベルは、resourceLabels フィールドごとに別々の行に格納されます。次に例を示します。

      resourceLabels:
        csm: ''
        env: dev
        release: stable

      利便性を考えて、環境変数にラベルを追加することもできます。以下の例の YOUR_EXISTING_LABELS は、クラスタに存在するラベルのカンマ区切りのリスト(KEY=VALUE 形式、たとえば env=dev,release=stable)で置き換えます。

      export EXISTING_LABELS="YOUR_EXISTING_LABELS"
      
    2. mesh_id ラベルを設定します。

      • クラスタの既存のラベルを残す場合は、mesh_id と既存のラベルでクラスタを更新します。

        gcloud container clusters update CLUSTER_NAME \
            --project PROJECT_ID \
            --update-labels=mesh_id=${MESH_ID},${EXISTING_LABELS}
        
      • クラスタに既存のラベルがない場合は、mesh_id ラベルだけでクラスタを更新します。

        gcloud container clusters update CLUSTER_NAME \
            --project=PROJECT_ID \
            --update-labels=mesh_id=${MESH_ID}
        
  3. Workload Identity を有効にします。

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

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

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

  5. プロジェクトを初期化してインストールの準備をします。次のコマンドでサービス アカウントを作成し、サイドカー プロキシなどのデータプレーン コンポーネントがプロジェクトのデータとリソースに安全にアクセスできるようにします。次のコマンドで、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"
    

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

  6. GKE で Cloud Monitoring と Cloud Logging を有効にします。

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

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

次のステップ