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 | 
sí | 
| 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] | 
sí | 
| 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] | 
sí | 
| 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 | 
Sí | 
| instanceType | Un tipo de instancia de AWS EC2 para cada réplica del plano de control. Consulta Tipos de instancias compatibles. | string | 
m5.large | 
Sí | 
| keyName | El par de claves de AWS EC2 que se asignó a cada réplica del plano de control. | string | 
my-key-pair | 
Sí | 
| subnetIDs | Una lista de subredes de VPC para las réplicas del plano de control. | list(string) | 
[subnet-06a004869a1eae947] | 
Sí | 
| 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 | 
sí | 
| 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} | 
sí | 
| etcd | Parámetros para volúmenes etcd. Contiene un objeto definido en la siguiente sección. | object | 
{sizeGiB: 10} | 
sí | 
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 | 
sí | 
| 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 | Sí | 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   | 
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 | Sí | 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 | Sí | La URL de redireccionamiento que usa “kubectl” para la autorización. | String de URL | 
| scopes | Sí | 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 |