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 |