Cloud Service Mesh の Gateway API の設定を準備する
このページでは、ゲートウェイに必要なカスタム リソース定義をクラスタにインストールする方法について説明します。
制限事項
- 同じフリート内での
gateway
config-api クラスタとistio
config-api クラスタの混在はサポートされていません。 - マルチクラスタ サービス ディスカバリとロード バランシングは、
gateway
config-api クラスタではサポートされていません。 - 既存の
--management automatic
フラグを使用してクラスタがオンボーディングされると、クラスタはistio
構成 API の使用を開始し、gateway
API に変更できなくなります。 - FQDN のみがサポートされます。略称はサポートされていません。
前提条件
このガイドは、Google Cloud プロジェクトを作成し、kubectl
をインストールしていることを前提としています。
始める前に
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Kubernetes Engine, GKE Hub, and Cloud Service Mesh APIs.
- クラスタの kubeconfig エントリを生成します。
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
ここで、
- CLUSTER_NAME はクラスタの名前
- LOCATION は、クラスタの場所
- PROJECT_ID は、クラスタのプロジェクト ID
GKE クラスタの作成と登録
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
GKE 用 Workload Identity 連携を有効にする
gcloud container clusters update CLUSTER_NAME \ --location LOCATION \ --workload-pool=PROJECT_ID.svc.id.goog
ノードで GKE メタデータ サーバーを実行します。
gcloud container node-pools update default-pool \ --cluster=CLUSTER_NAME \ --location=LOCATION \ --workload-metadata=GKE_METADATA
クラスタをフリートに登録します。
gcloud container hub memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_ID
クラスタがフリートに登録されていることを確認します。
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 を使用して、特定のアカウントにのみ権限を付与できます。
trafficdirector.client
ロールを付与します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member "group:PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/" \ --role "roles/trafficdirector.client"
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 はプロジェクト番号です。
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 を有効にする
メッシュ機能を有効にします。
gcloud container hub mesh enable --project PROJECT_ID
Gateway API を使用するようにメッシュを更新します。
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships CLUSTER_NAME \ --project PROJECT_ID
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