AWSManagementService

El recurso AWSManagementService contiene información de configuración de tu servicio de gestión de GKE en AWS.

Debes configurar un archivo YAML llamado anthos-gke.yaml antes de crear tu servicio de gestión. La herramienta anthos-gke usa la configuración al crear tu servicio de gestión.

El contenido del archivo anthos-gke.yaml depende de si usas anthos-gke para crear una nube privada virtual (VPC) de AWS específica para ti o si usas una VPC de AWS ya creada.

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 ya creada

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 de gestión que crea anthos- gke. La versión coincide con el resultado 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 quieres implementar el servicio de gestión. Por ejemplo, us-east-1.

spec.authentication.awsIAM

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

spec.kmsKeyARN

El valor de spec.kmsKeyARN es una cadena con el nombre de recurso de Amazon (ARN) o el alias de la clave de KMS de AWS creada en Requisitos. GKE en AWS usa la clave para el cifrado envolvente. 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 de recurso de Amazon (ARN) o el alias de clave de la clave de AWS KMS que usa GKE en AWS para cifrar los secretos de la capa de 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 IDs de grupos de seguridad de AWS adicionales asignados a la VM del servicio de gestión. Por ejemplo, [sg-00123456789abcd, sg-00123456789def1]`.

spec.dedicatedVPC

Este campo representa la configuración de VPC deseada.

Nombre Descripción Tipo Ejemplo
vpcCIDRBlock El bloque CIDR de la VPC de AWS que quieras. Debe tener entre 16 y 28 bits. string 10.0.0.0/16
availabilityZones Zonas de disponibilidad en las que desplegar réplicas del plano de control. Cada zona tendrá su propia subred y necesitará un bloque CIDR independiente. list(string) [us-east-1a, us-east-1b]
privateSubnetCIDRBlocks Bloque CIDR de las subredes privadas 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 de las subredes públicas 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 desde los que se permite el acceso SSH entrante. Este campo está obsoleto en GKE en AWS 1.5. Usa spec.bastionHost en la versión 1.5 o posterior. string [104.132.0.0/14]

spec.existingVPC

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

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

spec.googleCloud

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

Nombre Descripción Tipo Ejemplo
projectID Google Cloud Google Cloud proyecto. string my-gcp-project-id
serviceAccountKeys Rutas de archivo a las claves de cuenta de servicio. serviceAccountKeys

spec.googleCloud.serviceAccountKeys

Los campos de spec.googleCloud.serviceAccountKeys incluyen rutas de archivos locales a las claves de la cuenta de servicio de GCP. Consulta los requisitos para ver descripciones detalladas de cada clave.

Nombre Descripción Tipo Ejemplo
managementService Clave de cuenta de servicio usada por el clúster de gestión cadena path/to/key/management-sa-key.json
connectAgent Clave de cuenta de servicio usada por el agente de conexión de GKE Hub cadena path/to/key/hub-sa-key.json
node Clave de cuenta de servicio usada por los nodos cadena path/to/key/node-sa-key.json

spec.iam

Los campos de spec.iam configuran parámetros opcionales de gestión de identidades y accesos de AWS para tu entorno de GKE en AWS.

Nombre Descripción Tipo Ejemplo
permissionsBoundary ARN de los límites de permisos de los roles de gestión de identidades y accesos string arn:aws:iam::126285863215:policy/testPolicyBoundary
ruta Ruta al rol de gestión de identidades y accesos string /org_abc/team_abc/member_abc/

spec.bastionHost

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

Un host bastion es una instancia de EC2 que se coloca en una subred pública. Permite el acceso SSH entrante desde un bloque CIDR especificado y el acceso SSH saliente a tus clústeres de gestión y de usuario de GKE en AWS.

Puedes crear un host bastion para instalaciones de dedicatedVPC o existingVPC. El campo allowedSSHCIDRBlocks especifica el intervalo de direcciones entrantes permitidas y no debe estar vacío.

Si no existe ningún host bastion, GKE en AWS crea uno.

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

Puedes modificar tu host bastion cambiando o eliminando el campo spec.bastionHost y ejecutando anthos-gke aws management init, seguido de anthos-gke aws management apply.

Nombre Descripción Tipo Ejemplo
subnetID El ID de la subred en la que se ejecuta el host bastion. En las instalaciones de existingVPC, la subred debe permitir la entrada desde donde vayas a acceder a ella en el puerto 22. Además, asegúrate de que tu VPC permite el acceso entrante desde esta subred. En las instalaciones de dedicatedVPC, no especifique este campo. GKE on AWS aprovisionará la subred con el acceso necesario. cadena subnet-003bdf7b0f5e21e45
allowedSSHCIDRBlocks Bloques CIDR desde los que se permite el acceso SSH entrante. list(string) [104.132.0.0/14]
rootVolume Objeto que describe el volumen raíz del host bastion. object {volumeType: gp2}

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

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

  • spec.rootVolume para los volúmenes de disco raíz del plano de control
  • spec.dataVolume, para volúmenes de disco de datos del plano de control
  • spec.bastionHost.rootVolume para volúmenes de disco raíz de hosts bastion
Nombre Descripción Tipo Ejemplo Obligatorio
volumeType El tipo de volumen de EBS de AWS del nodo. Puede ser gp2 (valor predeterminado) o gp3. string gp2 no
IOPS Cantidad de operaciones de entrada/salida por segundo (IOPS) aprovisionadas para los volúmenes. Solo es válido cuando volumeType es GP3. Para obtener más información, consulta Volúmenes SSD de uso general (gp3). integer 5000 no
kmsKeyARN El ARN de la clave de KMS de AWS que se usa para cifrar el volumen de EBS. Para obtener más información, consulta Usar una CMK gestionada por el cliente para cifrar volúmenes. string arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee no

spec.tags

Nombre Descripción Tipo Ejemplo
etiquetas Metadatos opcionales de clave/valor asignados a cada recurso de AWS que admita el servicio de gestión. map(string) {Environment: Production, Team: Analytics}

spec.proxy

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

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

spec.bootstrapS3Bucket

El campo spec.bootstrapS3Bucket configura un nombre de segmento de S3 para GKE en AWS .

Nombre Descripción Tipo Ejemplo
bootstrapS3Bucket Campo opcional para el nombre del bucket de AWS S3 donde GKE en AWS almacena la información de configuración. Si quiere crear varios servicios de gestión de GKE en AWS en la misma región de AWS, asigne a este valor un nombre de segmento único. string example-s3-bucket

spec.terraform

El campo spec.terraform.invokeManually configura el comando anthos-gke para que no cree un servicio de gestión.

Nombre Descripción Tipo Ejemplo
invokeManually Campo opcional que configura la herramienta de línea de comandos anthos-gke para que no cree un servicio de gestión después de compilar y validar la configuración. Si asignas el valor Yes a invokeManually, puedes editar y aplicar los archivos de configuración de Terraform manualmente. Yes, No Yes
stateGCSBucket Campo opcional que especifica un segmento de Google Cloud Storage preexistente para que Terraform almacene sus datos de configuración. string example-GCS-bucket