En este tema, configurará una nube virtual privada (VPC) de AWS existente con subredes públicas y privadas y ejecutará anthos-gke
para completar la instalación de un servicio de administración.
Antes de empezar
Para completar los siguientes pasos, necesitará lo siguiente:
Permisos de AWS IAM como se describe en Requisitos .
Una VPC de AWS existente con:
- Al menos una subred pública.
- Al menos una subred privada.
- Una puerta de enlace a Internet con una ruta a la subred pública.
- Una puerta de enlace NAT con una ruta a la subred privada.
- Nombres de host DNS habilitados.
- No hay ningún valor personalizado de
domain-name
en los conjuntos de opciones de DHCP. Para obtener más información, consulte Solución de problemas . GKE en AWS no admite valores distintos a los nombres de dominio predeterminados de EC2 .
Para obtener más información sobre cómo configurar su VPC de AWS, consulte VPC con subredes públicas y privadas .
Los ID de subred pública y privada de su VPC existente. Por ejemplo,
subnet-1234567890abcdefg
.Para las versiones de clúster 1.20 o anteriores, un grupo de seguridad de AWS que permita el acceso SSH (puerto 22) desde los grupos de seguridad o rangos de IP donde administrará su instalación de GKE en AWS.
Para las versiones de clúster 1.21 o superiores, un grupo de seguridad de AWS que permite conexiones de Konnectivity (puerto 8132) salientes desde los rangos de IP de VPC que albergan sus grupos de nodos de GKE en AWS.
Creando el espacio de trabajo
Cree un archivo llamado
anthos-gke.yaml
en un editor de texto. Pegue el siguiente contenido en él.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
Reemplace los siguientes valores:
- AWS_REGION con la región de AWS donde se ejecutará el clúster.
- ADMIN_AWS_IAM_ARN con el nombre del recurso de Amazon de la clave IAM de AWS del administrador.
- KMS_KEY_ARN con el nombre de recurso de Amazon de la clave AWS KMS que protege los datos de su servicio de administración cuando se crea dicho servicio.
- DATABASE_KMS_KEY_ARN con el nombre de recurso de Amazon de la clave AWS KMS que protege sus bases de datos
etcd
. - SECURITY_GROUP_IDS con ID de grupo de seguridad adicionales permitieron el acceso a las máquinas virtuales de su servicio de administración.
- GCP_PROJECT_ID con el Google Cloud proyecto que aloja su entorno de GKE Enterprise.
- MANAGEMENT_KEY_PATH con la ubicación de su Google Cloudclave de cuenta de servicio de gestión.
- HUB_KEY_PATH con la ubicación de su Google CloudConectar la clave de la cuenta de servicio .
- NODE_KEY_PATH con la ubicación de la clave de la cuenta de servicio del nodo GKE en AWS.
- VPC_SUBNET_ID con el ID de subred donde se ejecuta el servicio de administración.
- SSH_SECURITY_GROUP con la lista de ID de grupos de seguridad a los que se les permite el acceso SSH dentro de las instancias del servicio de administración.
Opcional: si desea cifrar los volúmenes de su servicio de administración, reemplace los siguientes valores:
- ROOT_VOLUME_SIZE con el tamaño del volumen en gigabytes para el servicio de administración. Por ejemplo,
10
. - ROOT_VOLUME_TYPE con el tipo de volumen EBS . Por ejemplo,
gp3
. - ROOT_VOLUME_IOPS con el número de operaciones de E/S por segundo (IOPS) aprovisionadas para el volumen. Solo válido cuando
volumeType
esGP3
. Para más información, consulte Volúmenes SSD de propósito general (gp3) . - ROOT_VOLUME_KEY con el nombre del recurso de Amazon de la clave de AWS KMS que cifra los volúmenes raíz de la instancia del servicio de administración. Para obtener más información, consulte "Usar una CMK administrada por el cliente para cifrar volúmenes" .
Opcional: si desea crear un host bastión para acceder a su entorno de GKE en AWS con un túnel SSH, reemplace los siguientes valores:
- BASTION_HOST_SUBNET_ID con el ID de la subred donde se ejecuta el host bastión. Asegúrese de que VPC_SUBNET_ID permita conexiones entrantes desde BASTION_HOST_SUBNET_ID .
- SSH_CIDR_BLOCK con el bloque CIDR desde el que su host bastión permite conexiones SSH entrantes. Por ejemplo,
203.0.113.0/24
. Si desea permitir SSH desde cualquier dirección IP, utilice0.0.0.0/0
. - BASTION_VOLUME_KEY con el nombre de recurso de Amazon de la clave AWS KMS que protege su volumen raíz de bastión.
Opcional: si desea tráfico directo a través de un proxy HTTP , reemplace el siguiente valor:
- PROXY_JSON_FILE con la ruta relativa del archivo de configuración del proxy . Si no utiliza un proxy, elimine esta línea.
Ejecute
anthos-gke aws management init
para crear archivos de configuración:anthos-gke aws management init
Ejecute
anthos-gke aws management apply
para crear el clúster.anthos-gke aws management apply
El comando
anthos-gke
anthos-gke aws management apply
puede tardar hasta diez minutos en completarse. Una vez finalizado, el servicio de administración se ejecuta en AWS.
Etiquete sus subredes con el nombre de su clúster
Si utiliza subredes de AWS existentes con GKE en AWS y desea crear balanceadores de carga, debe etiquetar su VPC y subredes con el nombre de su servicio de administración. Si creó su VPC con anthos-gke
o ya ha etiquetado sus subredes, omita este paso.
Para etiquetar sus subredes, realice los siguientes pasos:
Vaya al directorio con su configuración de GKE en AWS. Este directorio se creó al instalar el servicio de administración .
cd anthos-aws
Exporte el ID de su clúster como la variable de entorno
$CLUSTER-ID
. Seleccione su versión de Terraform y ejecute 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)
Exporte su ID de VPC de AWS como la variable de entorno
$VPC_ID
. Seleccione su versión de Terraform y ejecute 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)
Obtenga sus ID de subred privada con la herramienta
aws
CLI.aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \ --query "Subnets[*].SubnetId" \ --output text
Etiquete sus subredes con el ID de su clúster. Ejecute el siguiente comando para cada una de sus subredes.
aws ec2 create-tags \ --resources SUBNET_IDS \ --tags Key=gke:multicloud:cluster-id,Value=$CLUSTER_ID
Reemplace SUBNET_IDS con la lista de ID de subred, separados por espacios. Por ejemplo,
subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef
.
Conexión al servicio de gestión
En esta sección, establecerá una conexión con su servicio de administración. Puede tunelizar sus comandos a través de un host bastión . Si tiene una conexión directa con su VPC de AWS, vaya a "Generar credenciales y conectarse" .
Conectarse con un host bastión
Si usa un host bastión para configurar el túnel SSH, primero configure el host en su anthos-gke.yaml
. A continuación, cree un script para abrir el túnel siguiendo estos pasos:
Utilice
terraform
para generar un script que abra un túnel SSH al host bastión.terraform output bastion_tunnel > bastion-tunnel.sh chmod 755 bastion-tunnel.sh
Terraform crea el script
bastion-tunnel.sh
que utiliza la clave SSH del host bastión (~/.ssh/anthos-gke
).Para abrir el túnel, ejecute el script
bastion-tunnel.sh
. El túnel reenvía desdelocalhost:8118
al host bastión.Para abrir un túnel al host bastión, ejecute el siguiente comando:
./bastion-tunnel.sh -N
Los mensajes del túnel SSH aparecen en esta ventana. Cuando esté listo para cerrar la conexión, detenga el proceso usando Control+C o cerrando la ventana.
Cambie al directorio con su configuración de GKE en AWS.
cd anthos-aws
Generar credenciales y conectarse
La documentación de GKE en AWS asume que se usa un túnel SSH en el puerto localhost
para acceder al clúster. Si usa otro tipo de conexión a su VPC, como una interconexión directa, una VPN u otro método, puede eliminar la línea env HTTP_PROXY=http://localhost:8118
de los comandos.
Genere un
kubeconfig
para la autenticación. Useanthos-gke
para añadir credenciales a su configuración almacenada en~/.kube/config
.anthos-gke aws management get-credentials
Compruebe que puede conectarse al servicio de administración con
kubectl
.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
kubectl
imprime el estado del clúster.
¿Qué sigue?
- Crear un clúster de usuarios .
- Utilice un proxy con GKE en AWS.
- Cambie la configuración
kubectl
para conectarse a GKE en AWS con menos opciones de línea de comandos. - Consulta los grupos de seguridad mínimos requeridos para tu servicio de administración de GKE en AWS y tus clústeres de usuarios.