准备为 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.
-
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
控制台
转到 Google Cloud 控制台中的 Google Kubernetes Engine 页面。
点击 add_box 创建。
在标准部分中,点击配置。
在集群基本信息部分,完成以下操作:
- 输入集群的名称。
- 对于位置类型,为集群选择 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 来仅向部分账号授予权限。如需详细了解 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。
启用网格功能:
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
如需创建集群并将其一步注册到舰队,以使用默认配置,请执行以下操作:
gcloud container clusters create CLUSTER_NAME \ --project PROJECT_ID \ --fleet-project FLEET_PROJECT_ID \ --location=LOCATION \
启用 Workload Identity Federation for GKE,并在节点上运行 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