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.
GKE クラスタの作成と登録
gcloud
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 \
--workload-pool=PROJECT_ID.svc.id.goog \
--workload-metadata=GKE_METADATA
ここで
- CLUSTER_NAME はクラスタの名前
- LOCATION は、クラスタの場所
- PROJECT_ID は、クラスタのプロジェクト ID
Console
Google Cloud コンソールで [Google Kubernetes Engine] ページに移動します。
[add_box 作成] をクリックします。
[Standard] セクションで [構成] をクリックします。
[クラスタの基本] セクションで、次の操作を行います。
- クラスタの名前を [名前] に入力します。
- [ロケーション タイプ] で、クラスタの Compute Engine リージョンを選択します。
ナビゲーション パネルの [ノードプール] セクションで [default-pool] をクリックし、[セキュリティ] を選択します。
[アクセス スコープ] リストで、[各 API にアクセス権を設定] を選択し、[Cloud Platform] を [有効] に設定します。
ナビゲーション パネルの [クラスタ] セクションで、[ネットワーキング] をクリックします。
[クラスタ ネットワーキング] リストで、[Gateway API を有効にする] を選択します。
ナビゲーション パネルの [クラスタ] セクションで、[セキュリティ] をクリックします。
[セキュリティ] リストで、[Workload Identity を有効にする] を選択します。
[作成] をクリックします。
クラスタの作成後、
クラスタをフリートに登録します。
gcloud container fleet memberships register CLUSTER_NAME \ --gke-cluster LOCATION/CLUSTER_NAME \ --project=PROJECT_ID
クラスタがフリートに登録されていることを確認します。
gcloud container fleet 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 fleet 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
デフォルトで Gateway API を使用するようにフリートの新しいメンバーシップを設定する(省略可)
または、クラスタの作成時にフリートに登録される新しい GKE クラスタのフリートレベルのデフォルト設定を作成して、Gateway API で自動的に構成することもできます。
Gateway API を使用するように指定する YAML ファイルを作成します。
echo "configapi: gateway" > mesh.yaml
メッシュを更新します。
gcloud alpha container fleet mesh update --project FLEET_PROJECT_ID \ --fleet-default-member-config mesh.yaml
クラスタを作成してフリートに登録する操作を 1 ステップで行うには、デフォルト構成を使用します。
gcloud container clusters create CLUSTER_NAME \ --project PROJECT_ID \ --fleet-project FLEET_PROJECT_ID \ --location=LOCATION \
GKE 用 Workload Identity 連携を有効にして、ノードで GKE メタデータ サーバーを実行します。
カスタム リソース定義をインストールする
クラスタの kubeconfig エントリを生成します。
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_ID
ここで
- CLUSTER_NAME はクラスタの名前
- LOCATION は、クラスタの場所
- PROJECT_ID は、クラスタのプロジェクト ID
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