Deployment in GKE

Questa pagina spiega come eseguire il deployment di un'applicazione in Kubernetes utilizzando in Cloud Build.

Cloud Build fornisce un generatore gke-deploy che ti consente di eseguire il deployment di un'applicazione containerizzata in un cluster GKE.

gke-deploy è un wrapper attorno a kubectl, l'interfaccia a riga di comando per in Kubernetes. Applica le pratiche consigliate da Google per il deployment delle applicazioni a Kubernetes tramite:

  • Aggiornamento del file di risorse Kubernetes dell'applicazione per l'utilizzo del container digest dell'immagine anziché di un tag.

  • Aggiunta di etichette consigliate al file di risorse Kubernetes.

  • Recupero delle credenziali per i cluster GKE in corso in cui stai eseguendo il deployment dell'immagine.

  • In attesa che il file di risorse Kubernetes inviato sia pronto.

Se vuoi eseguire il deployment delle tue applicazioni direttamente utilizzando kubectl e non hai bisogno funzionalità aggiuntiva, Cloud Build fornisce anche un kubectl builder che puoi utilizzare per eseguire il deployment della tua applicazione cluster GKE.

Prima di iniziare

  • Crea un cluster GKE, se non ne hai ancora uno.

  • Avere l'applicazione containerizzata sotto forma di codice sorgente e Dockerfile pronto. Il codice sorgente deve essere archiviato in un repository, ad esempio Cloud Source Repositories, GitHub o Bitbucket.

  • È necessario almeno un file di risorse Kubernetes che descriva e le risorse utilizzate per eseguire l'applicazione. Se non hai Kubernetes di risorse, segui questi passaggi per generarne uno applicazione:

    1. Apri la pagina dei cluster Kubernetes Engine nella console Google Cloud.
    2. Nella pagina dei cluster Kubernetes Engine, fai clic su Esegui il deployment.
    3. Seleziona il contenitore e fai clic su Continua. Vedrai la scheda Configurazione .
    4. In YAML configurazione, fai clic su Visualizza YAML per ottenere un esempio di Kubernetes di risorse.

Autorizzazioni IAM richieste

Aggiungi il ruolo Sviluppatore Google Kubernetes Engine al tuo account:

  1. Apri la pagina Impostazioni di Cloud Build:

    Apri la pagina Impostazioni di Cloud Build

    Verrà visualizzata la pagina Autorizzazioni account di servizio:

    Screenshot della pagina Autorizzazioni dell'account di servizio

  2. Imposta lo stato del ruolo Sviluppatore Kubernetes Engine su Abilitato.

Deployment di un'immagine container predefinita

Per eseguire il deployment di una determinata versione della tua applicazione con gke-deploy:

  1. Assicurati che il file di risorse Kubernetes faccia riferimento digest o tag immagine container corretti.

  2. Aggiungi il passaggio gke-deploy al file di configurazione della build:

    YAML

    steps:
    ...
    # deploy container image to GKE
    - name: "gcr.io/cloud-builders/gke-deploy"
      args:
      - run
      - --filename=kubernetes-resource-file
      - --location=location
      - --cluster=cluster
    

    JSON

    {
      "steps": [
        {
          "name": "gcr.io/cloud-builders/gke-deploy",
          "args": [
            "run",
            "--filename=kubernetes-resource-file",
            "--location=location",
            "--cluster=cluster"
          ]
        }
      ]
    }
    

    Dove:

    • kubernetes-resource-file è il percorso del file della risorsa Kubernetes o il percorso della directory contenente i file delle risorse Kubernetes.
    • cluster è il nome del cluster GKE a cui l'applicazione in cui verrà eseguito il deployment.
    • location corrisponde alla regione o alla zona del cluster.

    Per maggiori informazioni sui flag disponibili, consulta la sezione sulle segnalazioni di gke-deploy run.

  3. Avvia la build:

    gcloud builds submit --region=REGION --project=project-id --config build-config
    

    Dove:

    • project-id è l'ID del tuo progetto.
    • build-config è il nome del file di configurazione della build.
    • REGION è una delle regioni di build supportate.

Creazione e deployment di una nuova immagine container in corso...

