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 contenitore su Cloud Run senza dover apportare ulteriori modifiche al contenitore.

Per eseguire il deployment del container su Cloud Run:

  1. Installa Migrate to Containers versione 1.15.0.

  2. Aggiungi un'origine di migrazione e crea una migrazione come fai oggi con il runtime esistente.

  3. Personalizza il piano di migrazione in base alle tue esigenze.

    1. 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
    2. Apri il piano di migrazione scaricato, my-migration.yaml, in un editor di testo.

    3. Verifica il gestore dei servizi Linux avanzato. Per impostazione predefinita, il flag v2kServiceManager è impostato su true. Tuttavia, se Migrate to Containers rileva un servizio di sistema non supportato dal gestore dei servizi, riceverai un avviso e il flag v2kServiceManager verrà impostato su false. Se il flag è false, la migrazione utilizzerà un runtime precedente che supporta il tuo servizio.

      Accanto 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 rilevato 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 dei servizi, reimposta il flag su true:

      v2kServiceManager: true
    4. Esegui le altre personalizzazioni necessarie per la migrazione come descritto in Personalizzare il piano di migrazione.

    5. Al termine delle modifiche, salva il file modificato.

    6. Carica il piano di migrazione modificato:

      migctl migration update my-migration --main-config my-migration.yaml
  4. Genera e rivedi gli artefatti di migrazione come fai oggi con il runtime esistente.

  5. 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.

    Per ulteriori informazioni su come modificare il file services.yaml, consulta Utilizzo di services-config.yaml.

  6. Dopo aver generato gli elementi della migrazione, apri il file deployment_spec.yaml in un editor per determinare la posizione dell'immagine del contenitore. Ad esempio, dovresti vedere 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.

  7. 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 ambiente HC_V2K_SERVICE_MANAGER su true per attivare il gestore dei servizi Linux avanzato.

    La proprietà --port specifica la porta a cui vengono inviate le richieste al contenitore. La porta predefinita è 8080.

Esempio: deployment del contenitore 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:

  1. Nel passaggio 3 della migrazione della VM, dove esamini il piano di migrazione, imposta v2kServiceManager su true nel piano di migrazione e poi salvalo:

    v2kServiceManager: true
  2. Al termine della migrazione, apri il file deployment_spec.yaml in un editor per determinare la posizione del contenitore. Ad esempio, dovresti visualizzare qualcosa di simile al seguente:

    spec:
      containers:
      - image: gcr.io/PROJECT_NAME/quickstart-instance:LABEL
  3. 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 contenitore sottoposto a migrazione ascolta le richieste sulla porta 80, quindi assicurati di specificare questa porta durante il deployment del contenitore.

    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
  4. Da Cloud Shell, invia una richiesta al contenitore utilizzando il relativo URL di servizio, passando 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