Cloud Service Mesh の Gateway API の設定を準備する

このページでは、ゲートウェイに必要なカスタム リソース定義をクラスタにインストールする方法について説明します。

制限事項

  • 同じフリート内での gateway config-api クラスタと istio config-api クラスタの混在はサポートされていません。
  • マルチクラスタ サービス ディスカバリとロード バランシングは、gateway config-api クラスタではサポートされていません。
  • 既存の --management automatic フラグを使用してクラスタがオンボーディングされると、クラスタは istio 構成 API の使用を開始し、gateway API に変更できなくなります。
  • FQDN のみがサポートされます。略称はサポートされていません。

前提条件

このガイドは、Google Cloud プロジェクトを作成し、kubectl をインストールしていることを前提としています。

始める前に

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.

    Enable the APIs

  1. クラスタの kubeconfig エントリを生成します。
  2. gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
    

ここで、

  • CLUSTER_NAME はクラスタの名前
  • LOCATION は、クラスタの場所
  • PROJECT_ID は、クラスタのプロジェクト ID

GKE クラスタの作成と登録

  1. GKE クラスタを作成します。

    gcloud container clusters create CLUSTER_NAME \
    --location=LOCATION \
    --enable-ip-alias \
    --scopes=https://www.googleapis.com/auth/cloud-platform \
    --release-channel=regular \
    --project=PROJECT_ID \
    --gateway-api=standard
    

    ここで、

    • CLUSTER_NAME はクラスタの名前
    • LOCATION は、クラスタの場所
    • PROJECT_ID は、クラスタのプロジェクト ID
  2. GKE 用 Workload Identity 連携を有効にする

    gcloud container clusters update CLUSTER_NAME \
    --location LOCATION \
    --workload-pool=PROJECT_ID.svc.id.goog
    
  3. ノードで GKE メタデータ サーバーを実行します。

    gcloud container node-pools update default-pool \
    --cluster=CLUSTER_NAME \
    --location=LOCATION \
    --workload-metadata=GKE_METADATA
    
  4. クラスタをフリートに登録します。

    gcloud container hub memberships register CLUSTER_NAME \
    --gke-cluster LOCATION/CLUSTER_NAME \
    --project=PROJECT_ID
    
  5. クラスタがフリートに登録されていることを確認します。

    gcloud container hub memberships list --project=PROJECT_ID
    

    出力は次のようになります。

    NAME            EXTERNAL_ID                             LOCATION
    my-cluster      91980bb9-593c-4b36-9170-96445c9edd39    us-west1
    

権限を設定する

次のコマンドは、認証されたすべてのユーザーに権限を付与しますが、Workload Identity Federation for GKE を使用して、特定のアカウントにのみ権限を付与できます。

  1. trafficdirector.client ロールを付与します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member "group:PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/" \
        --role "roles/trafficdirector.client"
    
  2. container.developer ロールを付与します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
    --role "roles/container.developer"
    

    ここで、PROJECT_NUMBER はプロジェクト番号です。

  3. compute.networkAdmin ロールを付与します。

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
    --role "roles/compute.networkAdmin"
    

    ここで、PROJECT_NUMBER はプロジェクト番号です。

Cloud Service Mesh を有効にする

  1. メッシュ機能を有効にします。

    gcloud container hub mesh enable --project PROJECT_ID
    
  2. Gateway API を使用するようにメッシュを更新します。

    gcloud alpha container fleet mesh update \
    --config-api gateway \
    --memberships CLUSTER_NAME \
    --project PROJECT_ID
    
  3. Cloud Service Mesh リソースのステータスを記述して、更新を確認します。

    gcloud alpha container fleet mesh describe
    

カスタム リソース定義をインストールする

GRPCRoute カスタム リソース定義(CRD)をインストールします。

curl https://raw.githubusercontent.com/kubernetes-sigs/gateway-api/v1.1.0/config/crd/standard/gateway.networking.k8s.io_grpcroutes.yaml \
| kubectl apply -f -

出力は次のようになります。

customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io created

次のステップ