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à:

  • Connetti 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. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  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. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  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. Crea un account GitHub o accedi a uno esistente.
  15. Costi

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

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

    I nuovi Google Cloud utenti potrebbero avere diritto a una prova gratuita.

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 i seguenti passaggi:

    1. Accetta la richiesta del tuo token OAuth GitHub. Il token è 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 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 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 all'account di servizio l'autorizzazione a scrivere i log aggiungendo un binding della policy 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 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 della flotta 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 alpha 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 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 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 su 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 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 distribuito automaticamente a questo nuovo cluster. Per ulteriori informazioni sulle strategie di deployment e sulle varianti, consulta Eseguire il deployment dei pacchetti per la 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.

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 della tua fork di GitHub di Cymbal Bank, 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