將容器部署至 Cloud Run
如果您使用預設提供的強化 Linux 服務管理工具來遷移容器工作負載,就可以在 Cloud Run 上部署容器,而無須對容器進行任何其他變更。
如要將容器部署至 Cloud Run,請按照下列步驟操作:
視需要自訂遷移計畫。
下載遷移計畫。遷移計畫由 AppXGenerateArtifactsFlow 代表。
舉例來說,如果移轉作業名稱為「my-migration」:
migctl migration get my-migration
在文字編輯器中開啟下載的遷移計畫
my-migration.yaml
。驗證強化的 Linux 服務管理器。根據預設,
v2kServiceManager
標記會設為true
。不過,如果「遷移至容器」偵測到系統服務不受服務管理員支援,系統會發出警示,並將v2kServiceManager
標記設為false
。如果標記為false
,遷移作業會使用支援服務的舊版執行階段。系統會在不支援的服務旁顯示以下快訊:
Service is not supported by v2k service manager, therefore legacy runtime will be used instead of v2k service manager, and migrated workload would not fit running on Autopilot clusters of Cloudrun.
如果發現不支援的服務,您也可以選擇手動將標記設為
true
。在這種情況下,您可以選擇在產生的映像檔中保留不支援的服務 (可能無法執行),或是從遷移計畫中移除該服務。如要啟用新的服務管理器,請將旗標重設為
true
:v2kServiceManager: true
如「自訂遷移計畫」所述,執行遷移作業所需的任何其他自訂動作。
完成編輯後,請儲存編輯過的檔案。
上傳已編輯的遷移計畫:
migctl migration update my-migration --main-config my-migration.yaml
編輯新的
services-config.yaml
檔案,設定容器的初始化屬性。儲存檔案並重新建構容器映像檔,以便套用變更。如要進一步瞭解如何編輯
services.yaml
檔案,請參閱「使用 services-config.yaml」。產生遷移構件後,請在編輯器中開啟
deployment_spec.yaml
檔案,以便判斷容器映像檔的位置。例如,您應該會看到類似以下的內容:spec: containers: - image: gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
其中
gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
會指定容器映像檔的位置。使用下列指令,在 Cloud Run 上部署容器:
gcloud run deploy my-runtime --image gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL --region REGION --platform managed --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port PORT
--set-env-vars
屬性會將HC_V2K_SERVICE_MANAGER
環境變數設為true
,以啟用強化的 Linux 服務管理器。--port
屬性會指定要求傳送至容器的通訊埠。預設通訊埠為 8080。
範例:在 Cloud Run 上部署快速入門容器
請參閱目前的快速入門指南,瞭解如何遷移含有簡易網路伺服器的容器,然後在 Cloud Run 上部署。您只需要對快速入門程序進行以下變更:
在「遷移虛擬機器」的步驟 3 中,您需要查看遷移計畫,並將
v2kServiceManager
設為遷移計畫中的true
,然後儲存計畫:v2kServiceManager: true
遷移完成後,請在編輯器中開啟
deployment_spec.yaml
檔案,以判斷容器的位置。例如,您應該會看到類似以下的畫面:spec: containers: - image: gcr.io/PROJECT_NAME/quickstart-instance:LABEL
在「部署已遷移的工作負載」部分中,使用下列指令將容器映像檔部署至 Cloud Run:
gcloud run deploy my-runtime --image gcr.io/PROJECT_NAME/quickstart-instance:LABEL --region REGION --platform managed --set-env-vars=HC_V2K_SERVICE_MANAGER=true --port 80
遷移後的容器中,網路伺服器會監聽 80 通訊埠上的請求,因此請務必在部署容器時指定該通訊埠。
您應該會看到下列回應,其中包含 Cloud Run 服務的網址:
Allow unauthenticated invocations to [my-runtime] (y/N)? y Deploying container to Cloud Run service [my-runtime] in project [PROJECT_NAME] region [REGION] Deploying new service... Done. ✓ Creating Revision… ✓ Routing traffic… Setting IAM Policy… Done. Service [my-runtime] revision [my-runtime-00001-sas] has been deployed and is serving 100 percent of traffic. Service URL: https://my-runtime-s5ahdq-uc.a.run.app
在 Cloud Shell 中,使用服務網址向容器提出要求,並傳入憑證:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://my-runtime-s5ahdq-uc.a.run.app
您現在應會看見「Hello World!」頁面。