Cloud Service Mesh の Gateway API の設定を準備する
このページでは、ゲートウェイに必要なカスタム リソース定義をクラスタにインストールする方法について説明します。
制限事項
- 同じフリート内での
gateway
config-api クラスタとistio
config-api クラスタの混在はサポートされていません。フリート内のすべてのクラスタで config-api がgateway
に設定されていることを確認します。gcloud container fleet mesh describe --project FLEET_PROJECT_ID
コマンドを使用して、フリート用に構成されている内容を確認します。 - マルチクラスタ サービス ディスカバリとロード バランシングは、
gateway
config-api クラスタではサポートされていません。 - 既存の
--management automatic
フラグを使用してクラスタがオンボーディングされると、クラスタはistio
構成 API の使用を開始し、gateway
API に変更できなくなります。 - FQDN のみがサポートされます。略称はサポートされていません。
データプレーン管理の考慮事項
新しい Pod の場合、挿入されるプロキシ バージョンは Google によって管理されます。マネージド データプレーンは、Google Kubernetes Engine(GKE)リリース チャンネルを使用してプロキシ バージョンを決定します。
既存の Pod の場合、プロキシ管理はクラスタ内の Pod の通常のライフサイクルに基づいて、パッシブに実行されます。更新をトリガーして新しいバージョンのプロキシを再挿入するには、ワークロードを再起動します。
前提条件
このガイドは、 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.
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 \
--workload-pool=PROJECT_ID .svc.id.goog \
--workload-metadata=GKE_METADATA
ここで、
- 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-clusterLOCATION /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 を使用して、特定のアカウントにのみ権限を付与できます。Workload Identity Federation for GKE の仕組みの詳細については、Workload Identity Federation for GKE についてをご覧ください。Workload Identity Federation for GKE を構成するには、GKE ワークロードから API に対する認証を行う Google Cloud をご覧ください。
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 を有効にする
メッシュ機能を有効にします。
gcloud container fleet mesh enable --project
PROJECT_ID Gateway API を使用するようにメッシュを更新します。
gcloud alpha container fleet mesh update \ --config-api gateway \ --memberships
CLUSTER_NAME \ --projectPROJECT_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 \ --projectPROJECT_ID \ --fleet-projectFLEET_PROJECT_ID \ --location=LOCATION \Workload Identity Federation for GKE を有効にして、ノードで GKE メタデータ サーバーを実行します。
カスタム リソース定義をインストールする
クラスタの kubeconfig エントリを生成します。
gcloud container clusters get-credentialsCLUSTER_NAME --locationLOCATION --projectPROJECT_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