Per creare una nuova immagine container ed eseguirne il deployment:

  1. Aggiorna il file di risorse Kubernetes con il nuovo container immagine utilizzando l'attributo --image:

    YAML

    steps:
      # build the container image
    - name: "gcr.io/cloud-builders/docker"
      args: ["build", "-t", "gcr.io/project-id/image:tag", "."]
      # push container image
    - name: "gcr.io/cloud-builders/docker"
      args: ["push", "gcr.io/project-id/image:tag"]
      # deploy container image to GKE
    - name: "gcr.io/cloud-builders/gke-deploy"
      args:
      - run
      - --filename=kubernetes-resource-file
      - --image=gcr.io/project-id/image:tag
      - --location=location
      - --cluster=cluster
    

    JSON

    {
      "steps": [
        {
          "name": "gcr.io/cloud-builders/docker",
          "args": [
            "build",
            "-t",
            "gcr.io/project-id/image:tag",
            "."
          ]
        },
        {
          "name": "gcr.io/cloud-builders/docker",
          "args": [
            "push",
            "gcr.io/project-id/image:tag"
          ]
        },
        {
          "name": "gcr.io/cloud-builders/gke-deploy",
          "args": [
            "run",
            "--filename=kubernetes-resource-file",
            "--image=gcr.io/project-id/image:tag",
            "--location=location",
            "--cluster=cluster"
          ]
        }
      ]
    }
    

    Dove:

    • project-id è l'ID del tuo progetto.
    • image è il nome desiderato dell'immagine container, di solito l'applicazione .
    • tag è il tag dell'immagine container.
      • Se crei una nuova immagine container con ogni commit, consiste nell'utilizzare l'algoritmo SHA breve di commit come tag. Con Cloud Build, disponibile come sostituzione predefinita, $SHORT_SHA.
    • kubernetes-resource-file è il percorso del file della risorsa Kubernetes o il percorso della directory contenente i file delle risorse Kubernetes.
    • cluster è il nome del cluster GKE a cui l'applicazione in cui verrà eseguito il deployment.
    • location è la regione o la zona del cluster in cui verrà eseguito il deployment.
  2. Inizia la build:

    gcloud builds submit --region=REGION --project=project-id --config build-config
    

    Dove:

    • project-id è l'ID del tuo progetto.
    • build-config è il nome del file di configurazione della build.
    • REGION è una delle regioni di build supportate.

Automatizzare i deployment

Puoi automatizzare il deployment della tua applicazione su GKE creando un trigger in Cloud Build. Puoi configurare trigger crea ed esegui il deployment delle immagini ogni volta che esegui il push delle modifiche al codice.

Per creare un trigger di build:

  1. Apri la pagina Trigger nella console Google Cloud:

    Apri la pagina Attivatori

  2. Seleziona il tuo progetto dal menu a discesa del selettore progetti nella parte superiore di della pagina.

  3. Fai clic su Apri.

  4. Fai clic su Crea trigger.

    Nella pagina Crea trigger, inserisci le seguenti impostazioni:

    1. Inserisci un nome per il trigger.

    2. Seleziona l'evento del repository per avviare il trigger.

    3. Seleziona il repository che contiene il codice sorgente e la configurazione della build .

    4. Specifica l'espressione regolare per il nome del ramo o tag che inizierà trigger.ee

    5. Scegli una configurazione per l'attivatore.

      Se scegli un file di configurazione di Cloud Build, specificare le variabili di sostituzione specificando un nome e il valore che vuoi associare a quella variabile. Nell'esempio: di seguito, la variabile di sostituzione definita dall'utente _CLOUDSDK_CONTAINER_CLUSTER specifica il cluster in cui eseguire il deployment, e la variabile di sostituzione definita dall'utente _CLOUDSDK_COMPUTE_ZONE ne specifica la posizione. Se vuoi eseguire il deployment in un cluster diverso, puoi usare la stessa configurazione di compilazione i valori delle variabili di sostituzione:

      YAML

      steps:
      ...
      # deploy container image to GKE
      - name: "gcr.io/cloud-builders/gke-deploy"
        args:
        - run
        - --filename=kubernetes-resource-file
        - --image=gcr.io/project-id/image:tag
        - --location=${_CLOUDSDK_COMPUTE_ZONE}
        - --cluster=${_CLOUDSDK_CONTAINER_CLUSTER}
      

      JSON

      {
        "steps": [
          {
            "name": "gcr.io/cloud-builders/gke-deploy",
            "args": [
              "run",
              "--filename=kubernetes-resource-file",
              "--image=gcr.io/project-id/image:tag",
              "--location=${_CLOUDSDK_COMPUTE_ZONE}",
              "--cluster=${_CLOUDSDK_CONTAINER_CLUSTER}"
            ]
          }
        ]
      }
      

      Dove:

      • kubernetes-resource-file è il percorso del file del file di configurazione di Kubernetes o il percorso della directory i tuoi file di risorse Kubernetes.
      • project-id è l'ID del tuo progetto.
      • image è il nome desiderato dell'immagine container, di solito il nome dell'applicazione.
      • tag è il tag dell'immagine container.

      Per saperne di più su come definire sostituzioni per i file di configurazione di compilazione, consulta l'articolo Utilizzare sostituzioni definite dall'utente.

  5. Fai clic su Crea per salvare il trigger di build.

Quando esegui il push del codice nel repository, Cloud Build esegue automaticamente attivare una build. Per scoprire di più sui trigger di build, consulta Creazione e gestione trigger di build.

Passaggi successivi