Gestione dei cluster utente con Terraform

Questa pagina è rivolta agli amministratori di piattaforma.

Questa pagina descrive come gestire i cluster utente utilizzando Terraform.

Prerequisiti

Devi avere un account con accesso al cluster di amministrazione. Questo account deve avere le autorizzazioni corrette per gestire i cluster utente. Questo account richiede un sottoinsieme dell'accesso dell'amministratore della piattaforma più "list" su customresourcedefinitions nel gruppo API apiextensions.k8s.io. Utilizzerai questo account per configurare il provider Kubernetes Terraform in modo che possa gestire le risorse relative al cluster utente. L'account deve avere le seguenti autorizzazioni specifiche:

  • Accesso completo agli spazi dei nomi per i cluster utenti nel cluster di amministrazione, ad esempio cluster-user-cluster2
  • Accesso completo su clusters e nodepools in baremetal.cluster.gke.io
  • Accesso completo su bootstrapservicebindings, configmanagementfeaturespecs, configmanagementbindings, servicemeshfeaturespecs, servicemeshbindings in managementcenter.anthos.cloud.google.com
  • Accesso a list su customresourcedefinitions in apiextensions.k8s.io
  • Se devi installare Anthos Config Management e Anthos Service Mesh, devi anche accedere al secret per gli spazi dei nomi dei cluster utente nel cluster di amministrazione, in modo da ottenere le credenziali per la connessione al cluster utente.

Scarica script Terraform

Scarica il file tarball degli script Terraform dalla scheda Support (Assistenza) della console Anthos Management Center. Estrai script dal file.

tar xvf terraform-scripts.tar.gz

Avvia Terraform e configura l'autenticazione

Esistono diversi modi per configurare il provider Kubernetes Terraform in modo che esegua l'autenticazione con l'API del cluster di amministrazione. Scegli la modalità più adatta al tuo caso d'uso documentato in Configurazione provider. Se non disponi di autorizzazioni sufficienti nel cluster di amministrazione, contatta l'operatore dell'infrastruttura.

cd cluster
terraform init

Sostituisci (# (# serve authentication) con uno dei metodi di autenticazione di provider Setup (Configurazione provider).

Creazione di un cluster utente

  1. Specifica tutte le variabili in cluster/terraform.tfvars. Assicurati di specificare login_user_name se non ha privilegi di utente root. Esempio:

    admin_cluster_endpoint = "https://10.200.0.100:443"
    cluster_name      = "user-cluster2"
    control_plane_nodes = [
      { "address" = "10.200.0.26" },
      { "address" = "10.200.0.21" },
      { "address" = "10.200.0.22" },
    ]
    control_plane_vip = "10.200.0.110"
    nodepool_nodes = [
      { "address" = "10.200.0.23" },
      { "address" = "10.200.0.25" },
      { "address" = "10.200.0.24" },
    ]
    address_pools = [
      {
        "addresses" = ["10.200.0.111-10.200.0.119"]
        "name"      = "pool1"
      },
    ]
    bootstrap_service            = ["test-bootstrapservice", "test-bootstrapservice-2"]
    anthos_baremetal_version     = "1.9.0"
    
  2. Applica le modifiche. Una volta completato il comando, viene creato il cluster utente.

    terraform apply
    

Distruzione di un cluster utente

Usa il comando seguente per eliminare un cluster utente:

terraform destroy

Un tempo di attesa è impostato per controllare l'eliminazione delle risorse. Potresti volerla aggiornare aggiornando la variabile wait_duration. Il motivo del tempo di attesa è dovuto a funzionalità mancanti nel provider Kubernetes (consulta questa richiesta di funzionalità).

Quando la creazione di un cluster utente è in attesa a causa di alcuni problemi, non utilizzare terraform destroy. Esegui invece la pulizia manuale dell'installazione:

  1. Interrompi il comando terraform.

  2. Elimina il cluster utente dalla console del Centro di gestione.

  3. Rimuovi il file terraform.tfstate.

Abilita Anthos Config Management e Anthos Service Mesh

Per attivare Anthos Config Management e Anthos Service Mesh, completa i seguenti passaggi:

  1. Avvia Terraform per il progetto features Terraform.

      cd features
      terraform init
    
  2. Configura l'autenticazione nel cluster di amministrazione.

  3. Inserisci la chiave privata per il repository Git in /etc/ssh-key/key.

  4. Imposta activate_acm e activate_asm su true e definisci tutte le variabili correlate. Esempio:

    cluster_name                 = "user-cluster2"
    admin_cluster_endpoint       = "https://10.200.0.100:443"
    user_cluster_ca_certificate  = ""
    activate_acm                 = true
    version_acm                  = "1.7.1"
    enable_acm_policy_controller = true
    acm_git_repo = {
      git_repo_url    = "git@github.com:example/example.git"
      git_repo_branch = "main"
      git_policy_dir  = "."
      git_secret_type = "ssh"
    }
    activate_asm = true
    version_asm  = "1.9.6-asm.1"
    
  5. Applica le modifiche.

    terraform apply
    
  6. (Facoltativo) Modifica il tempo di attesa per Anthos Service Mesh, se necessario. A tale scopo, puoi aggiornare la variabile wait_duration.

Disattiva Anthos Config Management e Anthos Service Mesh

Prima di eliminare Anthos Config Management, ti consigliamo di eliminare tutte le risorse sincronizzate da Anthos Config Management nel cluster.

Elimina il secret git-creds e config-management-system da tfstate. L'operatore Anthos Config Management ha il compito di eliminare le risorse all'interno del cluster utente, dopo l'eliminazione di ConfigManagementBinding e ConfigManagementFeatureSpec. Anthos Config Management non viene immediatamente visualizzato come disinstallato nel Centro di gestione. L'eliminazione dei dati potrebbe richiedere 5-10 minuti.

terraform state rm kubernetes_namespace.config-management-system
terraform state rm kubernetes_secret.git-creds
terraform destroy

Problemi noti

  • Attualmente non è possibile aggiornare un cluster. Quando si avvia un aggiornamento, il provider tenta di eliminare i finali nelle risorse esistenti a causa del problema 1378.

  • Il comando destroy sul cluster utente e Anthos Service Mesh si basa su un tempo di attesa dovuto al problema 1357. Potresti dover modificare il tempo di attesa a seconda delle dimensioni del cluster.

  • Il cluster viene visualizzato in Terraform più rapidamente rispetto a quanto visualizzato nel Centro di gestione (blocco supportato dal provider di dati di kubernetes_manifest).

  • L'eliminazione di Anthos Config Management mediante terraform destroy richiede prima la rimozione delle risorse da tfstate. Per maggiori dettagli, vedi Disabilitare Anthos Config Management e Anthos Service Mesh. Anthos Config Management non viene immediatamente mostrato come disinstallato nel Centro di gestione. L'operazione potrebbe richiedere circa 5-10 minuti per eliminare tutto.

  • Il comando terraform destroy elimina lo spazio dei nomi del cluster utente. Gli amministratori della piattaforma non hanno il diritto di eliminare gli spazi dei nomi nel cluster di amministrazione. Di conseguenza, il comando potrebbe non riuscire.

Limitazioni

  • Il codice corrente consente di creare un cluster di utenti singolo.

  • Il codice corrente non include la configurazione dell'OIDC. Questa parte richiede funzionalità di patch sul provider Kubernetes sulla risorsa kubernetes_manifest.

Passaggi successivi