Esegui il deployment delle risorse in un parco risorse

Questo tutorial ti insegna a utilizzare un pacchetto di parchi 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 tuo repository al tuo 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. To use a federated identity with the gcloud CLI, you must first configure the tool to use a federated identity.

    For more information, see Browser-based sign-in with the gcloud CLI.

  4. To initialize the gcloud CLI, run the following command:

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

    • 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. Make sure that billing is enabled for your Google Cloud project.

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

    gcloud services enable anthos.googleapis.com  configdelivery.googleapis.com  cloudbuild.googleapis.com  developerconnect.googleapis.com
  8. Install the Google Cloud CLI.
  9. To use a federated identity with the gcloud CLI, you must first configure the tool to use a federated identity.

    For more information, see Browser-based sign-in with the gcloud CLI.

  10. To initialize the gcloud CLI, run the following command:

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

    • 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. Make sure that billing is enabled for your Google Cloud project.

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

    gcloud services enable anthos.googleapis.com  configdelivery.googleapis.com  cloudbuild.googleapis.com  developerconnect.googleapis.com
  14. Creare o avere accesso a un account GitHub.

Costi

In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi basata sull'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud potrebbero essere idonei per una prova gratuita.

Connettiti a Git

Il repository Git contiene le risorse che vuoi implementare in un parco risorse. Per eseguire il deployment di queste risorse con un pacchetto di flotte, devi collegare il tuo repository Git a Cloud Build.

Crea il tuo repository Git

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

  1. Apri GitHub nel browser web.

  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. Nella 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 del parco risorse di Config Sync utilizza Cloud Build per sincronizzare e recuperare le risorse Kubernetes dal tuo repository Git.

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

  1. Apri la pagina Cloud Build nella console Google Cloud e seleziona Repos.

    Apri la pagina Repositori

  2. Assicurati di trovarti nella pagina Repositories (Repository) di 2ª generazione. Se necessario, seleziona Visualizza 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 per la connessione.

  6. Fai clic su Connetti.

  7. Se è la prima volta che colleghi Cloud Build al tuo account GitHub, completa i seguenti passaggi:

    1. Accetta la richiesta del token OAuth GitHub. Il token viene archiviato in Secret Manager per l'utilizzo 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 in precedenza il fork di Cymbal Bank. In un ambiente di produzione, puoi selezionare altri account o repository a cui hai delegato l'accesso.
    4. Segui le eventuali richieste di autenticazione per confermare la tua identità su GitHub.
    5. Nella finestra di GitHub per l'accesso al repository Cloud Build, scegli Solo repository selezionati.
    6. Dal menu a discesa che elenca i repository, seleziona il tuo repositoryfleet-package-tutorial.
    7. Fai clic su Salva.
  8. Nella pagina Cloud Build della console Google Cloud, fai clic su Collega repository per collegare un nuovo repository Git a Cloud Build.

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

  10. Nel menu Repositori, 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 delle risorse su più cluster, questo tutorial mostra come creare due cluster.

Per creare i due cluster e registrarli nel parco risorse del 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 il tuo ID progetto.
    • REGION con la regione in cui vuoi creare il tuo 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 del pacchetto del parco risorse, Config Sync deve essere installato su entrambi i cluster. Puoi installare Config Sync su più cluster contemporaneamente e su eventuali cluster futuri registrati nel parco risorse completando i seguenti passaggi:

  1. Nella console Google Cloud, vai alla pagina Gestione funzionalità.

    Vai a Gestione 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 Upgrade automatici. Questa impostazione garantisce che i tuoi cluster dispongano di una versione di Config Sync che supporti i pacchetti del parco risorse.

  4. Fai clic su Salva modifiche.

  5. Fai clic su Configura.

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

  7. 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 è visualizzato come Installato.

Configura un account di servizio per Cloud Build

Per creare l'account di servizio e concedere le autorizzazioni necessarie a Cloud Build, completa i seguenti passaggi:

  1. Crea l'account di servizio:

    gcloud iam service-accounts create "quickstart-service-account"
    
  2. Concedi all'account di servizio l'autorizzazione per recuperare le risorse dal tuo repository Git aggiungendo un'associazione di criteri IAM per il ruolo Publisher del Resource Bundle:

    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 il criterio.

  3. Concedi all'account di servizio l'autorizzazione a scrivere log aggiungendo un'associazione di norme IAM per il ruolo Writer 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 il criterio.

Esegui il deployment delle risorse nel tuo parco risorse

In questo tutorial aggiungi un manifest Kubernetes con un deployment di nginx al tuo repository Git, pubblichi una release e poi crei un pacchetto di flotta per eseguire il deployment dell' applicazione nginx.

Esegui il commit di un manifest Kubernetes nel tuo repository

Per aggiungere le risorse a GitHub e pubblicare una release, segui questi passaggi:

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

  2. Assegna un nome al file 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 Esegui commit delle modifiche….

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

  5. Nella pagina principale del repository, seleziona Uscite 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 di parchi:

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

    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 da Cloud Build. In genere ha il formato USERNAME-REPOSITORY_NAME.

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

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

    gcloud alpha 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 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 in fase di deployment su tutti i tuoi cluster GKE:

    Apri la pagina Carichi di lavoro

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

    Tieni presente che, poiché maxConcurrent: è impostato su 1 nella definizione del pacchetto del parco risorse, l'API del pacchetto del parco risorse attende che nginx-deployment sia completamente disegnato su un cluster prima di avviare il deployment nel secondo cluster. Se hai modificato la strategia di implementazione su maxConcurrent: 2 o versioni successive, le risorse verranno implementate contemporaneamente in entrambi i cluster.

    Dopo alcuni minuti, 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 implementato automaticamente in questo nuovo cluster. Per ulteriori informazioni su strategie e varianti di deployment, consulta Eseguire il deployment dei pacchetti del parco risorse.

Esegui la pulizia

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

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che hai creato.

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Per eliminare il repository, segui questi passaggi:

  1. In una finestra del browser web del tuo fork di Cymbal Bank su GitHub, fai clic su Impostazioni sotto il nome del repository.

  2. Nella pagina Impostazioni generali (selezionata per impostazione predefinita), vai alla sezione Zona pericolosa 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, digita il nome del repository nel campo di testo.

  6. Fai clic su Elimina questo repository.

Passaggi successivi