Un servicio de administración crea, actualiza y elimina clústeres de GKE en AWS. Este tema explica cómo crear un servicio de administración dentro de una nube virtual privada (VPC) de AWS dedicada. Si ya tiene una VPC, consulte Integración con la infraestructura existente .
Antes de empezar
Antes de comenzar a usar GKE en AWS, asegúrese de haber realizado las siguientes tareas:
- Completar los prerrequisitos .
- Autenticarse con la CLI de Google Cloud.
gcloud auth login && \ gcloud auth application-default login
Valores que necesitas
Para completar este tema, necesitará lo siguiente de los requisitos previos:
- ARN o alias de clave 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 donde GKE en AWS crea su clúster de administración.
Configurar su servicio de gestión
Configuras tu servicio de administración de GKE en AWS con un archivo YAML. Este archivo se asemeja a una configuración de recursos personalizada de Kubernetes, pero no representa un recurso.
Abra una terminal en la computadora donde instaló y configuró las herramientas de línea de comandos
aws
,terraform
yanthos-gke
.Cree un directorio vacío para su configuración de GKE en AWS y cámbiese a él. La documentación de GKE en AWS utiliza
anthos-aws
como directorio de configuración de ejemplo.mkdir anthos-aws cd anthos-aws
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 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
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 de recurso de Amazon del usuario con permisos de AWS IAM para crear un servicio de administración. Para obtener el ARN del usuario autenticado en la herramienta
aws
, ejecuteaws sts get-caller-identity
.KMS_KEY_ARN con el nombre de recurso de Amazon de la clave de AWS KMS o el alias de clave de KMS que protege los datos de su 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 tiene el ARN, ejecuteaws kms list-keys
para obtener una lista de ARN.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 su servicio de administración; por ejemplo,arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
.GCP_PROJECT_ID con el Google Cloud ID del proyecto que aloja su entorno de GKE Enterprise.
MANAGEMENT_KEY_PATH con la ubicación de suGoogle Cloud clave 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_CIDR_BLOCK con el rango total de direcciones IP CIDR de la VPC de AWS que crea
anthos-gke
. Por ejemplo,10.0.0.0/16
. Para obtener más información, consulte "Conceptos básicos de VPC y subredes" en la documentación de AWS.ZONE_1 , ZONE_2 y ZONE_3 con las zonas de disponibilidad de AWS EC2 donde desea crear nodos y planos de control. GKE en AWS crea subredes en estas zonas. Al usar
anthos-gke
para generar la configuración de un clúster de usuarios , GKE en AWS crea planos de control y grupos de nodos en estas zonas de disponibilidad (por ejemplo,us-east-1a
.
Si desea utilizaranthos-gke
para crear clústeres de usuarios en una sola zona, puede eliminar ZONE_2 y ZONE_3 .PRIVATE_CIDR_BLOCK_1 , PRIVATE_CIDR_BLOCK_2 y PRIVATE_CIDR_BLOCK_3 , con el bloque CIDR de su 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 especificado en
vpcCIDRBlock
. Necesita 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 , con los bloques CIDR de su subred pública. Necesita una subred para 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 rangos de direcciones especificados en las ACL y los grupos de seguridad de la red de AWS; por ejemplo,
10.0.100.0/24
.SSH_CIDR_BLOCK con el bloque CIDR que permite el acceso SSH entrante a su host bastión (por ejemplo,
203.0.113.0/24
). Si desea permitir el acceso SSH desde cualquier dirección IP, utilice0.0.0.0/0
.(opcional) 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 generar un archivoanthos-gke.status.yaml
con configuración adicional. El comandoinit
también valida el objetoAWSManagementService
en el archivoanthos-gke.yaml
.anthos-gke aws management init
Ejecute
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 tardar hasta diez minutos en completarse. Una vez completado, el servicio de administración se ejecuta 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 en anthos-gke.yaml
también admite varios campos opcionales. Estos incluyen:
- spec.bootstrapS3Bucket para especificar un bucket de AWS S3 para GKE en los datos de configuración de AWS
- spec.tags para etiquetar recursos de AWS relacionados con el clúster
- spec.securityGroupIDs para asignar ID de grupo 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 para especificar un depósito 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
, consulte la referencia del servicio de administración de AWS .
Conectarse al servicio de gestión
A continuación, use anthos-gke
para conectarse y autenticarse en su servicio de administración de GKE en AWS.
Al crear un servicio de administració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. Puede acceder a su servicio de administración de cualquiera de las tres maneras siguientes:
- a través del servicio AWS Direct Connect de Amazon
- a través de un host bastión que actúa como proxy de las conexiones entre Internet y sus subredes de GKE en AWS
- a través de una VPN
Al crear un servicio de administración en una VPC dedicada, GKE en AWS crea automáticamente un host bastión en una subred pública. Si se conecta a su servicio de administración mediante una VPN o AWS Direct Connect, este host bastión no es necesario. De lo contrario, para conectarse a su servicio de administración a través del host bastión, siga estos pasos:
Utilice la herramienta
terraform
para generar el script que abre un túnel SSH al host bastión. Seleccione su versión de Terraform y ejecute 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 el script
bastion-tunnel.sh
que hace referencia a la clave SSH del host bastión en~/.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 -4
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.
Abra una nueva terminal y cambie el directorio al directorio con su configuración de GKE en AWS.
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
La salida incluye la URL del servidor API del servicio de administración.
¿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.