Gestione dei cluster utente con Terraform

Questa pagina è rivolta agli amministratori della piattaforma.

In questa pagina viene descritto come gestire i cluster utente utilizzando Terraform.

Prerequisiti

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

  • Accesso completo agli spazi dei nomi per i cluster utente 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 poter accedere al secret negli spazi dei nomi del cluster utente nel cluster di amministrazione, in modo da poter ottenere le credenziali per connetterti al cluster utente.

Scarica script Terraform

Scarica il file tarball degli script Terraform dalla scheda Assistenza di Anthos Management Center Console. Estrai gli script dal file.

tar xvf terraform-scripts.tar.gz

Inizia Terraform e configura l'autenticazione

Esistono molti modi per configurare il provider Terraform Kubernetes per l'autenticazione con l'API cluster di amministrazione. Scegli la modalità più adatta al tuo caso d'uso, documentata nella sezione Configurazione del provider. Se non disponi di autorizzazioni sufficienti nel cluster di amministrazione, contatta il tuo operatore di infrastruttura.

cd cluster
terraform init

Sostituisci (# TODO autenticazione) con uno dei metodi di autenticazione di configurazione del provider.

Creazione di un cluster utente

  1. Specifica tutte le variabili in cluster/terraform.tfvars. Assicurati di specificare login_user_name se non dispone di privilegi 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
    

Elimina un cluster utente

Per eliminare un cluster utente, utilizza il comando seguente:

terraform destroy

È previsto un tempo di attesa per controllare l'eliminazione delle risorse. Ti consigliamo di modificarlo aggiornando la variabile wait_duration. Il motivo del tempo di attesa è dovuto alla mancanza di funzionalità nel provider Kubernetes (consulta questa richiesta di funzionalità).

Se la creazione di un cluster utente è in attesa a causa di alcuni problemi, non utilizzare terraform destroy. Pulisci manualmente l'installazione:

  1. Arresta comando terraform.

  2. Elimina il cluster utente dalla Console Centro di gestione.

  3. Rimuovi il file terraform.tfstate.

Abilita Anthos Config Management e Anthos Service Mesh

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

  1. Inizia Terraform per il progetto Terraform features.

      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 vero 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. Puoi farlo aggiornando la variabile wait_duration.

Disabilita 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 è responsabile dell'eliminazione delle risorse all'interno del cluster utente, dopo che ConfigManagementBinding e ConfigManagementFeatureSpec sono stati eliminati. Anthos Config Management non viene immediatamente disinstallato in Management Center; l'eliminazione dell'operatore può richiedere 5-10 minuti.

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

Problemi noti

  • Al momento non è possibile aggiornare un cluster. Quando avvia un aggiornamento, il provider tenta di eliminare i finalizzatori alle risorse esistenti a causa di un problema 1378.

  • Il comando destroy sul cluster utente e Anthos Service Mesh si basa su un tempo di attesa a causa del problema 1357. Potrebbe essere necessario regolare il tempo di attesa a seconda delle dimensioni del cluster.

  • Il cluster risulta pronto in Terraform più velocemente di quanto indicato nel Centro di gestione (bloccato dal supporto dei dati di kubernetes_manifest da parte del provider).

  • L'eliminazione di Anthos Config Management mediante l'utilizzo di terraform destroy richiede prima la rimozione delle risorse da tfstate. Per maggiori dettagli, vedi Disattiva Anthos Config Management e Anthos Service Mesh. Anthos Config Management non viene immediatamente disinstallato in Management Center. L'operazione può richiedere circa 5-10 minuti.

  • Il comando terraform destroy elimina lo spazio dei nomi del cluster utente. Gli amministratori della piattaforma non dispongono dei diritti per eliminare gli spazi dei nomi nel cluster di amministrazione. Pertanto il comando potrebbe non riuscire.

Limitazioni

  • Il codice corrente consente di creare un unico cluster utente.

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

Passaggi successivi