AWSCluster

En este tema se describen las opciones de configuración de la definición de recurso personalizado de AWSCluster.

Definir un AWSCluster

AWSCluster es un recurso personalizado de Kubernetes definido por GKE on AWS. Este recurso representa un plano de control de GKE en AWS.

Para crear un clúster a partir de esta plantilla, copie el siguiente archivo YAML y complete los valores destacados definidos en las definiciones de los campos spec.networking y spec.controlPlane. A continuación, aplica el manifiesto de recursos a tu servicio de gestió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 red de todo el clúster.

Nombre Descripción Tipo Ejemplo Obligatorio
vpcID El ID de la VPC en la que se ejecuta el clúster. El plano de control y los grupos de nodos de un clúster de usuarios se ejecutan en una sola VPC. string vpc-0814934042d983118 yes
podAddressCIDRBlocks Intervalo de direcciones IPv4 que usan los pods del clúster. Actualmente, solo se admite un intervalo. El intervalo no debe solaparse con ninguna subred accesible desde tu red. Puedes usar el mismo intervalo en varios objetos AWSCluster diferentes. list(string) [10.1.0.0/16] yes
serviceAddressCIDRBlocks Intervalo de direcciones IPv4 que usan los servicios del clúster. Actualmente, solo se admite un intervalo. El intervalo no debe solaparse con ninguna subred accesible desde tu red. Puedes usar el mismo intervalo en varios objetos AWSCluster diferentes. list(string) [10.2.0.0/16] yes
serviceLoadBalancerSubnetIDs IDs de subredes en las que GKE en AWS puede crear balanceadores de carga públicos o privados. GKE on AWS aplica etiquetas a cada una de estas subredes para admitir el balanceo de carga. Para usar ALB, se debe especificar más de una subred. list(string) [subnet-abcdefg, subnet-12345678]

spec.controlPlane

Este objeto incluye parámetros comunes del plano de control del clúster.

Nombre Descripción Tipo Ejemplo Obligatorio
version La versión de GKE del plano de control. Consulta más información sobre las versiones y las actualizaciones y sobre cómo actualizar un clúster de usuario. string 1.25.5-gke.2100 yes
instanceType Un tipo de instancia de AWS EC2 para cada réplica del plano de control. Consulta los tipos de instancias compatibles. string m5.large yes
keyName El par de claves de AWS EC2 asignado a cada réplica del plano de control. string my-key-pair yes
subnetIDs Lista de subredes de VPC para réplicas del plano de control. list(string) [subnet-06a004869a1eae947] yes
securityGroupIDs GKE en AWS crea automáticamente grupos de seguridad con las reglas mínimas necesarias para que un clúster funcione. Si quieres añadir más grupos de seguridad con acceso a réplicas del plano de control, añade sus IDs a securityGroupIDs. list(string) [sg-0ec06559d997a796f] no
iamInstanceProfile Nombre del perfil de instancia de EC2 de AWS asignado a las réplicas del plano de control. string my-control-plane-profile yes
databaseEncryption.kmsKeyARN Nombre de recurso de Amazon (ARN) 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. cadena arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
hub.membershipName El nombre de la suscripción a Connect que se ha usado para registrar tu clúster. cadena 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, location: us-central1, enableLogging: true, enableMonitoring: true} no
etiquetas Metadatos de clave/valor asignados a cada recurso de AWS que admita AWSCluster. Para obtener más información, consulte Prácticas recomendadas de etiquetado. map(string) {Environment: Production, Team: Analytics} no
proxySecretName Nombre elegido por el usuario de un secreto que se usa para definir proxies de red específicos del clúster. cadena proxy-secret-0 no
workloadIdentity Segmento de Cloud Storage para la configuración de Workload Identity. Contiene un solo campo: oidcDiscoveryGCSBucket. object {oidcDiscoveryGCSBucket: my-bucket} no
rootVolume Parámetros de los volúmenes raíz de réplica del plano de control. Contiene un objeto definido en la siguiente sección. object {sizeGiB: 10} yes
etcd Parámetros de los volúmenes de etcd. Contiene un objeto definido en la siguiente sección. object {sizeGiB: 10} yes

spec.controlPlane.rootVolume y spec.etcd.rootVolume

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

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

Este objeto especifica los roles a los que se ha concedido acceso de administrador de clústeres con gestión de identidades y accesos de AWS.

Nombre Descripción Tipo Ejemplo Obligatorio
adminIdentityARNs ARN de los usuarios o roles de gestión de identidades y accesos de AWS a los que se ha concedido acceso de administrador de clústeres. cadena arn:aws:iam::123456789012:user/admin Solo es obligatorio si se usa 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 el artículo Autenticación con OIDC.

Campo Obligatorio Descripción Formato
certificateAuthorityData No Un certificado codificado en PEM codificado en base64 para el proveedor de OIDC. Para crear la cadena, codifica el certificado, incluidos los encabezados, en base64. Incluye la cadena resultante en certificateAuthorityData como una sola línea. Ejemplo: certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT== Cadena
clientID ID de la aplicación cliente que envía solicitudes de autenticación al proveedor de OpenID. Cadena
clientSecret No Secreto compartido entre la aplicación cliente de OIDC y el proveedor de OIDC. Cadena
extraParams No Parámetros de pares clave-valor adicionales que se enviarán al proveedor de OpenID. Si vas a autorizar un grupo, introduce resource=token-groups-claim.

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

Lista delimitada por comas
groupsClaim No Reclamación JWT que usa el proveedor para devolver tus grupos de seguridad. Cadena
groupPrefix No Prefijo añadido a las reclamaciones de grupo para evitar conflictos con nombres ya existentes. Por ejemplo, si tenemos un grupo foobar y un prefijo gid-, el resultado será gid-foobar. Cadena
issuerURI URL a la que se envían las solicitudes de autorización a tu OpenID, como https://example.com/adfs. El servidor de la API de Kubernetes usa esta URL para descubrir las claves públicas que se utilizan para verificar los tokens. El URI debe usar HTTPS. URL String
kubectlRedirectURI La URL de redirección que usa `kubectl` para la autorización. URL String
permisos Permisos adicionales que se enviarán al proveedor de OpenID. Microsoft Azure y Okta requieren el permiso offline_access. Lista delimitada por comas
userClaim No Reclamación de JWT que se usará como nombre de usuario. El valor predeterminado es `sub`, que debe ser un identificador único del usuario final. Puedes elegir otras reclamaciones, como el correo o el nombre, en función del proveedor de OpenID. Sin embargo, las reclamaciones que no sean de correo electrónico tienen el prefijo de la URL del emisor para evitar conflictos de nombres. Cadena
userPrefix No Prefijo añadido a las reclamaciones de nombre de usuario para evitar conflictos con nombres ya existentes. Si no proporcionas este campo y el nombre de usuario es un valor distinto de una dirección de correo electrónico, el prefijo será issuerurl# de forma predeterminada. Si asignas el valor - a userPrefix, se inhabilita el prefijo. Cadena