Un servicio de administración crea, actualiza y borra clústeres de GKE en 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 GKE en AWS, completa las siguientes tareas:
- Completa los requisitos
-
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
aws
,terraform
yanthos-gke
instaladas y configuradas. - La región y las zonas de disponibilidad de AWS en las que GKE en AWS crea tu clúster de administración.
Configura el servicio de administración
Configura el servicio de administración de GKE on 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.
Abre una terminal en la computadora en la que instalaste y configuraste las herramientas de línea de comandos
aws
,terraform
yanthos-gke
.Crea un directorio vacío para la configuración de GKE en AWS y cambia a este directorio. La documentación de GKE en AWS 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
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 usuario de recursos de Amazon 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
, ejecutaaws 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, ejecutaaws kms list-keys
para recuperar una lista de ARN.DATABASE_KMS_KEY_ARN con el nombre del recurso de Amazon de la clave KMS de AWS o alias de clave que protege las bases de datos
etcd
de tu servicios de administración, 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 GKE Enterprise.
MANAGEMENT_KEY_PATH por la ubicación de la clave de cuenta de servicio de la 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 por la ubicación de la clave de cuenta de servicio de nodo de GKE 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. GKE 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 GKE en AWS crean planos de control y grupos de nodos en estas zonas de disponibilidad, por ejemplo,us-east-1a
.
Si deseas usaranthos-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 GKE 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, usa0.0.0.0/0
.PROXY_JSON_FILE por la ruta de acceso relativa del archivo de configuración del proxy (opcional). Si no usas un proxy, quita esta línea.
Ejecuta
anthos-gke aws management init
para generar un archivoanthos-gke.status.yaml
con configuración adicional. El comandoinit
también valida el objetoAWSManagementService
en tu archivoanthos-gke.yaml
.anthos-gke aws management init
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. Estos incluyen:
- spec.bootstrapS3Bucket a fin de especificar un bucket de AWS S3 para los datos de configuración de GKE en 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
Ahora debes usar anthos-gke
para conectarte y autenticarte en el servicio de administración de GKE 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 siguientes maneras:
- mediante el servicio AWS Direct Connect de Amazon
- mediante un host de bastion que establece conexiones mediante proxy entre Internet y las subredes de GKE en AWS
- mediante una VPN
Cuando creas un servicio de administración en una VPC dedicada, los clústeres de GKE 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:
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
.Para abrir el túnel, ejecuta la secuencia de comandos
bastion-tunnel.sh
. El túnel realiza reenvíos delocalhost: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.
Abre una terminal nueva y cambia el directorio por el directorio que tiene la configuración de GKE en AWS.
Genera un
kubeconfig
para la autenticación. Usaanthos-gke
para agregar credenciales a tu configuración almacenada en~/.kube/config
.anthos-gke aws management get-credentials
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?
- Crea un clúster de usuario.
- 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.