En este tema, configurarás una nube privada virtual (VPC) de AWS existente con subredes públicas y privadas, y ejecutas 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
.Elige o crea un grupo de seguridad de AWS que permita SSH (puerto 22) entrante desde los grupos de seguridad o los rangos de direcciones IP en las que administrarás los clústeres 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.5.1-gke.1 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 bastionHost: subnetID: BASTION_HOST_SUBNET_ID allowedSSHCIDRBlocks: - SSH_CIDR_BLOCK 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 Anthos.
- 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 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
.
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
.export CLUSTER_ID=$(terraform output cluster_id)
Exporta el ID de la VPC de AWS como la variable de entorno
$VPC_ID
.export VPC_ID=$(terraform output 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 HTTP_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.