設定 Knative serving

瞭解如何設定及配置 Knative serving 安裝作業。

事前準備

您必須在 GKE 叢集上安裝 Knative serving。如要進一步瞭解 GKE 叢集的事前準備,以及如何安裝 Knative serving,請參閱安裝指南

設定 Workload Identity Federation for GKE 的驗證

您可以使用 Workload Identity Federation for GKE,向 Google Cloud API 和服務驗證 Knative 服務。您必須先為 GKE 設定 Workload Identity Federation,再將服務部署至叢集,否則啟用 GKE 適用的 Workload Identity Federation 之前,叢集中的每項服務都必須遷移。進一步瞭解如何使用 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 服務設定 Cloud Service Mesh 選項,請參閱「叢集內控制平面選項」,包括如何設定私人內部網路

設定私人內部網路

在內部網路部署服務,對於向員工提供內部應用程式的企業,以及供在 Knative 服務叢集外執行的用戶端使用的服務而言,都非常實用。這項設定可讓網路中的其他資源,透過無法公開存取的私人內部 (RFC 1918) IP 位址與服務通訊。

如要建立內部網路,請將 Cloud Service Mesh 設定為使用內部 TCP/UDP 負載平衡,而非公開的外部網路負載平衡器。然後,您可以在虛擬私有雲網路的內部 IP 位址上部署 Knative 服務。

事前準備

  • 您必須具備叢集的 admin 權限。
  • 如果您設定了自訂網域,請務必停用代管 TLS 功能,因為內部負載平衡器目前不支援 Knative 服務的代管 TLS。
  • 僅支援 Google Cloud CLI 310.0 以上版本。 如要瞭解如何設定指令列工具,請參閱

如要設定內部負載平衡器,請按照下列步驟操作:

  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 Ingress 服務的命名空間。如果您使用預設設定安裝 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 Ingress Gateway 的私有 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 Ingress 服務的命名空間。如果您使用預設設定安裝 Cloud Service Mesh,請指定 istio-system

  4. 將包含 IP 位址的檔案複製到 VM:

    gcloud compute scp external-ip.txt $VM:~
    
  5. 使用 SSH 連線至 VM:

    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 服務並將其部署至目前專案以外的 Google Kubernetes Engine 叢集。如要進一步瞭解 GKE 多用戶群架構,請參閱「叢集多用戶群架構」。

如要瞭解如何為 Knative serving 設定多用戶群架構,請參閱「跨專案多用戶群架構」。

後續步驟