AWSCluster

En este tema, se describen las opciones de configuración de la definición de recursos personalizados de AWSCluster.

Define un AWSCluster

AWSCluster es un recurso personalizado de Kubernetes que define GKE on AWS. Este recurso representa un plano de control de GKE on AWS.

Para crear un clúster a partir de esta plantilla, copia el siguiente YAML y completa los valores destacados definidos en las definiciones de campos spec.networking y spec.controlPlane. Luego, aplica el manifiesto de recursos a tu servicio de administración.

apiVersion: multicloud.cluster.gke.io/v1
kind: AWSCluster
metadata:
  name: CLUSTER_NAME
spec:
  region: AWS_REGION
  networking:
    vpcID: VPC_ID
    podAddressCIDRBlocks: POD_ADDRESS_CIDR_BLOCKS
    serviceAddressCIDRBlocks: SERVICE_ADDRESS_CIDR_BLOCKS
    serviceLoadBalancerSubnetIDs: SERVICE_LOAD_BALANCER_SUBNETS
  controlPlane:
    version: GKE_VERSION # Latest version is 1.25.5-gke.2100
    instanceType: AWS_INSTANCE_TYPE
    keyName: SSH_KEY_NAME
    subnetIDs:
    - CONTROL_PLANE_SUBNET_IDS
    securityGroupIDs:
    - CONTROL_PLANE_SECURITY_GROUPS
    iamInstanceProfile: CONTROL_PLANE_IAM_ROLE
    databaseEncryption:
      kmsKeyARN: ARN_OF_KMS_KEY
    hub:
      membershipName: ANTHOS_CONNECT_NAME
    cloudOperations: # Optional
      projectID: YOUR_PROJECT
      location: GCP_LOCATION
      enableLogging: ENABLE_LOGGING
      enableMonitoring: ENABLE_MONITORING
    tags:
      TAG_KEY: TAG_VALUE
    proxySecretName: PROXY_SECRET_NAME
    workloadIdentity:
      oidcDiscoveryGCSBucket: WORKLOAD_IDENTITY_BUCKET
    rootVolume:  # Optional
      sizeGiB: ROOT_VOLUME_SIZE
      volumeType: ROOT_VOLUME_TYPE
      iops: ROOT_VOLUME_IOPS
      kmsKeyARN: ROOT_VOLUME_KEY
    etcd:  # Optional
      mainVolume:
        sizeGiB: ETCD_VOLUME_SIZE
        volumeType: ETCD_VOLUME_TYPE
        iops: ETCD_VOLUME_IOPS
        kmsKeyARN: ETCD_VOLUME_KEY
  authentication:
    awsIAM:
      adminIdentityARNs: ADMIN_IAM_ARN
    oidc: # Optional
    - certificateAuthorityData: CERTIFICATE_STRING
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      extraParams:  EXTRA_PARAMS
      groupsClaim:  GROUPS_CLAIM
      groupPrefix:  GROUP_PREFIX
      issuerURI:  ISSUER_URL
      kubectlRedirectURI:  KUBECTL_REDIRECT_URL
      scopes:  SCOPES
      userClaim:  USER_CLAIM
      userPrefix:  USER_PREFIX

Los subcampos de spec se describen en las siguientes secciones.

spec.networking

Este objeto define la configuración de herramientas de redes de todo el clúster.

Nombre Description Tipo Ejemplo Obligatorio
vpcID El ID de la VPC en la que se ejecuta tu clúster. El plano de control y los grupos de nodos de un clúster de usuario se ejecutan en una sola VPC. string vpc-0814934042d983118
podAddressCIDRBlocks Rango de direcciones IPv4 que usan los pods del clúster. Por el momento, se admite un solo rango. Este rango no debe superponerse con ninguna subred accesible desde tu red. Es seguro usar el mismo rango en diferentes objetos de AWSCluster. list(string) [10.1.0.0/16]
serviceAddressCIDRBlocks Rango de direcciones IPv4 que usan los servicios del clúster. Por el momento, se admite un solo rango. Este rango no debe superponerse con ninguna subred accesible desde tu red. Es seguro usar el mismo rango en diferentes objetos de AWSCluster. list(string) [10.2.0.0/16]
serviceLoadBalancerSubnetIDs Los ID de las subredes en las que GKE on AWS puede crear balanceadores de cargas públicos o privados. GKE on AWS aplica etiquetas a cada una de estas subredes para admitir el balanceo de cargas. La compatibilidad con ALB requiere la especificación de más de una subred. list(string) [subnet-abcdefg, subnet-12345678]

spec.controlPlane

En este objeto, se incluyen parámetros comunes para el plano de control del clúster.

