了解如何设置和配置 Knative serving 的安装。
准备工作
您必须在 GKE 集群上安装 Knative serving。如需详细了解 GKE 集群的前提条件以及如何安装 Knative serving,请参阅安装指南。
使用 Workload Identity 设置身份验证
您可以使用 Workload Identity 向 Google Cloud API 和服务验证 Knative serving 服务的身份。您必须在将服务部署到集群之前设置 Workload Identity;否则,在启用 Workload Identity 之前就已存在于集群中的每个服务都需要迁移。详细了解如何使用 Workload Identity。
使用 Workload Identity 启用指标
如需启用指标(例如向 Google Cloud Observability 报告请求数或请求延迟时间),您需要手动为 Cloud Monitoring 设置写入权限。如需了解详情,请参阅使用 Workload Identity 启用指标。
配置 HTTPS 和自定义网域
如需启用 HTTPS 并设置自定义网域,请参阅以下页面:
设置 Cloud Service Mesh
如需为 Knative serving 配置 Cloud Service Mesh 选项,请参阅集群内控制平面选项,包括如何设置专用内部网络。
设置专用内部网络
在内部网络上部署服务对于下列对象非常有用:为员工提供内部应用的企业;以及在 Knative serving 集群外运行的客户端所使用的服务。此配置允许您网络中的其他资源使用专用的内部 (RFC 1918) IP 地址与服务进行通信,该 IP 地址无法由公众访问。
如需创建内部网络,请将 Cloud Service Mesh 配置为使用内部 TCP/UDP 负载均衡,而不是使用公共外部网络负载均衡器。然后,您可以在 VPC 网络中的内部 IP 地址上部署 Knative serving 服务。
开始前须知
- 您必须对集群拥有
admin
权限。 - 如果您配置了自定义网域,则必须停用托管式 TLS 功能,因为内部负载均衡器目前不支持 Knative serving 上的托管式 TLS。
- 仅支持 Google Cloud CLI 310.0 版或更高版本。如需详细了解如何设置命令行工具,请参阅
如需设置内部负载均衡器,请执行以下操作:
启用 Cloud Service Mesh 中的内部负载均衡器功能。
内部负载均衡器是一项可选功能,您可以在安装 Cloud Service Mesh 期间进行配置,也可以通过更新现有安装进行配置。
按照在集群控制平面上启用可选功能中的步骤操作,并确保包含
--option internal-load-balancer
脚本选项。如果您指定
--option internal-load-balancer
选项,脚本会自动从 GitHub 提取启用内部负载均衡器自定义资源。如果您需要修改该自定义资源,请改为按照使用--custom_overlay
选项的说明操作。运行以下命令以查看 GKE 集群的更新:
kubectl -n INGRESS_NAMESPACE get svc istio-ingressgateway --watch
将 INGRESS_NAMESPACE 替换为 Cloud Service Mesh 入站流量服务的命名空间。如果您使用默认配置安装了 Cloud Service Mesh,请指定
istio-system
。- 请注意注释
cloud.google.com/load-balancer-type: Internal
。 - 在 Ingress 负载均衡器中查找
IP
值以将其更改为专用 IP 地址。 - 如果您在
IP
字段中看到专用 IP 地址,请按Ctrl+C
停止更新。
- 请注意注释
对于 Google Cloud 上的专用集群,您必须打开端口。如需了解详情,请参阅 Cloud Service Mesh 文档中的打开专用集群上的端口。
如需在更改后验证内部连接,请执行以下操作:
将名为
sample
的服务部署到default
命名空间中的 Knative serving:gcloud run deploy sample \ --image gcr.io/knative-samples/helloworld \ --namespace default --platform gke
在 GKE 集群所在的可用区中创建 Compute Engine 虚拟机 (VM):
VM=cloudrun-gke-ilb-tutorial-vm gcloud compute instances create $VM
将 Istio 入站网关的专用 IP 地址存储在名为
EXTERNAL_IP
的环境变量和名为external-ip.txt
的文件中:export EXTERNAL_IP=$(kubectl -n INGRESS_NAMESPACE get svc istio-ingressgateway \ -o jsonpath='{.status.loadBalancer.ingress[0].ip}' | tee external-ip.txt)
将 INGRESS_NAMESPACE 替换为 Cloud Service Mesh 入站流量服务的命名空间。如果您使用默认配置安装了 Cloud Service Mesh,请指定
istio-system
。将包含 IP 地址的文件复制到虚拟机:
gcloud compute scp external-ip.txt $VM:~
使用 SSH 连接到虚拟机:
gcloud compute ssh $VM
在 SSH 会话中,测试示例服务:
curl -s -w'\n' -H Host:sample.default.nip.io $(cat external-ip.txt)
输出如下所示:
Hello World!
退出 SSH 会话:
exit
设置多租户环境
在多租户应用场景中,您需要管理 Knative serving 服务并将其部署到当前项目之外的 Google Kubernetes Engine 集群。如需详细了解 GKE 多租户,请参阅集群多租户。
如需了解如何为 Knative serving 配置多租户,请参阅跨项目多租户。