设置 Knative serving

了解如何设置和配置 Knative serving 的安装。

准备工作

您必须在 GKE 集群上安装 Knative serving。如需详细了解 GKE 集群的前提条件以及如何安装 Knative serving,请参阅安装指南

使用 Workload Identity Federation for GKE 设置身份验证

您可以使用 Workload Identity Federation for GKE 向 Google Cloud API 和服务验证 Knative serving 服务的身份。您必须在将服务部署到集群之前设置 Workload Identity Federation for GKE;否则,在启用 Workload Identity Federation for GKE 之前就已存在于集群中的每个服务都需要迁移。详细了解如何使用 Workload Identity Federation for GKE

使用 Workload Identity Federation for GKE 启用指标

如需启用指标(例如向 Google Cloud Observability 报告请求数或请求延迟时间),您需要手动为 Cloud Monitoring 设置写入权限。如需了解详情,请参阅使用 Workload Identity Federation for GKE 启用指标

配置 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 服务。

开始前须知

如需设置内部负载均衡器,请执行以下操作:

  1. 启用 Cloud Service Mesh 中的内部负载均衡器功能。

    内部负载均衡器是一项可选功能,您可以在安装 Cloud Service Mesh 期间进行配置,也可以通过更新现有安装进行配置。

    按照在集群控制平面上启用可选功能中的步骤操作,并确保包含 --option internal-load-balancer 脚本选项。

    如果您指定 --option internal-load-balancer 选项,脚本会自动从 GitHub 提取启用内部负载均衡器自定义资源。如果您需要修改该自定义资源,请改为按照使用 --custom_overlay 选项的说明操作。

  2. 运行以下命令以查看 GKE 集群的更新:

    kubectl -n INGRESS_NAMESPACE get svc istio-ingressgateway --watch

    INGRESS_NAMESPACE 替换为 Cloud Service Mesh 入站流量服务的命名空间。如果您使用默认配置安装了 Cloud Service Mesh,请指定 istio-system

    1. 请注意注释 cloud.google.com/load-balancer-type: Internal
    2. 在 Ingress 负载均衡器中查找 IP 值以将其更改为专用 IP 地址
    3. 如果您在 IP 字段中看到专用 IP 地址,请按 Ctrl+C 停止更新。
  3. 对于 Google Cloud 上的专用集群,您必须打开端口。如需了解详情,请参阅 Cloud Service Mesh 文档中的打开专用集群上的端口

如需在更改后验证内部连接,请执行以下操作:

  1. 将名为 sample 的服务部署到 default 命名空间中的 Knative serving:

    gcloud run deploy sample \
    --image gcr.io/knative-samples/helloworld \
    --namespace default
    --platform gke
    
  2. 在 GKE 集群所在的可用区中创建 Compute Engine 虚拟机 (VM):

    VM=cloudrun-gke-ilb-tutorial-vm
    
    gcloud compute instances create $VM
    
  3. 将 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

  4. 将包含 IP 地址的文件复制到虚拟机:

    gcloud compute scp external-ip.txt $VM:~
    
  5. 使用 SSH 连接到虚拟机:

    gcloud compute ssh $VM
    
  6. 在 SSH 会话中,测试示例服务:

    curl -s -w'\n' -H Host:sample.default.nip.io $(cat external-ip.txt)
    

    输出如下所示:

    Hello World!
    
  7. 退出 SSH 会话:

    exit
    

设置多租户环境

在多租户应用场景中,您需要管理 Knative serving 服务并将其部署到当前项目之外的 Google Kubernetes Engine 集群。如需详细了解 GKE 多租户,请参阅集群多租户

如需了解如何为 Knative serving 配置多租户,请参阅跨项目多租户

后续步骤