Deployment delle immagini container

Questa pagina descrive come eseguire il deployment di nuovi servizi e di nuove revisioni in Cloud Run for Anthos.

Prima di iniziare

Per utilizzare Google Cloud CLI, devi prima configurare e configurare gli strumenti a riga di comando.

Connessione ai cluster GKE

Prima di poter eseguire il deployment dei servizi su Cloud Run for Anthos, devi accedere per connetterti al tuo cluster GKE.

Pulsante Login (Accedi)

Per ulteriori informazioni sulla connessione ai tuoi cluster GKE, incluse le opzioni aggiuntive, consulta:

Autorizzazioni richieste per il deployment

Devi disporre delle autorizzazioni per creare, aggiornare ed eliminare nell'apiGroup serving.knative.dev e nel tipo Service; inoltre, devi avere UNO dei seguenti ruoli di Identity and Access Management:

Immagini di cui puoi eseguire il deployment

Non esiste un limite di dimensioni che si applica all'immagine container di cui puoi eseguire il deployment.

Puoi utilizzare i container di qualsiasi Container Registry, come Docker Hub. Per informazioni sul deployment di immagini private da registry diversi da Container Registry o Artifact Registry, consulta Deployment di immagini container private da altri registri di container.

Deployment di un nuovo servizio

Puoi specificare un'immagine container con un tag (ad esempio, gcr.io/my-project/my-image:latest) o con un digest esatto (ad esempio, gcr.io/my-project/my-image@sha256:41f34ab970ee...).

Il deployment in un servizio per la prima volta crea la prima revisione. Tieni presente che le revisioni sono immutabili. Se esegui il deployment da un tag immagine container, questo verrà risolto in un digest e la revisione fornirà sempre questo digest particolare.

Puoi eseguire il deployment di un container utilizzando la console Google Cloud, Google Cloud CLI o un file di configurazione YAML.

Fai clic sulla scheda per visualizzare le istruzioni relative all'utilizzo dello strumento scelto.

Configurazione predefinita della località gcloud

Se in precedenza hai configurato una località nella configurazione di default di Google Cloud CLI, i comandi gcloud utilizzano quei valori per impostazione predefinita, tra cui:

  • compute/region
  • compute/zone
  • run/cluster
  • run/cluster_location
  • run/platform
  • run/region

Esegui il seguente comando gcloud config per visualizzare le impostazioni della configurazione di default:

gcloud config configurations describe default

Console

Per eseguire il deployment di un'immagine container:

  1. Vai a Cloud Run for Anthos nella console Google Cloud:

    Vai a Cloud Run for Anthos

  2. Fai clic su Crea servizio per visualizzare la pagina Crea servizio.

    Nel modulo:

    1. Dal menu a discesa, seleziona uno dei cluster GKE disponibili per il tuo servizio.

    2. Inserisci il nome del servizio che preferisci. I nomi dei servizi devono essere univoci per ogni regione e progetto o per cluster. Il nome di un servizio non può essere modificato in un secondo momento.

    3. Nella sezione Connettività:

      • Seleziona Interno se vuoi limitare l'accesso solo ad altri servizi o servizi Cloud Run for Anthos nel tuo cluster che utilizzano Istio.
      • Seleziona Esterno per consentire l'accesso esterno al tuo servizio

      Tieni presente che puoi modificare l'opzione di connettività in qualsiasi momento, come descritto nella sezione Modificare le impostazioni di connettività del servizio.

    4. Fai clic su Avanti per passare alla seconda pagina del modulo di creazione del servizio:

      immagine

      Nel modulo:

      1. Nella casella di testo Container image URL, fornisci l'URL di un'immagine di un registro supportato, ad esempio: us-docker.pkg.dev/cloudrun/container/hello:latest

      2. Facoltativamente, fai clic su Mostra impostazioni avanzate e sulle schede successive per impostare:

      3. Fai clic su Crea per eseguire il deployment dell'immagine in Cloud Run for Anthos e attendi il completamento del deployment.

    Hai appena eseguito il deployment di un servizio in un cluster abilitato per Cloud Run for Anthos.

Riga di comando

