Administrar clústeres de usuarios mediante Terraform

Esta página está destinada a los administradores de la plataforma.

En esta página, se describe cómo administrar clústeres de usuarios con Terraform.

Prerequisites

Debes tener una cuenta con acceso al clúster de administrador. Esta cuenta debe tener los permisos correctos para administrar los clústeres de usuarios. Esta cuenta necesita un subconjunto del acceso del administrador de la plataforma más el acceso de “list” en customresourcedefinitions en el grupo de la API apiextensions.k8s.io. Usarás esta cuenta para configurar el proveedor de Kubernetes de Terraform, de modo que pueda administrar los recursos relacionados con el clúster de usuario. La cuenta debe tener los siguientes permisos específicos:

  • Acceso completo a los espacios de nombres de los clústeres de usuario en el clúster de administrador, por ejemplo, cluster-user-cluster2
  • Acceso completo en clusters y nodepools en baremetal.cluster.gke.io
  • Acceso completo en bootstrapservicebindings, configmanagementfeaturespecs, configmanagementbindings, servicemeshfeaturespecs, servicemeshbindings en managementcenter.anthos.cloud.google.com
  • Acceso list en customresourcedefinitions en apiextensions.k8s.io
  • Si necesitas instalar Anthos Config Management y Anthos Service Mesh, también necesitas acceso para obtener el secreto en los espacios de nombres del clúster de usuario en el clúster de administrador a fin de que puedas obtener las credenciales para conectarte al clúster de usuario.

Descarga secuencias de comandos de Terraform

Descarga el archivo comprimido de las secuencias de comandos de Terraform desde la pestaña Asistencia de la consola de Anthos Management Center. Extrae las secuencias de comandos del archivo.

tar xvf terraform-scripts.tar.gz

Inicia Terraform y configura la autenticación

Hay muchas formas de configurar el proveedor de Kubernetes de Terraform para realizar la autenticación con la API del clúster de administrador. Elige la forma que mejor se adapte a tu caso de uso en Provider Setup. Si no tienes suficientes permisos en el clúster de administrador, comunícate con tu operador de infraestructura.

cd cluster
terraform init

Reemplaza (# autenticación TODO) por uno de los métodos de autenticación de Provider Setup.

Crear un clúster de usuario

  1. Especifica todas las variables en cluster/terraform.tfvars. Asegúrate de especificar login_user_name si no tiene privilegios raíz. Ejemplo:

    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. Aplique los cambios Una vez que se complete el comando de forma correcta, se crea el clúster de usuario.

    terraform apply
    

Destruye un clúster de usuario

Usa el siguiente comando para destruir un clúster de usuario:

terraform destroy

Se configura un tiempo de espera para controlar la destrucción de los recursos. Es posible que quieras ajustarlo para actualizar la variable wait_duration. El motivo del tiempo de espera se debe a que faltan funciones en el proveedor de Kubernetes (consulta esta solicitud de función).

Cuando la creación de un clúster de usuario esté pendiente debido a algunos problemas, no uses terraform destroy. En su lugar, limpia la instalación de forma manual:

  1. Detén el comando de Terraform.

  2. Borra el clúster de usuario de la consola del centro de administración

  3. Quita el archivo terraform.tfstate.

Habilita Anthos Config Management y Anthos Service Mesh

Para habilitar Anthos Config Management y Anthos Service Mesh, completa los siguientes pasos:

  1. Inicia Terraform para el proyecto features de Terraform.

      cd features
      terraform init
    
  2. Configura la autenticación en el clúster de administrador.

  3. Coloca la clave privada en el repositorio de Git en /etc/ssh-key/key.

  4. Configura activate_acm y activate_asm como verdadero y define todas las variables relacionadas. Ejemplo:

    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. Aplique los cambios

    terraform apply
    
  6. Ajusta el tiempo de espera para Anthos Service Mesh (opcional). Para hacerlo, actualiza la variable wait_duration.

Inhabilita Anthos Config Management y Anthos Service Mesh

Antes de borrar Anthos Config Management, te recomendamos que borres todos los recursos sincronizados con Anthos Config Management en el clúster.

Borra el secreto git-creds y config-management-system de tfstate. El operador de Anthos Config Management se encarga de borrar recursos dentro del clúster de usuario, después de que se borran ConfigManagementBinding y ConfigManagementFeatureSpec. Anthos Config Management no aparece como desinstalado en Management Center de inmediato; el operador puede tardar entre 5 y 10 minutos en borrar todo.

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

Problemas conocidos

  • Por el momento, no es posible actualizar un clúster. Cuando se lanza una actualización, el proveedor intenta borrar los finalizadores en los recursos existentes debido al problema 1378.

  • El comando de destrucción en el clúster de usuario y Anthos Service Mesh se basa en el tiempo de espera debido al problema 1357. Es posible que debas ajustar el tiempo de espera según el tamaño de tu clúster.

  • El clúster se muestra listo en Terraform más rápido de lo que se muestra en el centro de administración de Anthos (bloqueado por la asistencia de datos de kubernetes_manifest por el proveedor).

  • La eliminación de Anthos Config Management mediante terraform destroy requiere que primero se quiten los recursos de tfstate. Consulta Inhabilita Anthos Config Management y Anthos Service Mesh para obtener más detalles. Anthos Config Management no aparece como desinstalado en Management Center de inmediato. El operador puede tardar entre 5 y 10 minutos en borrar todo.

  • El comando terraform destroy borra el espacio de nombres del clúster de usuario. Los administradores de la plataforma no tienen derechos para borrar espacios de nombres en el clúster de administrador. Por lo tanto, el comando podría fallar.

Limitaciones

  • El código actual te permite crear un único clúster de usuario.

  • En el código actual, no se incluye la configuración de OIDC. En esta parte, se requieren capacidades de parche en el proveedor de Kubernetes en el recurso kubernetes_manifest.

¿Qué sigue?