Deployment dei container in Cloud Run
Se utilizzi il gestore dei servizi Linux avanzato offerto per impostazione predefinita per eseguire la migrazione dei carichi di lavoro dei container, puoi eseguire il deployment del container su Cloud Run senza dover apportare ulteriori modifiche al container.
Per eseguire il deployment del container su Cloud Run:
Aggiungi un'origine di migrazione e crea una migrazione seguendo la stessa procedura prevista con il runtime esistente.
Personalizza il piano di migrazione in base alle tue esigenze.
Scarica il piano di migrazione. Il piano di migrazione è rappresentato da AppXGenerateArtifactsFlow.
Ad esempio, per una migrazione denominata "my-migration":
migctl migration get my-migration
Apri il piano di migrazione scaricato,
my-migration.yaml
, in un editor di testo.Verifica il gestore dei servizi Linux avanzato. Per impostazione predefinita, il flag
v2kServiceManager
è impostato sutrue
. Tuttavia, se Migrate to Containers rileva un servizio di sistema non supportato dal servizio riceverai un avviso e il flagv2kServiceManager
verrà impostato sufalse
. Se il flag èfalse
, la migrazione utilizzerà un runtime legacy che supporta le tue completamente gestito di Google Cloud.Insieme al servizio non supportato viene fornito il seguente avviso:
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.
Quando viene trovato un servizio non supportato, puoi anche scegliere di impostare manualmente il flag su
true
. In questo caso, puoi scegliere di mantenere il servizio non supportato nell'immagine generata, dove potrebbe non essere eseguito, oppure puoi escluderlo rimuovendolo dal piano di migrazione.Per attivare il nuovo gestore del servizio, reimposta il flag su
true
:v2kServiceManager: true
Esegui le altre personalizzazioni necessarie per la migrazione come descritto in Personalizzare il piano di migrazione.
Al termine delle modifiche, salva il file modificato.
Carica il piano di migrazione modificato:
migctl migration update my-migration --main-config my-migration.yaml
Genera e esamina gli artefatti della migrazione proprio come fai oggi con il runtime esistente.
Modifica il nuovo file
services-config.yaml
per configurare le proprietà di inizializzazione del contenitore. Salva il file e ricostruisci l'immagine del contenitore per applicare le modifiche.Consulta Utilizzo di services-config.yaml per ulteriori informazioni su come modificare il file
services.yaml
.Dopo aver generato gli artefatti di migrazione, apri il file
deployment_spec.yaml
in un editor per determinare la posizione dell'immagine container. Ad esempio, dovresti vedrai qualcosa di simile al seguente:spec: containers: - image: gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
dove
gcr.io/PROJECT_NAME/IMAGE_NAME:LABEL
specifica la posizione dell'immagine del contenitore.Utilizza il seguente comando per eseguire il deployment del contenitore su 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
La proprietà
--set-env-vars
imposta la variabile di ambienteHC_V2K_SERVICE_MANAGER
sutrue
per attivare il gestore dei servizi Linux avanzato.La proprietà
--port
specifica la porta a cui vengono inviate le richieste al container. La porta predefinita è 8080.
Esempio: deployment del container della guida rapida su Cloud Run
Utilizza la guida Guida rapida attuale per eseguire la migrazione di un contenuto di un semplice server web e poi esegui il deployment su Cloud Run. Le uniche modifiche da apportare alla procedura di avvio rapido sono:
Nel passaggio 3 della procedura di migrazione della VM, in cui rivedi il piano di migrazione, imposta
v2kServiceManager
intrue
del piano di migrazione, quindi salva il piano:v2kServiceManager: true
Al termine della migrazione, apri il file
deployment_spec.yaml
in un editor per determinare la posizione del contenitore. Ad esempio, il risultato dovrebbe essere simile al seguente:spec: containers: - image: gcr.io/PROJECT_NAME/quickstart-instance:LABEL
Nella sezione Eseguire il deployment del carico di lavoro sottoposto a migrazione, esegui il deployment dell'immagine container in Cloud Run utilizzando il comando:
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
Il server web nel container migrato rimane in ascolto delle richieste sulla porta 80, assicurati di specificare la porta quando esegui il deployment del container.
Dovresti vedere la seguente risposta, che include l'URL del servizio 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
Da Cloud Shell, effettua una richiesta al container utilizzando l'URL del suo servizio, inserendo le tue credenziali:
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://my-runtime-s5ahdq-uc.a.run.app
Ora dovresti visualizzare la pagina "Hello World!".
Passaggi successivi
- Scopri come utilizzare services-config.yaml.