請參閱本指南,將工作負載遷移至 Cloud Run。一般來說,遷移工作負載時,您需要移植所有 Kubernetes 相關功能,然後將現有服務重新部署至 Cloud Run。
遷移至 Cloud Run 的主要優點:
全代管無伺服器產品,可實作 Knative Serving API 規格,並遵守容器合約。
Cloud Run 的 v1 Admin API 旨在盡可能提高與 Knative 服務的攜帶性。
Cloud Run 和 Knative Serving 的使用者體驗類似:
- 這兩個產品都使用
gcloud run
指令群組。 - Google Cloud 控制台中的使用者介面版面配置和行為類似。
- 這兩個產品都使用
事前準備
Cloud Run 不支援下列 Google Kubernetes Engine 功能:
- 叢集和 Pod 功能,例如啟動、有效性和完備性探查,以及服務探索。
- 設定:
- ConfigMaps - 您可以使用 Secret Manager 將 ConfigMap 轉換為密鑰。
- NVIDIA GPU
存取權控管:
您可以使用 Cloud Run 中的 IAM,對資源存取權進行相同的控管。也請考慮使用服務身分。
遷移注意事項
請務必詳閱並瞭解下列產品差異,確保能轉移所有依附元件和需求。
密鑰
在 Cloud Run 中,您可以選擇將密鑰掛接為環境變數或磁碟區,但含有機密資訊的密鑰應儲存在 Secret Manager 中。
Secret Manager 中的密鑰與 Kubernetes 密鑰的重要差異:
功能 | Secret Manager 密鑰 | Kubernetes Secret |
---|---|---|
名稱中可用的字元 | [a-zA-Z0-9_-]{1,255} |
[a-z0-9-.]{1,253} |
版本管理 | 密鑰會進行版本控管 | 不支援 |
Secret Payload | 單曲〈[]byte 〉 |
地圖:<string, string> |
瞭解如何使用 Secret Manager,為 Knative 服務的密鑰建立版本化密鑰。
網路
請使用下列資訊,將現有網路設定移植到 Cloud Run。
- 服務端點
- Cloud Run 不支援 Knative 服務的 Kubernetes 端點。進一步瞭解 Cloud Run 中的專屬端點。
- 網域對應
- Cloud Run DomainMapping API 與 Knative 服務相容。不過,Cloud Run 僅在部分Cloud Run 地理位置提供網域對應功能。建議改用全域 HTTP(S) 負載平衡器,為自訂網域提供服務。
- 虛擬私人雲端連線能力
- Cloud Run 服務位於虛擬私有雲外部。如要與虛擬私有雲中的資源通訊,請使用無伺服器虛擬私有雲存取連接器。
- 輸入控管
- 如果 Knative 服務服務已設定為使用私人內部網路,並使用內部負載平衡器 (ILB),您可以將 Cloud Run 服務設定為
Ingress = Internal
。將服務設定為internal
,可限制存取權,僅限於虛擬私有雲或其他 Cloud Run 服務。進一步瞭解服務間的通訊。
遷移服務
如要遷移服務,您必須匯出 Knative Serving 服務、編輯匯出的 YAML 檔案,然後將重新設定的服務部署至 Cloud Run。
執行下列指令,將 Knative 服務服務匯出至本機 YAML 檔案:
gcloud run services describe SERVICE --format export --namespace NAMESPACE --cluster CLUSTER --platform gke > FILENAME.yaml
取代:
SERVICE
改為您的 Knative serving 服務名稱。NAMESPACE
改為服務執行的命名空間。CLUSTER
改為執行服務的叢集名稱。FILENAME
,並選擇不重複的檔案名稱。
修改匯出的 Cloud Run
FILENAME.yaml
檔案:- 您必須搜尋並將 Kubernetes 命名空間替換為Google Cloud 專案的 ID。舉例來說,您必須將
namespace:
default
替換為namespace:
my-unique-id
。 - 您必須更新所有不支援的功能設定。
您必須刪除下列任一屬性及其值:
metadata.annotations.kubectl.kubernetes.io/last-applied-configuration
metadata.managedFields
spec.template.spec.containers.readinessProbes
spec.template.spec.enableServiceLinks
舉例來說,您可能需要從
spec:
>template:
>spec:
>containers:
屬性中移除下列設定:... readinessProbe: successThreshold: 1 tcpSocket: {} ...
- 您必須搜尋並將 Kubernetes 命名空間替換為Google Cloud 專案的 ID。舉例來說,您必須將
使用
--platform managed
旗標,將修改後的.yaml
檔案部署至 Cloud Run。進一步瞭解如何部署。請注意,您可以將 Cloud Run 設為同一個 Google Cloud 專案。
gcloud run services replace FILENAME.yaml --platform managed --region REGION
取代:
FILENAME
,並替換成您建立的匯出設定檔名稱。REGION
,並使用支援的 Cloud Run 位置。例如:us-central1
設定 Cloud Run 服務的存取權:
根據預設,Cloud Run 服務無法從外部存取。如要向網際網路公開服務,並允許未經驗證的要求,請允許公開 (未經驗證) 存取。
如要設定這項服務,僅允許私人內部存取 (例如在 Cloud Run 服務之間),請參閱「服務對服務驗證」。
在 Google Cloud 控制台的服務頁面中,按一下畫面顯示的網址連結,即可開啟您所部署服務的穩定專屬端點。
將流量遷移至服務
測試新部署的服務後,即可準備遷移所有正式版流量,這時請設定自訂網域,並向註冊商更新 DNS 記錄。請按照對應自訂網域中的指示操作。