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 | Sí | 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 |
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 | Sí | 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 | Sí | La URL de redirección que usa `kubectl` para la autorización. | URL String |
permisos | Sí | 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 |