Per eseguire il deployment di un'immagine container:

  1. Esegui il comando gcloud run deploy:

    gcloud run deploy SERVICE --image IMAGE_URL

    • Sostituisci SERVICE con il nome del servizio in cui vuoi eseguire il deployment. Se il servizio specificato non esiste, ne viene creato uno nuovo.

    • Sostituisci IMAGE_URL con un riferimento all'immagine container, ad esempio gcr.io/cloudrun/hello.

    • Ulteriori opzioni di implementazione:

      • Per eseguire il deployment in uno spazio dei nomi diverso da default, devi specificare lo spazio dei nomi utilizzando il parametro --namespace.

      • Per eseguire il deployment in una località diversa dalla configurazione predefinita, devi specificare i name e location del cluster con i parametri --cluster e --cluster-location:

        gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
      • Puoi impostare le opzioni di connettività con il flag --connectivity come descritto in Modifica delle impostazioni di connettività del servizio per specificare l'accesso interno o esterno.

      • Per Cloud Run for Anthos su VMware, devi includere il parametro --kubeconfig e specificare il tuo file di configurazione:

        gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE

  2. Attendi il completamento del deployment. Al termine, viene visualizzato un messaggio di operazione riuscita insieme all'URL del servizio di cui è stato eseguito il deployment.

YAML

Puoi archiviare la specifica del servizio in un file YAML e quindi eseguirne il deployment utilizzando Google Cloud CLI.

  1. Crea un nuovo file service.yaml con questi contenuti:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE

    Sostituisci

    • SERVICE con il nome del tuo servizio Cloud Run for Anthos
    • IMAGE con l'URL dell'immagine container.

    Puoi anche specificare ulteriori configurazioni, ad esempio variabili di ambiente o limiti di memoria.

  2. Esegui il deployment del nuovo servizio utilizzando questo comando:

    gcloud run services replace service.yaml

Deployment di una nuova revisione di un servizio esistente

Puoi eseguire il deployment di una nuova revisione utilizzando la console Google Cloud, la riga di comando gcloud o un file di configurazione YAML.

Tieni presente che la modifica delle impostazioni di configurazione comporta la creazione di una nuova revisione, anche se non sono state apportate modifiche all'immagine container. Ogni revisione creata è immutabile.

Fai clic sulla scheda per visualizzare le istruzioni relative all'utilizzo dello strumento scelto.

Console

Per eseguire il deployment di una nuova revisione di un servizio esistente:

  1. Vai a Cloud Run for Anthos nella console Google Cloud:

    Vai a Cloud Run for Anthos

  2. Individua il servizio che vuoi aggiornare nell'elenco dei servizi e fai clic sul servizio per aprire i relativi dettagli.

  3. Fai clic su MODIFICA E DEPLOYMENT NUOVA REVISIONE. Viene visualizzato il modulo di deployment delle revisioni:

    immagine

  4. Se necessario, fornisci l'URL della nuova immagine container di cui vuoi eseguire il deployment.

  5. (Facoltativo) Imposta:

  6. Per inviare tutto il traffico alla nuova revisione, seleziona la casella di controllo Pubblica immediatamente questa revisione. Per implementare gradualmente una nuova revisione, deseleziona questa casella di controllo: in questo modo, verrà creato un deployment in cui non verrà inviato traffico alla nuova revisione. Segui le istruzioni per le implementazioni graduali dopo il deployment.

  7. Fai clic su ESEGUI IL DEPLOYMENT e attendi il completamento del deployment.

Riga di comando

Per eseguire il deployment di un'immagine container:

  1. Esegui il comando gcloud run services update:

    gcloud run services update SERVICE --image IMAGE_URL
    • A ogni revisione viene assegnato automaticamente un suffisso di revisione. Se vuoi specificare un suffisso di revisione personalizzato, aggiungi il parametro --revision-suffix.

    • Sostituisci SERVICE con il nome del servizio in cui vuoi eseguire il deployment. Se il servizio specificato non esiste, ne viene creato uno nuovo.

    • Sostituisci IMAGE_URL con un riferimento all'immagine container, ad esempio gcr.io/cloudrun/hello.

    • Ulteriori opzioni di implementazione:

      • Per eseguire il deployment in uno spazio dei nomi diverso da default, devi specificare lo spazio dei nomi utilizzando il parametro --namespace.

      • Per eseguire il deployment in una località diversa dalla configurazione predefinita, devi specificare i name e location del cluster con i parametri --cluster e --cluster-location:

        gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
      • Puoi impostare le opzioni di connettività con il flag --connectivity come descritto in Modifica delle impostazioni di connettività del servizio per specificare l'accesso interno o esterno.

      • Per Cloud Run for Anthos su VMware, devi includere il parametro --kubeconfig e specificare il tuo file di configurazione:

        gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE

  2. Attendi il completamento del deployment. Al termine, viene visualizzato un messaggio di operazione riuscita insieme all'URL del servizio di cui è stato eseguito il deployment.

YAML

