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.
- CLUSTER_NAME はクラスタの名前
- LOCATION はクラスタの場所
- PROJECT_ID はクラスタのプロジェクト ID
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
メッシュ機能を有効にします。
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 を使用するように指定する 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 \
Workload Identity Federation for GKE を有効にして、ノードで GKE メタデータ サーバーを実行します。
- CLUSTER_NAME はクラスタの名前
- LOCATION はクラスタの場所
- PROJECT_ID はクラスタのプロジェクト ID
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
ここで
コンソール
クラスタを作成すると、
権限を設定する
次のコマンドは、認証されたすべてのユーザーに権限を付与しますが、Workload Identity Federation for GKE を使用して、特定のアカウントにのみ権限を付与できます。 Workload Identity Federation for GKE の仕組みの詳細については、Workload Identity Federation for GKE についてをご覧ください。Workload Identity Federation for GKE を構成するには、GKE ワークロードから Google Cloud API に対する認証を行うをご覧ください。
trafficdirector.client
ロールを付与します。
gcloud projects add-iam-policy-binding PROJECT_ID \
--member "group:PROJECT_ID.svc.id.goog:/allAuthenticatedUsers/" \
--role "roles/trafficdirector.client"
Cloud Service Mesh の有効化
デフォルトで Gateway API を使用するようにフリートの新しいメンバーシップを設定する(省略可)
クラスタの作成時にフリートに登録される新しい GKE クラスタのフリートレベルのデフォルト設定を作成して、Gateway API で自動的に構成することもできます。
カスタム リソース定義をインストールする
クラスタの kubeconfig エントリを生成します。
gcloud container clusters get-credentials CLUSTER_NAME --location LOCATION --project PROJECT_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