Instalación del servicio de administración

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 y anthos-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.

  1. Abra una terminal en la computadora donde instaló y configuró las herramientas de línea de comandos aws , terraform y anthos-gke .

  2. 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
    
  3. 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 , ejecute aws 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, ejecute aws 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 utilizar anthos-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, utilice 0.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.

  4. Ejecute anthos-gke aws management init para generar un archivo anthos-gke.status.yaml con configuración adicional. El comando init también valida el objeto AWSManagementService en el archivo anthos-gke.yaml .

    anthos-gke aws management init
    
  5. 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:

  1. 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 .

  2. Para abrir el túnel, ejecute el script bastion-tunnel.sh . El túnel reenvía desde localhost: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.

  3. Abra una nueva terminal y cambie el directorio al directorio con su configuración de GKE en AWS.

  4. Genere un kubeconfig para la autenticación. Use anthos-gke para añadir credenciales a su configuración almacenada en ~/.kube/config .

    anthos-gke aws management get-credentials
    
  5. 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?