Instala el servicio de administración

Un servicio de administración crea, actualiza y borra clústeres de Anthos en AWS (GKE on AWS). En este tema, se explica cómo crear un servicio de administración dentro de una nube privada virtual (VPC) dedicada de AWS. Si ya tienes una VPC, consulta Integra en la infraestructura existente en su lugar.

Antes de comenzar

Antes de comenzar a usar clústeres de Anthos alojados en AWS, asegúrate de haber realizado las siguientes tareas:

  • Completa los requisitos previos.
  • Autentica con Google Cloud CLI.
    gcloud auth login && \
        gcloud auth application-default login

Valores que necesitas

Para completar este tema, necesitas estos elementos a fin de cumplir con los requisitos:

  • ARN de clave KMS o alias
  • Claves de cuenta de servicio de Google Cloud
  • Proyecto de Google Cloud
  • Las herramientas de línea de comandos de aws, terraform y anthos-gke instaladas y configuradas.
  • La región y las zonas de disponibilidad de AWS en las que clústeres de Anthos alojados en AWS crea tu clúster de administración.

Configura el servicio de administración

Configura tu servicio de administración de clústeres de Anthos alojados en AWS con un archivo YAML. El archivo es similar a la configuración de un recurso personalizado de Kubernetes, pero no es una representación de un recurso.

  1. Abre una terminal en la computadora en la que instalaste y configuraste las herramientas de línea de comandos de aws, terraform y anthos-gke.

  2. Crea un directorio vacío para tu configuración de clústeres en Anthos y cambia a este directorio. La documentación de clústeres de Anthos alojados en AWS usa anthos-aws como el directorio de configuración de ejemplo.

    mkdir anthos-aws
    cd anthos-aws
    
  3. Crea un archivo llamado anthos-gke.yaml en un editor de texto. Pega el siguiente contenido en el archivo.

     apiVersion: multicloud.cluster.gke.io/v1
     kind: AWSManagementService
     metadata:
       name: management
     spec:
       version: aws-1.14.1-gke.0
       region: AWS_REGION
       authentication:
         awsIAM:
           adminIdentityARNs:
           - ADMIN_AWS_IAM_ARN
       kmsKeyARN: KMS_KEY_ARN
       databaseEncryption:
         kmsKeyARN: DATABASE_KMS_KEY_ARN
       googleCloud:
         projectID: GCP_PROJECT_ID
         serviceAccountKeys:
           managementService: MANAGEMENT_KEY_PATH
           connectAgent: HUB_KEY_PATH
           node: NODE_KEY_PATH
       dedicatedVPC:
         vpcCIDRBlock: VPC_CIDR_BLOCK
         availabilityZones:
         - ZONE_1
         - ZONE_2
         - ZONE_3
         privateSubnetCIDRBlocks:
         - PRIVATE_CIDR_BLOCK_1
         - PRIVATE_CIDR_BLOCK_2
         - PRIVATE_CIDR_BLOCK_3
         publicSubnetCIDRBlocks:
         - PUBLIC_CIDR_BLOCK_1
         - PUBLIC_CIDR_BLOCK_2
         - PUBLIC_CIDR_BLOCK_3
       # Optional
       bastionHost:
         allowedSSHCIDRBlocks:
         - SSH_CIDR_BLOCK
       proxy: PROXY_JSON_FILE # optional
    

    Reemplaza los siguientes valores:

    • AWS_REGION por la región de AWS en la que ejecutarás el clúster

    • ADMIN_AWS_IAM_ARN por el nombre de recurso de Amazon del usuario con permisos de IAM de AWS para crear un servicio de administración. Para obtener el ARN del usuario autenticado en la herramienta de aws, ejecuta aws sts get-caller-identity.

    • KMS_KEY_ARN por el nombre del recurso de Amazon de la clave de AWS KMS o el alias de la clave de KMS que protege los datos del servicio de administración durante la creación. Por ejemplo, arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab. Si no tienes el ARN, ejecuta aws kms list-keys para recuperar una lista de ARN.

    • DATABASE_KMS_KEY_ARN con el Nombre del recurso de Amazon de la Clave de AWS KMS o alias de clave que protege laetcd de bases de datos, por ejemploarn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

    • GCP_PROJECT_ID por el ID del proyecto de Google Cloud que aloja el entorno de Anthos.

    • MANAGEMENT_KEY_PATH por la ubicación de la clave de cuenta de servicio de administración de Google Cloud.

    • HUB_KEY_PATH por la ubicación de la clave de cuenta de servicio de Google Cloud Connect.

    • NODE_KEY_PATH con la ubicación de tu clave de cuenta de servicio de nodo de clústeres de Anthos alojados en AWS.

    • VPC_CIDR_BLOCK por el rango CIDR total de direcciones IP para la VPC de AWS que crea anthos-gke. Por ejemplo, 10.0.0.0/16. Para obtener más información, consulta Conceptos básicos de la VPC y la subred en la documentación de AWS.

    • ZONE_1, ZONE_2 y ZONE_3 por las zonas de disponibilidad de AWS EC2 en las que deseas crear nodos y planos de control. Clústeres de Anthos alojados en AWS crea subredes en estas zonas. Cuando usas anthos-gke para generar una configuración para un clúster de usuario, los clústeres de Anthos en AWS crean planos de control y grupos de nodos en estas zonas de disponibilidad, por ejemplo, us-east-1a.
      Si deseas usar anthos-gke para crear clústeres de usuario en una sola zona, puedes quitar ZONE_2 y ZONE_3.

    • PRIVATE_CIDR_BLOCK_1, PRIVATE_CIDR_BLOCK_2 y PRIVATE_CIDR_BLOCK_3 por el bloque CIDR para la subred privada. Los componentes de clústeres de Anthos en AWS, como el servicio de administración, se ejecutan en la subred privada. Esta subred debe estar dentro del rango CIDR de la VPC que se especificó en vpcCIDRBlock. Necesitas una subred para cada zona de disponibilidad, por ejemplo, 10.0.1.0/24.

    • PUBLIC_CIDR_BLOCK_1, PUBLIC_CIDR_BLOCK_2 y PUBLIC_CIDR_BLOCK_3 por los bloques CIDR para la subred pública. Necesitas una subred para cada zona de disponibilidad. La subred pública expone los servicios del clúster, como los balanceadores de cargas, a los grupos de seguridad y los rangos de direcciones especificados en las LCA de red y los grupos de seguridad de AWS, por ejemplo, 10.0.100.0/24.

    • SSH_CIDR_BLOCK por el bloque CIDR que permite una conexión SSH entrante a tu host de bastión, por ejemplo, 203.0.113.0/24. Si deseas permitir una conexión SSH desde cualquier dirección IP, usa 0.0.0.0/0.

    • PROXY_JSON_FILE por la ruta relativa del archivo de configuración del proxy (opcional). Si no usas un proxy, quita esta línea.

  4. Ejecuta anthos-gke aws management init para generar un archivo anthos-gke.status.yaml con configuración adicional. El comando init también valida el objeto AWSManagementService en tu archivo anthos-gke.yaml.

    anthos-gke aws management init
    
  5. Ejecuta anthos-gke aws management apply para crear el servicio de administración en AWS.

    anthos-gke aws management apply
    

    El comando anthos-gke aws management apply puede llevar hasta diez minutos en completarse. Cuando se complete el comando, tu servicio de administración se ejecutará en AWS.

Campos opcionales

En el archivo anthos-gke.yaml anterior, se muestra un conjunto típico de campos que la mayoría de los clientes necesitarán. La configuración en anthos-gke.yaml también admite varios campos opcionales. Estas son algunas de las funciones:

  • spec.bootstrapS3Bucket a fin de especificar un bucket de AWS S3 para clústeres de Anthos en los datos de configuración de AWS
  • spec.tags para etiquetar recursos de AWS relacionados con el clúster
  • spec.securityGroupIDs para asignar ID de grupos de seguridad adicionales al clúster de administración
  • spec.*Volume y sus subcampos volumeType, iops y kmsKeyARN para ajustar los parámetros de volumen de EBS
  • spec.terraform.stateGCSBucket a fin de especificar un bucket de servicio de Google Cloud para los datos de configuración de Terraform.

Para obtener más información sobre todos los campos compatibles con anthos-gke.yaml, consulta la referencia del Servicio de administración de AWS.

Conéctate al servicio de administración

Luego, usa anthos-gke para conectarte y autenticarte en tu servicio de administración de clústeres de Anthos alojados en AWS.

Cuando creas un servicio de administración mediante la configuración predeterminada, el plano de control tiene una dirección IP privada a la que no se puede acceder desde fuera de la VPC de AWS. Puedes acceder a tu servicio de administración de cualquiera de las tres maneras siguientes:

  • mediante el servicio AWS Direct Connect de Amazon
  • mediante un host de bastion que establece conexiones mediante proxy entre Internet y los clústeres de Anthos en subredes de AWS
  • mediante una VPN

Cuando creas un servicio de administración en una VPC dedicada, los clústeres de Anthos alojados en AWS crean de forma automática un host de bastión en una subred pública. Si te conectas a tu servicio de administración mediante de una VPN o AWS Direct Connect, este host de bastión no es necesario. De lo contrario, sigue estos pasos para conectarte al servicio de administración a través del host de bastión:

  1. Usa la herramienta de terraform a fin de generar la secuencia de comandos que abre un túnel SSH al host de bastión. Elige la versión de Terraform y ejecuta los siguientes comandos:

    Terraform 0.12, 0.13

    terraform output bastion_tunnel > bastion-tunnel.sh
    chmod 755 bastion-tunnel.sh
    

    Terraform 0.14.3+

    terraform output -raw bastion_tunnel > bastion-tunnel.sh
    chmod 755 bastion-tunnel.sh
    

    Terraform crea la secuencia de comandos bastion-tunnel.sh que hace referencia a la clave SSH del host de bastión en ~/.ssh/anthos-gke.

  2. Para abrir el túnel, ejecuta la secuencia de comandos bastion-tunnel.sh. El túnel realiza reenvíos de localhost:8118 al host de bastión.

    Para abrir un túnel al host de bastión, ejecuta el siguiente comando:

    ./bastion-tunnel.sh -N -4
    

    Los mensajes del túnel SSH aparecen en esta ventana. Cuando estés listo para cerrar la conexión, detén el proceso mediante Control+C o cierra la ventana.

  3. Abre una terminal nueva y cambia el directorio al directorio con tu configuración de clústeres de Anthos alojados AWS.

  4. Genera un kubeconfig para la autenticación. Usa anthos-gke para adjuntar credenciales a tu configuración almacenada en ~/.kube/config.

    anthos-gke aws management get-credentials
    
  5. Comprueba si puedes conectarte al servicio de administración mediante kubectl.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl cluster-info
    

    El resultado incluye la URL para el servidor de API del servicio de administración.

¿Qué sigue?