Nombre Description Tipo Ejemplo Obligatorio
version La versión de GKE del plano de control. Consulta Control de versiones y actualizaciones y Actualiza un clúster de usuario para obtener más información. string 1.25.5-gke.2100
instanceType Un tipo de instancia de AWS EC2 para cada réplica del plano de control. Consulta Tipos de instancias compatibles. string m5.large
keyName El par de claves de AWS EC2 que se asignó a cada réplica del plano de control. string my-key-pair
subnetIDs Una lista de subredes de VPC para las réplicas del plano de control. list(string) [subnet-06a004869a1eae947]
securityGroupIDs GKE en AWS crea automáticamente grupos de seguridad con reglas mínimas necesarias para un clúster en funcionamiento. Si quieres agregar grupos de seguridad adicionales con acceso para controlar réplicas de planos, agrega sus ID a securityGroupIDs. list(string) [sg-0ec06559d997a796f] No
iamInstanceProfile El nombre del perfil de instancia de EC2 de AWS asignado para controlar las réplicas del plano. string my-control-plane-profile
databaseEncryption.kmsKeyARN El nombre del recurso de Amazon (ARN) de la clave de KMS de AWS que usa GKE en AWS para encriptar los secretos de la capa de la aplicación en los clústeres. string arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
hub.membershipName El nombre de la membresía de Connect que se usa para registrar tu clúster. string projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME
cloudOperations La configuración de Cloud Logging y Cloud Monitoring para los nodos del plano de control. object {projectID: YOUR_PROJECT, ubicación: us-central1, enableLogging: true, enableMonitoring: true} No
tags Los metadatos de clave-valor que se asignaron a cada recurso de AWS que admite AWSCluster. Para obtener más información, consulta las Prácticas recomendadas de etiquetado. map(string) {Environment: Production, Team: Analytics} No
proxySecretName El nombre elegido por el usuario de un Secret que se use para definir proxies de red específicos del clúster string proxy-secret-0 No
workloadIdentity Depósito de Cloud Storage para la configuración de identidad de carga de trabajo. Contiene un solo campo: oidcDiscoveryGCSBucket. object {oidcDiscoveryGCSBucket: my-bucket} No
rootVolume Los parámetros para los volúmenes raíz de réplica del plano de control. Contiene un objeto definido en la siguiente sección. object {sizeGiB: 10}
etcd Parámetros para volúmenes etcd. Contiene un objeto definido en la siguiente sección. object {sizeGiB: 10}

spec.controlPlane.rootVolume y spec.etcd.rootVolume

Estos campos se aplican tanto a spec.controlPlane.rootVolume como a spec.etcd.mainVolume.

Nombre Description Tipo Ejemplo Obligatorio
sizeGiB Tamaño del volumen raíz en gigabytes. integer 10
volumeType El tipo de volumen de EBS de AWS del nodo del plano de control 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.authentication.awsIAM

Este objeto especifica las funciones con acceso de administrador de clúster de IAM de AWS.

Nombre Description Tipo Ejemplo Obligatorio
adminIdentityARNs El ARN de usuarios o funciones de IAM de AWS con acceso de administrador de clúster. string arn:aws:iam::123456789012:user/admin Solo se requiere si se utiliza la autenticación de AWS IAM.

spec.authentication.oidc

Puedes especificar más de un objeto oidc. El objeto oidc se define a continuación. Para obtener más información, consulta Autentica con OIDC.

Campo Obligatorio Descripción Formato
certificateAuthorityData No Un certificado con codificación PEM codificada en base64 para el proveedor de OIDC. Para crear la string, codifica el certificado, incluidos los encabezados, en base64. Incluye la string resultante en certificateAuthorityData como una sola línea. Ejemplo: certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT== String
clientID El ID de la aplicación cliente que realiza solicitudes de autenticación al proveedor de OpenID. String
clientSecret No Un secreto compartido entre la aplicación cliente de OIDC y el proveedor de OIDC. String
extraParams No Los parámetros de clave-valor adicionales para enviar al proveedor de OpenID. Si autorizas un grupo, pasa resource=token-groups-claim.

Si el servidor de autorización solicita consentimiento, para la autenticación con Microsoft Azure y Okta, establece extraParams en prompt=consent. Para Google Cloud Identity, establece extraParams en prompt=consent,access_type=offline.

Lista delimitada por comas
groupsClaim No La reclamación de JWT que el proveedor usa para mostrar los grupos de seguridad. String
groupPrefix No El prefijo que se antepone a las reclamaciones de grupos para evitar conflictos con los nombres existentes. Por ejemplo, dado un grupo foobar y un prefijo gid-, gid-foobar. String
issuerURI La URL a la que se envían las solicitudes de autorización al OpenID, como https://example.com/adfs. El servidor de la API de Kubernetes usa esta URL a fin de descubrir claves públicas para la verificación de tokens. El URI debe usar HTTPS. String de URL
kubectlRedirectURI La URL de redireccionamiento que usa “kubectl” para la autorización. String de URL
scopes Los permisos adicionales que se deben enviar al proveedor de OpenID. Microsoft Azure y Okta requieren el permiso offline_access. Lista delimitada por comas
userClaim No Es la reclamación de JWT que se debe usar como nombre de usuario. El valor predeterminado es “sub”, que se espera que sea un identificador único del usuario final. Puedes elegir otras reclamaciones, como el correo electrónico o el nombre, según el proveedor de OpenID. Sin embargo, las reclamaciones que no sean de correo electrónico tienen el prefijo de la URL de la entidad emisora para evitar conflictos de nombres. String
userPrefix No El prefijo que se antepone a las reclamaciones de nombre de usuario para evitar conflictos con los nombres existentes. Si no proporcionas este campo, y el nombre de usuario es un valor diferente de una dirección de correo electrónico, el prefijo es issuerurl# de forma predeterminada. Cuando configuras userPrefix en -, se inhabilita el prefijo. String