Un servicio de gestión crea, actualiza y elimina clústeres de GKE on AWS. En este tema se explica cómo crear un servicio de gestión dentro de una nube privada virtual (VPC) de AWS dedicada. Si ya tienes una VPC, consulta la sección Integración con la infraestructura actual.
Antes de empezar
Antes de empezar a usar GKE en AWS, asegúrate de haber realizado las siguientes tareas:
- Completa los requisitos previos.
-
Autentícate con Google Cloud CLI.
gcloud auth login && \ gcloud auth application-default login
Valores que necesitas
Para completar este tema, necesitas lo siguiente de los requisitos previos:
- ARNs o alias de claves KMS
- Google Cloud claves de cuenta de servicio
- Google Cloud proyecto
- Las herramientas de línea de comandos
aws
,terraform
yanthos-gke
instaladas y configuradas. - La región de AWS y las zonas de disponibilidad en las que GKE on AWS crea tu clúster de gestión.
Configurar el servicio de gestión
El servicio de gestión de GKE en AWS se configura con un archivo YAML. El archivo se parece a una configuración de recurso personalizado de Kubernetes, pero no es una representación de un recurso.
Abre un terminal en el ordenador en el que hayas instalado y configurado las herramientas de línea de comandos
aws
,terraform
yanthos-gke
.Crea un directorio vacío para tu configuración de GKE en AWS y cambia a ese directorio. En la documentación de GKE on AWS se usa
anthos-aws
como directorio de configuración de ejemplo.mkdir anthos-aws cd anthos-aws
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
Sustituye los siguientes valores:
AWS_REGION con la región de AWS en la que quieres ejecutar el clúster.
ADMIN_AWS_IAM_ARN con el nombre de recurso de Amazon del usuario con permisos de gestión de identidades y accesos de AWS para crear un servicio de gestión. Para obtener el ARN del usuario autenticado en la herramienta
aws
, ejecutaaws sts get-caller-identity
.KMS_KEY_ARN con el nombre de recurso de Amazon de la clave de AWS KMS o el alias de la clave de KMS que protege los datos de tu servicio de gestió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, ejecutaaws kms list-keys
para obtener una lista de ARNs.DATABASE_KMS_KEY_ARN con el nombre de recurso de Amazon de la clave de AWS KMS o el alias de clave que protege las bases de datos
etcd
de tu servicio de gestión. Por ejemplo,arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
.GCP_PROJECT_ID con el ID del proyecto Google Cloud que aloja tu entorno de GKE on AWS.
MANAGEMENT_KEY_PATH con la ubicación de tu Google Cloud gestión clave de cuenta de servicio.
HUB_KEY_PATH con la ubicación de la clave de tu cuenta de servicio de Google Cloud Connect.
NODE_KEY_PATH con la ubicación de la clave de la cuenta de servicio del nodo de GKE on AWS.
VPC_CIDR_BLOCK con el intervalo CIDR total de direcciones IP de la VPC de AWS que
anthos-gke
crea. Por ejemplo,10.0.0.0/16
. Para obtener más información, consulta la sección sobre conceptos básicos de VPC y subredes de la documentación de AWS.ZONE_1, ZONE_2 y ZONE_3 con las zonas de disponibilidad de AWS EC2 en las que quieras crear nodos y planos de control. GKE on AWS crea subredes en estas zonas. Cuando usas
anthos-gke
para generar la configuración de un clúster de usuario, GKE on AWS crea planos de control y grupos de nodos en estas zonas de disponibilidad. Por ejemplo,us-east-1a
.
Si quieres usaranthos-gke
para crear clústeres de usuarios en una sola zona, puedes quitar ZONE_2 y ZONE_3.PRIVATE_CIDR_BLOCK_1, PRIVATE_CIDR_BLOCK_2 y PRIVATE_CIDR_BLOCK_3, con el bloque CIDR de tu subred privada. Los componentes de GKE en AWS, como el servicio de gestión, se ejecutan en la subred privada. Esta subred debe estar dentro del intervalo CIDR de la VPC especificado en
vpcCIDRBlock
. Necesitas una subred por zona de disponibilidad. Por ejemplo,10.0.1.0/24
.PUBLIC_CIDR_BLOCK_1, PUBLIC_CIDR_BLOCK_2 y PUBLIC_CIDR_BLOCK_3, con los bloques CIDR de tu subred pública. Necesitas una subred por cada zona de disponibilidad. La subred pública expone los servicios del clúster, como los balanceadores de carga, a los grupos de seguridad y los intervalos de direcciones especificados en las ACLs de red y los grupos de seguridad de AWS. Por ejemplo,
10.0.100.0/24
.SSH_CIDR_BLOCK con el bloque CIDR que permite las conexiones SSH entrantes a tu host bastion. Por ejemplo,
203.0.113.0/24
. Si quieres permitir conexiones SSH desde cualquier dirección IP, usa0.0.0.0/0
.(Opcional) PROXY_JSON_FILE con la ruta relativa del archivo de configuración del proxy. Si no usas un proxy, elimina esta línea.
Ejecuta
anthos-gke aws management init
para generar un archivoanthos-gke.status.yaml
con una configuración adicional. El comandoinit
también valida el objetoAWSManagementService
en el archivoanthos-gke.yaml
.anthos-gke aws management init
Ejecuta
anthos-gke aws management apply
para crear el servicio de gestión en AWS.anthos-gke aws management apply
El comando
anthos-gke aws management apply
puede tardar hasta diez minutos en completarse. Una vez que se haya completado el comando, tu servicio de gestión se ejecutará en AWS.
Campos opcionales:
El archivo anthos-gke.yaml
anterior muestra un conjunto típico de campos que la mayoría de los clientes necesitarán. La configuración de anthos-gke.yaml
también admite varios campos opcionales. Por ejemplo:
- spec.bootstrapS3Bucket para especificar un segmento de AWS S3 para los datos de configuración de GKE on AWS
- spec.tags para etiquetar los recursos de AWS relacionados con el clúster
- spec.securityGroupIDs para asignar IDs de grupos de seguridad adicionales al clúster de gestión
- spec.*Volume y sus subcampos volumeType, iops y kmsKeyARN para ajustar los parámetros del volumen de EBS
- spec.terraform.stateGCSBucket para especificar un segmento de Google Cloud Service para los datos de configuración de Terraform
Para obtener más información sobre todos los campos admitidos en anthos-gke.yaml
, consulta la referencia de AWS Management Service.
Conectarse al servicio de gestión
A continuación, usa anthos-gke
para conectarte y autenticarte en tu servicio de gestión de GKE en AWS.
Cuando creas un servicio de gestión con 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 gestión de tres formas:
- a través del servicio AWS Direct Connect de Amazon
- a través de un bastión que hace de proxy de las conexiones entre Internet y tus subredes de GKE en AWS
- a través de una VPN
Cuando creas un servicio de gestión en una VPC dedicada, GKE en AWS crea automáticamente un host bastion en una subred pública. Si te conectas a tu servicio de gestión a través de una VPN o de AWS Direct Connect, no necesitas este host bastion. Si no es así, sigue estos pasos para conectarte a tu servicio de gestión a través del host bastion:
Usa la herramienta
terraform
para generar la secuencia de comandos que abre un túnel SSH al host bastión. Elige tu versión de Terraform y, a continuación, ejecuta los siguientes comandos:Terraform 0.12 y 0.13
terraform output bastion_tunnel > bastion-tunnel.sh chmod 755 bastion-tunnel.sh
Terraform 0.14.3 o versiones posteriores
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 bastion en~/.ssh/anthos-gke
.Para abrir el túnel, ejecuta la secuencia de comandos
bastion-tunnel.sh
. El túnel reenvía delocalhost:8118
al host bastion.Para abrir un túnel al host bastion, ejecuta el siguiente comando:
./bastion-tunnel.sh -N -4
Los mensajes del túnel SSH aparecen en esta ventana. Cuando quieras cerrar la conexión, detén el proceso con Control+C o cierra la ventana.
Abre un nuevo terminal y cambia al directorio que contiene tu configuración de GKE en AWS.
Genera un
kubeconfig
para la autenticación. Usaanthos-gke
para añadir credenciales a la configuración almacenada en~/.kube/config
.anthos-gke aws management get-credentials
Comprueba que puedes conectarte al servicio de gestión con
kubectl
.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
La salida incluye la URL del servidor de la API del servicio de gestión.
Siguientes pasos
- Crea un clúster de usuarios.
- Usa un proxy con GKE en AWS.
- Cambia la configuración de
kubectl
para conectarte a GKE en AWS con menos opciones de línea de comandos.