Puoi scaricare la configurazione di un servizio esistente in un file YAML con il comando gcloud run services describe utilizzando il flag --format=export. Puoi quindi modificare il file YAML ed eseguire il deployment delle modifiche con il comando gcloud run services replace. Devi assicurarti di modificare solo gli attributi specificati.

  1. Scarica la configurazione del tuo servizio in un file denominato service.yaml nell'area di lavoro locale:

    gcloud run services describe SERVICE --format export > service.yaml

    Sostituisci SERVICE con il nome del tuo servizio Cloud Run for Anthos.

    1. Nel file locale, aggiorna le impostazioni di revisione in qualsiasi attributo secondario di spec.template.

    2. Esegui il deployment della nuova revisione:

      gcloud run services replace service.yaml

Deployment di immagini da altri progetti Google Cloud

Puoi eseguire il deployment di immagini container da altri progetti Google Cloud se imposti le autorizzazioni IAM corrette:

  1. Nella console della console Google Cloud, apri il progetto per il tuo servizio Cloud Run for Anthos.

  2. Vai alla pagina IAM

  3. Ottenere le informazioni dell'account di servizio:

  4. Apri il progetto proprietario del Container Registry che vuoi utilizzare.

  5. Vai alla pagina IAM

  6. Fai clic su Aggiungi per aggiungere una nuova entità.

  7. Nella casella di testo Nuove entità, incolla l'email dell'account di servizio copiato in precedenza.

  8. Nell'elenco a discesa Seleziona un ruolo, seleziona il ruolo da leggere dal registro:

  9. Esegui il deployment dell'immagine container nel progetto che contiene il servizio Cloud Run for Anthos.

Per una maggiore sicurezza, puoi limitare l'accesso alle autorizzazioni:

  • Artifact Registry: concedi il ruolo nel repository in cui sono archiviate le immagini container.
  • Container Registry: concedi il ruolo sul bucket Cloud Storage in cui vengono archiviate le immagini container.

Deployment di immagini container private da altri registri di container

Questa sezione descrive la configurazione delle autorizzazioni corrette per eseguire il deployment delle immagini container da un registro privato arbitrario su Cloud Run for Anthos. Un Container Registry privato richiede le credenziali per accedere all'immagine container. Tieni presente che non è necessario seguire questi passaggi per eseguire il deployment di immagini container private da Container Registry (deprecato) o Artifact Registry nello stesso progetto del tuo cluster.

Per poter eseguire il deployment di un'immagine container privata, devi creare un secret Kubernetes di tipo imagePullSecret e associarlo a un account di servizio:

  1. Crea un secret imagePullSecret denominato container-registry:

    kubectl create secret docker-registry container-registry \
      --docker-server=DOCKER_REGISTRY_SERVER \
      --docker-email=REGISTRY_EMAIL \
      --docker-username=REGISTRY_USER \
      --docker-password=REGISTRY_PASSWORD
    • Sostituisci DOCKER_REGISTRY_SERVER con il nome di dominio completo del tuo registro privato (ad es. https://gcr.io/ per Container Registry o https://hub.docker.com per DockerHub).
    • Sostituisci REGISTRY_EMAIL con il tuo indirizzo email.
    • Sostituisci REGISTRY_USER con il tuo nome utente del Container Registry.

      Se utilizzi Container Registry o Artifact Registry e vuoi archiviare ed estrarre credenziali di lunga durata invece di passare token di accesso di breve durata, consulta Metodi di autenticazione: file di chiavi JSON.

    • Sostituisci REGISTRY_PASSWORD con la tua password di Container Registry.

  2. Apri il tuo account di servizio predefinito:

    kubectl edit serviceaccount default --namespace default

    Ogni spazio dei nomi nel tuo cluster Kubernetes ha un account di servizio predefinito chiamato default. Questo account di servizio predefinito viene utilizzato per eseguire il pull dell'immagine container, a meno che non sia specificato diversamente quando deploy del servizio Cloud Run for Anthos.

  3. Aggiungi il secret imagePullSecret appena creato al tuo account di servizio predefinito:

    imagePullSecrets:
    - name: container-registry
    

    L'account di servizio ora dovrebbe avere il seguente aspetto:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: default
      namespace: default
      ...
    secrets:
    - name: default-token-zd84v
    # The secret we just created:
    imagePullSecrets:
    - name: container-registry
    

A questo punto, per ogni nuovo pod creato nello spazio dei nomi attuale default verrà definito il secret imagePullSecret.

Deployment con iniezione automatica collaterale abilitata

Per eseguire il deployment del tuo servizio con l'inserimento di sidecar online abilitato, consulta l'inserimento automatico di sidecar abilitato nella documentazione di Anthos Service Mesh.

Deployment di servizi su una rete interna

Per eseguire il deployment dei servizi su una rete interna, devi configurare una rete interna privata.

Passaggi successivi

Dopo aver eseguito il deployment di un nuovo servizio, puoi:

Puoi automatizzare le build e i deployment dei tuoi servizi Cloud Run for Anthos utilizzando i trigger di Cloud Build: