AWSManagementService

El recurso AWSManagementService contiene información de configuración para el servicio de administración GKE on AWS.

Configura un archivo YAML llamado anthos-gke.yaml antes de crear el servicio de administración. La herramienta anthos-gke usa la configuración cuando creas el servicio de administración.

El contenido de tu archivo anthos-gke.yaml depende de si usas anthos-gke para crear una nube privada virtual (VPC) de AWS dedicada o si usas una VPC de AWS existente.

VPC dedicada

apiVersion: multicloud.cluster.gke.io/v1
kind: AWSManagementService
metadata:
  name: management
spec:
  version: ANTHOS_CLI_VERSION
  region: AWS_REGION
  authentication:
    awsIAM:
      adminIdentityARNs:
      - ADMIN_AWS_IAM_ARN
  kmsKeyARN: KMS_KEY_ARN
  databaseEncryption:
    kmsKeyARN: KMS_KEY_ARN
  googleCloud:
    projectID: GCP_PROJECT_ID
    serviceAccountKeys:
      managementService: MANAGEMENT_KEY_PATH
      connectAgent: CONNECT_KEY_PATH
      node: NODE_KEY_PATH
  iam:
      permissionsBoundary: IAM_PERMISSIONS_BOUNDARY
      path: IAM_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 section
  rootVolume:
    volumeType: ROOT_VOLUME_TYPE
    iops: ROOT_VOLUME_IOPS
    kmsKeyARN: ROOT_VOLUME_KEY
  dataVolume:
    volumeType: DATA_VOLUME_TYPE
    iops: DATA_VOLUME_IOPS
    kmsKeyARN: DATA_VOLUME_KEY
  tags:
    tag-name: tag-value
  bastionHost:
    allowedSSHCIDRBlocks:
    - SSH_CIDR_BLOCK
    rootVolume:
      volumeType: ROOT_VOLUME_TYPE
      iops: ROOT_VOLUME_IOPS
      kmsKeyARN: ROOT_VOLUME_KEY
  bootstrapS3Bucket: BOOTSTRAP_S3_BUCKET
  proxy: PROXY_JSON_FILE
  terraform:
    invokeManually: No
    stateGCSBucket: GCS_BUCKET_NAME

VPC existente

apiVersion: multicloud.cluster.gke.io/v1
kind: AWSManagementService
metadata:
  name: management
spec:
  version: ANTHOS_CLI_VERSION
  region: AWS_REGION
  authentication:
    awsIAM:
      adminIdentityARNs:
      - ADMIN_AWS_IAM_ARN
  kmsKeyARN: KMS_KEY_ARN
  databaseEncryption:
    kmsKeyARN: KMS_KEY_ARN
  securityGroupIDs:
    - SECURITY_GROUP_IDS
  googleCloud:
    projectID: GCP_PROJECT_ID
    serviceAccountKeys:
      managementService: MANAGEMENT_KEY_PATH
      connectAgent: CONNECT_KEY_PATH
      node: NODE_KEY_PATH
  iam:
      permissionsBoundary: IAM_PERMISSIONS_BOUNDARY
      path: IAM_PATH
  existingVPC:
    subnetID: [MANAGEMENT_SUBNET_ID]
    allowedSSHSecurityGroupIDs: [SSH_SECURITY_GROUPS]
  # Optional fields
  rootVolume:
    volumeType: ROOT_VOLUME_TYPE
    iops: ROOT_VOLUME_IOPS
    kmsKeyARN: ROOT_VOLUME_KEY
  dataVolume:
    volumeType: DATA_VOLUME_TYPE
    iops: DATA_VOLUME_IOPS
    kmsKeyARN: DATA_VOLUME_KEY
  ubuntuRepositoryMirror: 'packages.cloud.google.com'
  bastionHost:
    subnetID: [BASTION_HOST_SUBNET_ID]
    allowedSSHCIDRBlocks:
    - [SSH_CIDR_BLOCK]
    rootVolume:
      volumeType: ROOT_VOLUME_TYPE
      iops: ROOT_VOLUME_IOPS
      kmsKeyARN: ROOT_VOLUME_KEY
  bootstrapS3Bucket: BOOTSTRAP_S3_BUCKET
  tags:
    tag-name: tag-value
  proxy: PROXY_JSON_FILE
  terraform:
    invokeManually: No
    stateGCSBucket: GCS_BUCKET_NAME

En las siguientes secciones, se describen estos campos.

spec.version

