Esegui il deployment delle risorse in un parco risorse

Questo tutorial ti insegna a utilizzare un pacchetto del parco risorse per eseguire il deployment dei manifest delle risorse Kubernetes in un parco risorse di cluster. L'utilizzo di strumenti GitOps come i pacchetti del parco risorse di Config Sync può aiutarti a scalare la gestione della configurazione su un numero elevato di cluster.

In questo tutorial completerai le seguenti attività:

  • Connettere un repository Git a Cloud Build
  • Crea e registra i cluster in un parco risorse
  • Installare Config Sync come impostazione predefinita del parco risorse
  • Esegui il deployment delle risorse dal repository al parco risorse di cluster

Prima di iniziare

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Install the Google Cloud CLI.

  3. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  4. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  5. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the GKE, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable container.googleapis.com  configdelivery.googleapis.com  cloudbuild.googleapis.com  developerconnect.googleapis.com
  8. Install the Google Cloud CLI.

  9. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  10. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  11. Create or select a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.
    • Create a Google Cloud project:

      gcloud projects create PROJECT_ID

      Replace PROJECT_ID with a name for the Google Cloud project you are creating.

    • Select the Google Cloud project that you created:

      gcloud config set project PROJECT_ID

      Replace PROJECT_ID with your Google Cloud project name.

  12. Verify that billing is enabled for your Google Cloud project.

  13. Enable the GKE, Config Delivery (fleet packages), Cloud Build, Developer Connect APIs:

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    gcloud services enable container.googleapis.com  configdelivery.googleapis.com  cloudbuild.googleapis.com  developerconnect.googleapis.com
  14. Crea un account GitHub o accedi a uno esistente.
  15. Costi

    In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

    Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

    I nuovi utenti di Google Cloud potrebbero avere diritto a una prova senza costi.

    Connettiti a Git

    Il repository Git contiene le risorse di cui vuoi eseguire il deployment in un parco risorse. Per eseguire il deployment di queste risorse con un pacchetto della flotta, devi connettere il repository Git a Cloud Build.

    Crea il repository Git

    Questo tutorial utilizza GitHub come provider Git. Per creare un nuovo repository GitHub, completa i seguenti passaggi:

    1. Nel browser web, apri GitHub.

    2. Se necessario, accedi al tuo account GitHub. Se hai accesso ad altre organizzazioni o team su GitHub, assicurati di creare il repository con il tuo account personale.

    3. Dalla barra degli strumenti, seleziona Aggiungi e poi fai clic su Nuovo repository.

    4. Digita fleet-package-tutorial come nome del repository.

    5. Mantieni selezionata l'opzione Pubblico come visibilità del repository.

    6. Seleziona Crea repository.

    Connetti il repository a Cloud Build

    Il servizio di pacchetti della flotta di Config Sync utilizza Cloud Build per sincronizzare e recuperare le risorse Kubernetes dal tuo repository Git.

    Per connettere il tuo repository GitHub a Cloud Build, completa i seguenti passaggi:

    1. Apri la pagina Cloud Build nella console Google Cloud , quindi seleziona Repository.

      Apri la pagina Repository

    2. Assicurati di trovarti nella pagina Repository di 2ª generazione. Se necessario, seleziona Visualizza i repository (2ª generazione.).

    3. Fai clic su Crea connessione host.

    4. Nel menu Regione, seleziona us-central1 (Iowa) come regione.

    5. Nel campo Nome, digita fleet-package-quickstart-connection come nome della connessione.

    6. Fai clic su Connetti.

    7. Se è la prima volta che connetti Cloud Build al tuo account GitHub, completa questi passaggi:

      1. Accetta la richiesta del tuo token OAuth GitHub. Il token è archiviato in Secret Manager per l'uso con la connessione GitHub di Cloud Build. Fai clic su Continua.
      2. Installa Cloud Build nel tuo repository GitHub. Seleziona Installa in un nuovo account.
      3. Nella nuova finestra di GitHub che si apre, seleziona l'account GitHub in cui hai creato il fork di Cymbal Bank in precedenza. In un ambiente di produzione, potresti selezionare altri account o repository a cui hai delegato l'accesso.
      4. Segui le richieste di autenticazione per confermare la tua identità su GitHub.
      5. Nella finestra GitHub per l'accesso al repository Cloud Build, scegli Solo repository selezionati.
      6. Dal menu a discesa che elenca i repository, seleziona il tuo repository fleet-package-tutorial.
      7. Fai clic su Salva.
    8. Nella pagina Cloud Build della console Google Cloud , fai clic su Collega repository per connettere un nuovo repository Git a Cloud Build.

    9. Nel menu Connessione, seleziona fleet-package-quickstart-connection.

    10. Nel menu Repository, seleziona il tuo repository fleet-package-tutorial.

    11. Seleziona Collega.

    Configurare il parco risorse

    In questa sezione, configuri il parco risorse creando cluster, registrandoli in un parco risorse e installando Config Sync come pacchetto del parco risorse.

    Creazione di cluster

    Per dimostrare come utilizzare i pacchetti del parco risorse per eseguire il deployment di risorse in più cluster, questo tutorial mostra come creare due cluster.

    Per creare i due cluster e registrarli nel parco risorse del tuo progetto:

    1. Crea un cluster GKE:

      gcloud container clusters create-auto cluster1 \
        --project=PROJECT_ID \
        --region=REGION \
        --fleet-project=PROJECT_ID \
        --release-channel=rapid
      

      Sostituisci quanto segue:

      • PROJECT_ID con l'ID progetto.
      • REGION con la regione in cui vuoi creare il cluster, ad esempio us-central1.
    2. Crea un secondo cluster GKE:

      gcloud container clusters create-auto cluster2 \
        --project=PROJECT_ID \
        --region=REGION \
        --fleet-project=PROJECT_ID \
        --release-channel=rapid
      

    Installare Config Sync come impostazione predefinita del parco risorse

    Per utilizzare il servizio di pacchetti del parco risorse, Config Sync deve essere installato su entrambi i cluster. Per installare Config Sync su più cluster contemporaneamente e su tutti i cluster futuri registrati nel parco risorse, completa i seguenti passaggi:

    1. Nella console Google Cloud , vai alla pagina Feature Manager.

      Vai a Gestore funzionalità

    2. Nel riquadro Config Sync, fai clic su Configura.

    3. Fai clic su Personalizza le impostazioni del parco risorse. Nella finestra di dialogo visualizzata, seleziona la versione di Config Sync da installare.

    4. Fai clic su Configura.

    5. Nella finestra di dialogo di conferma Configurazione delle impostazioni della flotta, fai clic su Conferma. Se non hai abilitato Config Sync in precedenza, facendo clic su Conferma viene abilitata anche l'API anthosconfigmanagement.googleapis.com.

    6. Nella tabella Cluster nel parco risorse, seleziona entrambi i cluster e poi fai clic su Sincronizza con le impostazioni del parco risorse. In questo modo Config Sync viene installato su entrambi i cluster con le impostazioni che hai configurato.

      La sincronizzazione dei cluster può richiedere alcuni minuti. Puoi procedere con i passaggi successivi quando Config Sync viene visualizzato come Installato.

    Configura un account di servizio per Cloud Build

    Per creare il account di servizio e concedere le autorizzazioni richieste a Cloud Build, completa i seguenti passaggi:

    1. Crea l'account di servizio:

      gcloud iam service-accounts create "quickstart-service-account"
      
    2. Concedi al account di servizio l'autorizzazione per recuperare le risorse dal tuo repository Git aggiungendo un binding della policy IAM per il ruolo Publisher bundle di risorse:

      gcloud projects add-iam-policy-binding PROJECT_ID \
         --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \
         --role='roles/configdelivery.resourceBundlePublisher'
      

      Se richiesto, seleziona None come condizione per la policy.

    3. Concedi al account di servizio l'autorizzazione a scrivere log aggiungendo un binding della policy IAM per il ruolo Scrittore log:

      gcloud projects add-iam-policy-binding PROJECT_ID \
         --member="serviceAccount:quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com" \
         --role='roles/logging.logWriter'
      

      Se richiesto, seleziona None come condizione per la policy.

    Eseguire il deployment delle risorse nel parco risorse

    In questo tutorial, aggiungi un manifest Kubernetes con un deployment nginx al tuo repository Git, pubblica una release e poi crea un pacchetto fleet per eseguire il deployment dell'applicazione nginx.

    Esegui il commit di un manifest Kubernetes nel repository

    Per aggiungere le risorse a GitHub e pubblicare una release, completa i seguenti passaggi:

    1. Nella finestra del browser web del repository GitHub, fai clic su Aggiungi file e poi su Crea nuovo file.

    2. Assegna al file il nome deployment.yaml e incolla i seguenti contenuti:

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nginx-deployment
      spec:
        replicas: 3
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
            - image: nginx:1.14.2
              name: nginx
              ports:
              - containerPort: 80
      
    3. Fai clic su Applica modifiche…

    4. Nella finestra di dialogo di conferma, mantieni selezionata l'opzione Esegui il commit direttamente nel ramo main e poi fai clic su Esegui il commit delle modifiche.

    5. Nella pagina principale del repository, seleziona Releases dalla barra laterale.

    6. Nella parte superiore della pagina, scegli Crea una nuova release.

    7. Seleziona il menu Scegli un tag e digita v1.0.0 come tag. Fai clic su Crea nuovo tag.

    8. Fai clic su Pubblica release.

    Esegui il deployment di una risorsa nei cluster con un pacchetto del parco risorse

    Per eseguire il deployment della nuova risorsa, crea un nuovo pacchetto della flotta:

    1. Questo pacchetto del parco risorse ha come target tutti i cluster del parco risorse perché non contiene un campo selettore. Ciò significa anche che tutti i cluster futuri aggiunti al parco risorse avranno il deployment di nginx aggiunto automaticamente.

      In Cloud Shell, crea un file denominato fleet-package.yaml con il seguente contenuto:

      resourceBundleSelector:
        cloudBuildRepository:
          name: projects/PROJECT_ID/locations/us-central1/connections/fleet-package-quickstart-connection/repositories/REPOSITORY_NAME
          tag: v1.0.0
          serviceAccount: projects/PROJECT_ID/serviceAccounts/quickstart-service-account@PROJECT_ID.iam.gserviceaccount.com
          path:
      target:
        fleet:
          project: projects/PROJECT_ID
      rolloutStrategy:
        rolling:
          maxConcurrent: 1
      

      Sostituisci REPOSITORY_NAME con il nome del repository di Cloud Build. Solitamente ha il formato USERNAME-REPOSITORY_NAME.

    2. Crea il pacchetto del parco risorse per iniziare l'implementazione:

      gcloud container fleet packages create fp-nginx \
         --source=fleet-package.yaml \
         --project=PROJECT_ID
      
    3. Verifica che il pacchetto del parco risorse sia stato creato:

      gcloud container fleet packages list
      

      Puoi fare clic sul link fornito per visualizzare i log di streaming per il job Cloud Build.

      Il pacchetto del parco risorse inizia a implementare le risorse Kubernetes nel tuo parco risorse.

    4. Nella pagina Google Kubernetes Engine della console Google Cloud , vai alla pagina Carichi di lavoro per visualizzare una visualizzazione aggregata dei carichi di lavoro di cui viene eseguito il deployment in tutti i tuoi cluster GKE:

      Apri la pagina Carichi di lavoro

      Potrebbero essere necessari alcuni minuti prima che i workload diventino disponibili. Potresti anche notare errori di disponibilità mentre Autopilot modifica le richieste di risorse per il nuovo deployment.

      Nota come, poiché maxConcurrent: è impostato su 1 nella definizione del pacchetto del parco risorse, l'API Fleet Package attende che nginx-deployment sia completamente implementato su un cluster prima di iniziare l'implementazione sul secondo cluster. Se hai modificato la strategia di implementazione impostandola su maxConcurrent: 2 o su un valore superiore, le risorse verranno implementate in entrambi i cluster contemporaneamente.

      Dopo qualche minuto, vedrai due nuovi workload per nginx-deployment su entrambi i cluster. Potresti dover aggiornare la pagina.

    Puoi continuare a esplorare diverse strategie di deployment con i pacchetti del parco risorse. Ad esempio, puoi aggiungere un nuovo cluster al tuo parco risorse per osservare che il tuo carico di lavoro viene distribuito automaticamente a questo nuovo cluster. Per ulteriori informazioni sulle strategie e sulle varianti di deployment, consulta Eseguire il deployment dei pacchetti della flotta.

    Esegui la pulizia

    Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questa pagina, elimina il progetto Google Cloud con le risorse.

      Delete a Google Cloud project:

      gcloud projects delete PROJECT_ID

    Per eliminare il repository, segui questi passaggi:

    1. Nella finestra del browser web del tuo repository GitHub, sotto il nome del repository, fai clic su Settings (Impostazioni).

    2. Nella pagina delle impostazioni generali (selezionata per impostazione predefinita), vai alla sezione Zona di pericolo e fai clic su Elimina questo repository.

    3. Fai clic su Voglio eliminare questo repository.

    4. Leggi gli avvisi e fai clic su Ho letto e compreso questi effetti.

    5. Per verificare di eliminare il repository corretto, nel campo di testo digita il nome del repository.

    6. Fai clic su Elimina questo repository.

    Passaggi successivi