En este tema, configurarás una nube privada virtual (VPC) de AWS existente con subredes públicas y privadas, y la ejecutarás anthos-gke
para completar la instalación de un servicio de administración.
Antes de comenzar
Para completar estos pasos, necesitas lo siguiente:
Permisos de IAM para AWS como se describe en Requisitos
Una VPC de AWS existente que tenga los siguientes componentes:
- Una subred pública (como mínimo)
- Una subred privada (como mínimo)
- Una puerta de enlace de Internet con una ruta a la subred pública
- Una puerta de enlace de NAT con una ruta a la subred privada
- Nombres de host de DNS habilitados.
- No hay ningún valor personalizado de
domain-name
en los conjuntos de opciones de DHCP. Si deseas obtener más información, consulta Solución de problemas. GKE en AWS no admite valores distintos a los nombres de dominio de EC2 predeterminados.
Si deseas obtener más información para configurar tu VPC de AWS, consulta VPC con subredes públicas y privadas.
Los ID de subredes públicas y privadas de la VPC existente. Por ejemplo,
subnet-1234567890abcdefg
.Para las versiones de clústeres 1.20 o anteriores, un grupo de seguridad de AWS que permite SSH (puerto 22) entrante desde los grupos de seguridad o los rangos de IP en los que administrarás la instalación de GKE en AWS.
En la versión 1.21 o superior del clúster, un grupo de seguridad de AWS que permite conexiones de Konnectivity (puerto 8132) desde los rangos de IP de VPC que alojan tus grupos de nodos de GKE en AWS.
Crea el lugar de trabajo
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 securityGroupIDs: - SECURITY_GROUP_IDS googleCloud: projectID: GCP_PROJECT_ID serviceAccountKeys: managementService: MANAGEMENT_KEY_PATH connectAgent: HUB_KEY_PATH node: NODE_KEY_PATH existingVPC: subnetID: VPC_SUBNET_ID allowedSSHSecurityGroupIDs: - SSH_SECURITY_GROUP # Optional fields rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: ROOT_VOLUME_TYPE iops: ROOT_VOLUME_IOPS kmsKeyARN: ROOT_VOLUME_KEY bastionHost: subnetID: BASTION_HOST_SUBNET_ID allowedSSHCIDRBlocks: - SSH_CIDR_BLOCK rootVolume: # Optional kmsKeyARN: BASTION_VOLUME_KEY proxy: PROXY_JSON_FILE
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 del recurso de Amazon de la clave de IAM de AWS de administrador.
- KMS_KEY_ARN por el nombre del recurso de Amazon de la clave de KMS de AWS que protege los datos del servicio de administración cuando este se crea
- DATABASE_KMS_KEY_ARN por el nombre del recurso de Amazon de la clave de KMS de AWS que protege las bases de datos
etcd
- SECURITY_GROUP_IDS por los ID de los grupos de seguridad adicionales a los que se le permite el acceso a tus VM de servicio de administración.
- GCP_PROJECT_ID por el proyecto de Google Cloud que aloja tu entorno de GKE Enterprise.
- MANAGEMENT_KEY_PATH por la ubicación de la clave de la cuenta de servicio de administración de Google Cloud.
- HUB_KEY_PATH por la ubicación de la clave de la cuenta de servicio de Google Cloud Connect
- NODE_KEY_PATH por la ubicación de la clave de la cuenta de servicio del nodo de GKE on AWS
- VPC_SUBNET_ID por el ID de la subred en la que se ejecuta el servicio de administración
- SSH_SECURITY_GROUP por la lista de ID de grupos de seguridad que permiten el acceso mediante SSH dentro de las instancias del servicio de administración
Opcional: Si deseas encriptar tus volúmenes de servicio de administración, reemplaza los siguientes valores:
- ROOT_VOLUME_SIZE por el tamaño de volumen en gigabytes para el servicio de administración. Por ejemplo,
10
. - ROOT_VOLUME_TYPE por el tipo de volumen de EBS.
Por ejemplo,
gp3
. - ROOT_VOLUME_IOPS por la activación de operaciones de E/S aprovisionadas por segundo (IOPS) para el volumen Solo es válido cuando
volumeType
esGP3
. Para obtener más información, consulta Volúmenes de uso general SSD (gp3). - ROOT_VOLUME_KEY por el nombre de recurso de Amazon de la clave de AWS KMS que encripta los volúmenes raíz de instancia de tu servicio de administración. Si deseas obtener más información, consulta Usa una CMK administrada por el cliente para encriptar volúmenes.
Opcional: Si deseas crear un host de bastión para acceder a tu entorno de GKE en un entorno de AWS con un túnel SSH, reemplaza los siguientes valores:
- BASTION_HOST_SUBNET_ID por el ID de subred en la que se ejecuta el host de bastión. Asegúrate de que VPC_SUBNET_ID permita las conexiones entrantes de BASTION_HOST_SUBNET_ID.
- SSH_CIDR_BLOCK por el bloque CIDR del host de bastión que permite la conexión SSH entrante. Por ejemplo,
203.0.113.0/24
. Si deseas permitir una conexión SSH desde cualquier dirección IP, usa0.0.0.0/0
. - BASTION_VOLUME_KEY por el nombre del recurso de Amazon de la Clave de AWS KMS que protege el volumen raíz de bastión.
De forma opcional, si deseas dirigir el tráfico mediante un proxy HTTP, reemplaza el siguiente valor:
- PROXY_JSON_FILE por la ruta relativa del archivo de configuración del proxy Si no usas un proxy, quita esta línea.
Ejecuta
anthos-gke aws management init
para crear archivos de configuración.anthos-gke aws management init
Ejecuta
anthos-gke aws management apply
para crear el clúster.anthos-gke aws management apply
El comando
anthos-gke aws management apply
puede llevar hasta diez minutos en completarse. Cuandoanthos-gke
finaliza, tu servicio administrado se ejecuta en AWS.
Etiqueta las subredes con el nombre de tu clúster
Si usas subredes de AWS existentes con GKE en AWS y deseas crear balanceadores de cargas, debes etiquetar tu VPC y tus subredes con el nombre de tu servicio de administración. Si creaste tu VPC con anthos-gke
o ya etiquetaste tus subredes, omite este paso.
Para etiquetar las subredes, sigue estos pasos:
Cambia al directorio con la configuración de GKE en AWS. Creaste este directorio cuando instalaste el servicio de administración.
cd anthos-aws
Exporta el ID del clúster como la variable de entorno
$CLUSTER-ID
. Elige la versión de Terraform y ejecuta los siguientes comandos:Terraform 0.12, 0.13
export CLUSTER_ID=$(terraform output cluster_id)
Terraform 0.14.3+
export CLUSTER_ID=$(terraform output -raw cluster_id)
Exporta el ID de la VPC de AWS como la variable de entorno
$VPC_ID
. Elige la versión de Terraform y ejecuta los siguientes comandos:Terraform 0.12, 0.13
export VPC_ID=$(terraform output vpc_id)
Terraform 0.14.3+
export VPC_ID=$(terraform output -raw vpc_id)
Obtén los ID de tu subred privada mediante la herramienta de la CLI de
aws
.aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \ --query "Subnets[*].SubnetId" \ --output text
Etiqueta las subredes con el ID de tu clúster. Ejecuta el siguiente comando por cada una de tus subredes.
aws ec2 create-tags \ --resources SUBNET_IDS \ --tags Key=gke:multicloud:cluster-id,Value=$CLUSTER_ID
Reemplaza SUBNET_IDS por la lista de ID de subredes, separados por espacios. Por ejemplo:
subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef
Conexión al servicio de administración
En esta sección, establecerás una conexión con tu servicio administrado. Puedes crear un túnel con los comandos a través de un host de bastión. Si tienes una conexión directa con tu VPC de AWS, ve directamente a Genera credenciales y conéctate.
Conéctate con un host de bastión
Si usas un host de bastión para configurar el túnel SSH, primero configura el host en tu anthos-gke.yaml
. A continuación, si deseas crear una secuencia de comandos para abrir el túnel, realiza los siguientes pasos:
Usa
terraform
para generar una secuencia de comandos que abra un túnel SSH al host de bastión.terraform output bastion_tunnel > bastion-tunnel.sh chmod 755 bastion-tunnel.sh
Terraform crea la secuencia de comandos
bastion-tunnel.sh
que usa la clave SSH del host de bastión (~/.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
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.
Cambia al directorio con la configuración de GKE en AWS.
cd anthos-aws
Genera credenciales y conéctate
En la documentación de GKE en AWS, se supone que usas un túnel SSH en el puerto localhost
8118 para acceder a tu clúster. Si usas otro tipo de conexión a la VPC, como una interconexión directa, una VPN o algún otro método, puedes quitar la línea env HTTP_PROXY=http://localhost:8118
de los comandos.
Genera un
kubeconfig
para la autenticación. Usaanthos-gke
para adjuntar 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
kubectl
imprime el estado del clúster.
¿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 on AWS con menos opciones de línea de comandos. - Consulta los grupos de seguridad mínimos necesarios para tu GKE en el servicio de administración de AWS y los clústeres de usuarios.