El valor de spec.version es la versión del servicio administrado que crea anthos- gke. La versión coincide con la salida de anthos-gke version. Por ejemplo, aws-1.14.1-gke.0.

spec.region

El valor de spec.region es la región de AWS en la que deseas implementar el servicio de administración. Por ejemplo, us-east-1.

spec.authentication.awsIAM

El valor de spec.authentication.awsIAM.adminIdentityARNs es una string con el nombre del recurso de Amazon (ARN) de un usuario IAM de AWS con permisos para crear un GKE en el servicio administrado de AWS. Por ejemplo, arn:aws:iam::123456789:user/someuser.

spec.kmsKeyARN

El valor de spec.kmsKeyARN es una string con el nombre del recurso de Amazon (ARN) o el alias de la clave de KMS de AWS creada en los requisitos previos. GKE on AWS usa la clave para la encriptación de sobre. Por ejemplo, arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee

spec.databaseEncryption

El valor de spec.databaseEncryption.kmsKeyARN es una cadena con el nombre del recurso de Amazon (ARN) o el alias de la clave de KMS de AWS que GKE on AWS usa para encriptar los secretos de la capa de la aplicación en los clústeres. Por ejemplo, arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee

spec.securityGroupIDs

El valor de spec.securityGroupIDs es una lista de ID de grupos de seguridad adicionales de AWS asignados a la VM del servicio administrado. Por ejemplo [sg-00123456789abcd, sg-00123456789def1].

spec.dedicatedVPC

Este campo representa la configuración de VPC deseada.

Nombre Description Tipo Ejemplo
vpcCIDRBlock El bloque CIDR de la VPC de AWS deseada. Debe estar entre /16 y /28 bits. string 10.0.0.0/16
availabilityZones Zonas de disponibilidad para implementar réplicas del plano del control. Cada zona tendrá su propia subred y necesita un bloque CIDR independiente. list(string) [us-east-1a, us-east-1b]
privateSubnetCIDRBlocks Bloque CIDR para subredes privadas dentro de la VPC en cada zona de disponibilidad. Debe ser un subconjunto de vpcCIDRBlock. Debes tener una subred por zona de disponibilidad. list(string) [10.0.101.0/24, 10.0.102.0/24]
publicSubnetCIDRBlocks Bloque CIDR para las subredes públicas dentro de la VPC en cada zona de disponibilidad. Debe ser un subconjunto de vpcCIDRBlock. Debes tener una subred por zona de disponibilidad. list(string) [10.0.1.0/24, 10.0.2.0/24]
bastionAllowedSSHCIDRBlocks Bloques CIDR para permitir el acceso SSH entrante. Este campo dejará de estar disponible en GKE en AWS 1.5. Usa spec.bastionHost en la versión 1.5 o en versiones posteriores. string [104.132.0.0/14]

spec.existingVPC

Los campos en spec.existingVPC configuran GKE en AWS para usar una VPC de AWS existente.

Nombre Description Tipo Ejemplo
subnetID ID de la subred en la que se ejecuta el servicio de administración. string subnet-00123456789ab
allowedSSHSecurityGroupIDs Lista de ID de los grupos de seguridad permitidos en el acceso de SSH dentro de la VPC. list(string) [sg-00123456789abcd, sg-00123456789def1]

spec.googleCloud

Los campos en spec.googleCloud configuran tu proyecto de Google Cloud y las claves de cuenta de servicio de IAM.

Nombre Description Tipo Ejemplo
projectID Proyecto de Google Cloud. string my-gcp-project-id
serviceAccountKeys Rutas de acceso de archivo a las claves de cuenta de servicio. serviceAccountKeys

spec.googleCloud.serviceAccountKeys

Los campos en spec.googleCloud.serviceAccountKeys incluyen rutas de archivos locales a las claves de la cuenta de servicio de GCP. Consulta Requisitos previos para obtener descripciones detalladas de cada clave.

Nombre Description Tipo Ejemplo
managementService Clave de la cuenta de servicio que usa el clúster de administración. String path/to/key/management-sa-key.json
connectAgent Clave de la cuenta de servicio que usa el agente de Connect de GKE Hub. String path/to/key/hub-sa-key.json
node Clave de la cuenta de servicio que usan los nodos. string path/to/key/node-sa-key.json

spec.iam

Los campos en spec.iam configuran parámetros opcionales de IAM de AWS para tu GKE en el entorno de AWS.

