设置 Knative serving

了解如何设置和配置 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 服务。

准备工作

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

  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 的默认配置安装了 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 的默认配置安装了 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 配置多租户,请参阅跨项目多租户

后续步骤