Crea una VPC y un clúster con Terraform

Descripción general

Terraform es una herramienta de código abierto para configurar entornos de nube como AWS y también instalar software como Kubernetes en ellos. Puedes configurar tu entorno de AWS y crear tus clústeres en él con Terraform o con las instrucciones de instalación de GKE on AWS.

En esta página, se describe cómo usar Terraform para configurar tu entorno de AWS y, luego, instalar un clúster mediante una configuración de muestra almacenada en GitHub. Para usar estas secuencias de comandos, necesitas un conocimiento básico de Terraform. En particular, debes editar los archivos de configuración de Terraform a fin de agregar tu propia información de usuario y proyecto, y realizar los cambios que necesites en la configuración predeterminada del clúster.

Si deseas configurar tu entorno de AWS y crear clústeres sin usar Terraform, consulta la descripción general de los requisitos previos de AWS y las instrucciones para crear un clúster.

Qué hacen las secuencias de comandos

Esta secuencia de comandos configura Terraform para crear una VPC de AWS y, luego, implementar un clúster en él. La VPC resultante cumple con todos los requisitos previos de GKE on AWS y tiene la misma topología de red que la VPC creada por las instrucciones de creación de VPC manuales de Google.

El clúster que crea el conjunto de secuencias de comandos tiene las siguientes características:

  • tres nodos del plano de control (uno en cada una de las tres zonas de disponibilidad configuradas). Estos nodos son del tipo t3.large.
  • Un grupo de nodos con dos nodos del tipo t3.large. Este grupo de nodos se implementa en la región us-east-1 de AWS y puede escalar automáticamente a cinco nodos.

Cómo cambiar la VPC y el clúster predeterminados

Puedes cambiar las características de la VPC y el clúster que se crean con las secuencias de comandos de Terraform editando los archivos adecuados de Terraform.

  • Edita el archivo variables.tf para ajustar la región y las zonas de disponibilidad.
  • Cambia el tipo de instancia de AWS.
  • Edita los archivos en la subcarpeta modules/vpc para modificar las características de la VPC, incluidas las subredes, las zonas de disponibilidad y el balanceador de cargas.

Para obtener una lista de las regiones de AWS controladas desde una región de Google Cloud en particular y sus versiones asociadas de Kubernetes, ejecuta el siguiente comando:

gcloud container aws get-server-config --location `GOOGLE_CLOUD_REGION`

Reemplaza GOOGLE_CLOUD_REGION por el nombre de la región de Google Cloud desde la que quieres que GKE on AWS controle tu clúster.

Requisitos previos

  1. Instala la CLI de Google Cloud con las instrucciones de instalación de la CLI de Google Cloud. Si ya la instalaste, usa estas instrucciones para asegurarte de que estás ejecutando la versión 412.0.0 o una posterior.

  2. Instala la CLI de AWS con las instrucciones de instalación de la CLI de AWS.

  3. Crea tus claves de acceso de AWS.

  4. Configura tu entorno local de AWS con el siguiente comando:

    aws configure
    

Prepara Terraform

  1. Configura la autenticación de la CLI de Google Cloud ejecutando los siguientes comandos:

    gcloud config set project GOOGLE_PROJECT_ID
    gcloud auth application-default login --no-launch-browser
    
  2. Habilita los servicios necesarios en tu proyecto de Google Cloud.

    gcloud --project="GOOGLE_PROJECT_ID" services enable \
      gkemulticloud.googleapis.com \
      gkeconnect.googleapis.com \
      connectgateway.googleapis.com \
      cloudresourcemanager.googleapis.com \
      anthos.googleapis.com \
      logging.googleapis.com \
      monitoring.googleapis.com \
      opsconfigmonitoring.googleapis.com
    

    Reemplaza GOOGLE_PROJECT_ID por el ID del proyecto de Google.

  3. Haz una copia local del repositorio y cambia a la carpeta AWS:

    git clone https://github.com/GoogleCloudPlatform/anthos-samples.git
    cd anthos-samples/anthos-multi-cloud/AWS
    

Implementa GKE en AWS

  1. Edita las siguientes líneas en el archivo terraform.tfvars para reemplazar los valores predeterminados:

    gcp_project_id = GOOGLE_PROJECT_ID
    admin_users = ["GCP_ACCOUNT_EMAIL"]
    

    Reemplaza lo siguiente:

    • GOOGLE_PROJECT_ID: Es el ID de tu proyecto de Google. Puedes encontrarlo en el lado izquierdo de la página del panel de la consola de Google Cloud.

    • ACCOUNT_EMAILS: Es una lista de direcciones de correo electrónico separadas por comas que pueden acceder a los clústeres después de crearlos, por ejemplo, "admin@example.com","operator@example.com". Al menos una dirección debe tener una cuenta de Google Cloud. Para agregar proveedores de identidad adicionales a tu clúster, consulta Administra la identidad con GKE Identity Service.

  2. Inicializa y crea terraform plan:

    terraform init
    

    Terraform instala las bibliotecas necesarias, como el proveedor de Google Cloud.

  3. Aplica el plan de Terraform para crear el clúster y la nube privada virtual de AWS:

    terraform apply
    

    Sigue las instrucciones para comenzar a crear un clúster.

La instalación tarda alrededor de 12 minutos. Cuando Terraform completa la creación de la nube privada virtual y el clúster de AWS, imprime la información en el clúster y crea un archivo llamado var.sh. Puedes usar los valores en este archivo si creas grupos de nodos adicionales.

Para verificar que el clúster se haya creado correctamente, espera a que aparezca en la página de Kubernetes Engine de la consola de Google Cloud en tu proyecto de Google Cloud.

Conéctate a tu clúster.

Para verificar la conectividad a tu clúster y recuperar sus detalles, ejecuta el siguiente comando:

   gcloud container fleet memberships get-credentials CLUSTER_NAME
   kubectl get nodes

Reemplaza CLUSTER_NAME por el nombre del clúster. Puedes encontrar el nombre del clúster en el archivo de salida var.sh de Terraform.

El resultado incluye una lista de nodos en tu clúster y su estado.

Borra el clúster y la nube privada virtual de AWS

Antes de borrar el clúster y la nube privada virtual de AWS, debes quitar todo lo siguiente:

  • Cualquier balanceador de cargas de AWS activo en la nube privada virtual de AWS
  • Cualquier grupo de nodos adicional en tu clúster que no se creó con Terraform
  • Cualquier clúster adicional en la nube privada virtual de AWS que no se haya creado con Terraform

Para quitar el clúster y la nube privada virtual de AWS que creaste con Terraform, ejecuta el siguiente comando:

terraform destroy

Terraform vacía las cargas de trabajo de los nodos, borra el clúster y el grupo de nodos principales, y borra la nube privada virtual de AWS.

Autoriza Cloud Logging y Cloud Monitoring

Si deseas habilitar Cloud Logging y Cloud Monitoring, debes agregar una política de permiso a tu proyecto de Google Cloud después de crear un clúster.

Agrega una política de permiso con la CLI de Google Cloud:

gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
--role=roles/gkemulticloud.telemetryWriter

Reemplaza PROJECT_ID con el ID del proyecto.

Próximos pasos

Para obtener más información sobre las secuencias de comandos de Terraform GKE en AWS, consulta