Name Description Tipo Ejemplo
permissionsBoundary ARN de los Límites de permisos para las funciones de IAM string arn:aws:iam::126285863215:policy/testPolicyBoundary
ruta de acceso Ruta de acceso a la función de IAM string /org_abc/team_abc/member_abc/

spec.bastionHost

La sección spec.bastionHost es opcional y describe un host de bastión.

Un host de bastión es una instancia de EC2 que se encuentra en una subred pública. Permite el acceso SSH entrante desde un bloque CIDR especificado y tiene acceso SSH saliente a tu GKE en el servicio de administración de AWS y clústeres de usuarios.

Puedes crear un host de bastión para las instalaciones de dedicatedVPC o existingVPC. El campo allowedSSHCIDRBlocks especifica el rango entrante de direcciones permitidas y no debe estar vacío.

Si no existe un host de bastión, GKE en AWS crea un host de bastión nuevo.

  • Para una instalación de dedicatedVPC, GKE en AWS crea una subred.
  • Para una instalación existingVPC, debes proporcionar una subred para el host de bastión y asegurarte de que esta subred tenga conectividad en tu VPC.

Puedes modificar el host de bastión si cambias o borras el campo spec.bastionHost y ejecutas anthos-gke aws management init, seguido de anthos-gke aws management apply.

Nombre Description Tipo Ejemplo
subnetID El ID de la subred en la que se ejecuta el host de bastión. En las instalaciones de existingVPC, la subred debe permitir la entrada desde el lugar en el que accederá a el puerto 22. Además, asegúrate de que tu VPC permita el acceso entrante desde esta subred. Para las instalaciones de dedicatedVPC, no especifiques este campo. GKE en AWS aprovisionará la subred con el acceso requerido. string subnet-003bdf7b0f5e21e45
allowedSSHCIDRBlocks Bloques CIDR para permitir el acceso SSH entrante. list(string) [104.132.0.0/14]
rootVolume Un objeto que describe el volumen raíz de los hosts de bastión. object {volumeType: gp2}

spec.rootVolume, spec.dataVolume y spec.bastionHost.rootVolume

En la siguiente tabla, se describen los campos comunes para los siguientes objetos:

  • spec.rootVolume para volúmenes de discos raíz del plano de control
  • spec.dataVolume, para volúmenes de discos de datos del plano de control
  • spec.bastionHost.rootVolume para volúmenes de discos raíz del host de bastión
Nombre Description Tipo Ejemplo Obligatorio
volumeType El tipo de volumen de EBS de AWS del nodo. Puede ser gp2 (predeterminado) o gp3. string gp2 No
iops La cantidad de operaciones de E/S aprovisionadas por segundo (IOPS) para el volumen. Solo es válido cuando volumeType es GP3. Para obtener más información, consulta Volúmenes de uso general SSD (gp3). integer 5000 No
kmsKeyARN El ARN de la clave de AWS KMS que se usa para encriptar el volumen de EBS. Si deseas obtener más información, consulta Usa una CMK administrada por clientes para encriptar volúmenes. string arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee No

spec.tags

Nombre Description Tipo Ejemplo
tags Metadatos de clave-valor opcionales asignados a cada recurso de AWS que admiten el servicio de administración. map(string) {Environment: Production, Team: Analytics}

spec.proxy

El campo spec.proxy configura un proxy HTTP/HTTPS opcional.

Nombre Description Tipo Ejemplo
proxy Ruta de acceso al archivo de configuración del proxy. Ruta de acceso relativa de anthos-gke.yaml proxy.json

spec.bootstrapS3Bucket

El campo spec.bootstrapS3Bucket configura un nombre de depósito S3 para GKE en AWS.

Name Description Tipo Ejemplo
bootstrapS3Bucket Campo opcional para el nombre del bucket de AWS S3 en el que GKE en AWS almacena la información de configuración. Si deseas crear varios servicios de administración de GKE on AWS en la misma región de AWS, establece este valor en un nombre de bucket único. string example-s3-bucket

spec.terraform

El campo spec.terraform.invokeManually configura el comando anthos-gke para no crear un servicio de administración.

Nombre Description Tipo Ejemplo
invokeManually Campo opcional que configura la herramienta de línea de comandos de anthos-gke para que no cree un servicio de administración después de compilar y validar su configuración. Si configuras invokeManually como Yes, puedes editar y aplicar los archivos de configuración de Terraform de forma manual. Yes, No Yes
stateGCSBucket Campo opcional que especifica un bucket de Google Cloud Storage preexistente para que Terraform almacene sus datos de configuración. string example-GCS-bucket