Clúster de AWS

Este tema describe las opciones de configuración de la definición de recurso personalizado de AWSCluster.

Definición de un AWSCluster

AWSCluster es un recurso personalizado de Kubernetes definido por GKE en 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 YAML y complete los valores resaltados definidos en los campos spec.networking y spec.controlPlane . A continuación, aplique el manifiesto de recursos a su 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 bajo spec se describen en las siguientes secciones.

redes de especificaciones

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

Nombre Descripción Tipo Ejemplo Requerido
vpcID El ID de la VPC donde se ejecuta el 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 utilizadas por los pods del clúster. Actualmente, solo se admite un rango. Este rango no debe solaparse con ninguna subred accesible desde su red. Es seguro usar el mismo rango en varios objetos de AWSCluster. list(string) [10.1.0.0/16]
serviceAddressCIDRBlocks Rango de direcciones IPv4 utilizadas por los servicios del clúster. Actualmente, solo se admite un rango. Este rango no debe solaparse con ninguna subred accesible desde su red. Es seguro usar el mismo rango en varios objetos de AWSCluster. list(string) [10.2.0.0/16]
ID de subred del balanceador de carga de servicio ID de subred donde GKE en AWS puede crear balanceadores de carga públicos o privados. GKE en AWS aplica etiquetas a cada una de estas subredes para facilitar el balanceo de carga. La compatibilidad con ALB requiere más de una subred especificada. list(string) [subnet-abcdefg, subnet-12345678]

plano de control de especificación

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

Nombre Descripción Tipo Ejemplo Requerido
versión La versión de GKE del plano de control. Consulta Control de versiones y actualizaciones y Actualización de un clúster de usuarios para obtener más información. string 1.25.5-gke.2100
tipo de instancia Un tipo de instancia de AWS EC2 para cada réplica del plano de control. Consulte Tipos de instancias compatibles . string m5.large
nombreclave El par de claves de AWS EC2 asignado a cada réplica del plano de control. string my-key-pair
ID de subred Una lista de subredes de VPC para réplicas del plano de control. list(string) [subnet-06a004869a1eae947]
ID de grupo de seguridad GKE en AWS crea automáticamente grupos de seguridad con las reglas mínimas necesarias para un clúster funcional. Si desea agregar grupos de seguridad adicionales con acceso a réplicas del plano de control, agregue sus ID a securityGroupIDs . list(string) [sg-0ec06559d997a796f] No
iamInstanceProfile El nombre del perfil de instancia de AWS EC2 asignado a las réplicas del plano de control. string my-control-plane-profile
cifrado de base de datos.kmsKeyARN El nombre de recurso de Amazon (ARN) de la clave AWS KMS que GKE en AWS usa 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.nombreMembresía El nombre de membresía de Connect utilizado para registrar su clúster. cadena proyectos/ YOUR_PROJECT /ubicaciones/global/membresías/ CLUSTER_NAME
Operaciones en la nube La configuración de registro en la nube y monitoreo en la nube para los nodos del plano de control. object {ID de proyecto: YOUR_PROJECT , ubicación: us-central1, enableLogging: verdadero, enableMonitoring: verdadero} No
etiquetas Metadatos de clave-valor asignados a cada recurso de AWS que respalda el AWSCluster. Para obtener más información, consulte las prácticas recomendadas de etiquetado. map(string) {Entorno: Producción, Equipo: Analítica} No
nombreSecretoProxy Nombre elegido por el usuario de un secreto utilizado para definir servidores proxy de red específicos del clúster cadena proxy-secreto-0 No
Identidad de carga de trabajo Bucket de Cloud Storage para la configuración de la identidad de la carga de trabajo . Contiene un solo campo: oidcDiscoveryGCSBucket . object {oidcDiscoveryGCSBucket: mi-cubo} No
volumen raíz Parámetros para volúmenes raíz de réplicas 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 spec.etcd.mainVolume .

Nombre Descripción Tipo Ejemplo Requerido
tamañoGiB Tamaño del volumen raíz en Gigabytes. integer 10
tipo de volumen El tipo de volumen de AWS EBS del nodo del plano de control. Puede ser gp2 (predeterminado) o gp3 . string gp2 No
yops Cantidad de operaciones de E/S por segundo (IOPS) aprovisionadas para volúmenes. Solo es válido cuando volumeType es GP3 . Para más información, consulte Volúmenes SSD de propósito general (gp3) . integer 5000 No
kmsKeyARN El ARN de la clave AWS KMS utilizada para cifrar el volumen EBS. Para obtener más información, consulte "Uso de una CMK administrada por el cliente para cifrar volúmenes" . string arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee No

especificación.autenticación.awsIAM

Este objeto especifica los roles a los que se les otorga acceso de administrador de clúster con AWS IAM.

Nombre Descripción Tipo Ejemplo Requerido
ARN de identidad de administrador ARN de usuarios o roles de AWS IAM a los que se les otorgó acceso de administrador de clúster. cadena arn:aws:iam::123456789012:user/admin Solo es necesario si se utiliza la autenticación de AWS IAM.

especificación.autenticación.oidc

Puede especificar más de un objeto oidc . El objeto oidc se define a continuación. Para obtener más información, consulte Autenticación con OIDC .

Campo Requerido Descripción Formato
Datos de la autoridad del certificado No Un certificado codificado en base64 y con codificación PEM para el proveedor OIDC. Para crear la cadena, codifique el certificado, incluidos los encabezados, en base64. Incluya la cadena resultante en certificateAuthorityData como una sola línea. Ejemplo: certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT== Cadena
ID de cliente ID de la aplicación cliente que realiza solicitudes de autenticación al proveedor de OpenID. Cadena
clienteSecreto No Secreto compartido entre la aplicación cliente OIDC y el proveedor OIDC. Cadena
parámetros adicionales No Parámetros clave-valor adicionales para enviar al proveedor de OpenID. Si autoriza un grupo, pase resource=token-groups-claim .

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

Lista delimitada por comas
gruposReclamación No Reclamo JWT que el proveedor utiliza para devolver sus grupos de seguridad. Cadena
prefijo de grupo No Se añade un prefijo a las reclamaciones de grupo para evitar conflictos con nombres existentes. Por ejemplo, dado un grupo foobar y un prefijo gid-, gid-foobar. Cadena
emisorURI URL donde se envían las solicitudes de autorización a tu OpenID, como https://example.com/adfs . El servidor de la API de Kubernetes utiliza esta URL para descubrir claves públicas y verificar tokens. La URI debe usar HTTPS. Cadena de URL
URI de redireccionamiento de kubectl La URL de redireccionamiento que `kubectl` utiliza para la autorización. Cadena de URL
alcances Ámbitos adicionales para enviar al proveedor de OpenID. Microsoft Azure y Okta requieren el ámbito offline_access . Lista delimitada por comas
Reclamación del usuario No Reclamo JWT que se usa como nombre de usuario. El valor predeterminado es `sub`, que se espera que sea un identificador único del usuario final. Puede elegir otros reclamos, como correo electrónico o nombre, según el proveedor de OpenID. Sin embargo, los reclamos que no sean de correo electrónico se prefijan con la URL del emisor para evitar conflictos de nombres. Cadena
prefijo de usuario No Se añade un prefijo a las reclamaciones de nombre de usuario para evitar conflictos con nombres existentes. Si no se proporciona este campo y el nombre de usuario es un valor distinto de una dirección de correo electrónico, el prefijo predeterminado es issuerurl# . Al establecer userPrefix en - , se deshabilita el prefijo. Cadena