AWSCluster

Questo argomento descrive le opzioni di configurazione della definizione di risorsa personalizzata AWSCluster.

Definizione di un AWSCluster

AWSCluster è una risorsa Kubernetes personalizzata definita da GKE su AWS. Questa risorsa rappresenta un piano di controllo GKE su AWS.

Per creare un cluster da questo modello, copia il codice YAML seguente e completa i valori evidenziati definiti nelle definizioni dei campi spec.networking e spec.controlPlane. Quindi, applica il manifest delle risorse al servizio di gestione.

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

I sottocampi in spec sono descritti nelle sezioni seguenti.

spec.networking

Questo oggetto definisce la configurazione del networking a livello di cluster.

Nome Descrizione Tipo Esempio Obbligatorio
vpcID L'ID del VPC su cui viene eseguito il cluster. Il piano di controllo e i pool di nodi di un cluster utente vengono eseguiti in un unico VPC. string vpc-0814934042d983118
podAddressCIDRBlocks Intervallo di indirizzi IPv4 utilizzati dai pod del cluster. Attualmente è supportato un solo intervallo. L'intervallo non deve sovrapporsi ad alcuna subnet raggiungibile dalla tua rete. Puoi utilizzare lo stesso intervallo in più oggetti AWSCluster diversi. list(string) [10.1.0.0/16]
serviceAddressCIDRBlocks Intervallo di indirizzi IPv4 utilizzati dai servizi del cluster. Attualmente è supportato un solo intervallo. L'intervallo non deve sovrapporsi ad alcuna subnet raggiungibile dalla tua rete. Puoi utilizzare lo stesso intervallo in più oggetti AWSCluster diversi. list(string) [10.2.0.0/16]
serviceLoadBalancerSubnetIDs ID subnet in cui GKE su AWS può creare bilanciatori del carico pubblici o privati. GKE su AWS applica tag a ciascuna di queste subnet per supportare il bilanciamento del carico. Il supporto di ALB richiede più di una subnet specificata. list(string) [subnet-abcdefg, subnet-12345678]

spec.controlPlane

Questo oggetto include parametri comuni per il piano di controllo del cluster.

Nome Descrizione Tipo Esempio Obbligatorio
versione La versione GKE del piano di controllo. Per ulteriori informazioni, consulta Controllo delle versioni e upgrade ed upgrade di un cluster utente. string 1.25.5-gke.2100
instanceType Un tipo di istanza AWS EC2 per ogni replica del piano di controllo. Vedi Tipi di istanze supportati. string m5.large
keyName La coppia di chiavi AWS EC2 assegnata a ogni replica del piano di controllo. string my-key-pair
subnetIDs Un elenco di subnet VPC per le repliche del piano di controllo. list(string) [subnet-06a004869a1eae947]
securityGroupIDs GKE su AWS crea automaticamente gruppi di sicurezza con regole minime necessarie per un cluster funzionante. Se vuoi aggiungere altri gruppi di sicurezza con accesso alle repliche del piano di controllo, aggiungi i relativi ID a securityGroupIDs. list(string) [sg-0ec06559d997a796f] no
iamInstanceProfile Il nome del profilo di istanza EC2 AWS assegnato alle repliche del piano di controllo. string my-control-plane-profile
databaseEncryption.kmsKeyARN Il nome della risorsa Amazon (ARN) della chiave KMS di AWS che GKE su AWS utilizza per criptare i secret a livello di applicazione nei cluster. string arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
hub.membershipName Il nome dell'appartenenza Connetti utilizzato per register il cluster. string projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME
cloudOperations La configurazione di Cloud Logging e Cloud Monitoring per i nodi del piano di controllo. object {projectID: YOUR_PROJECT, location: us-central1, enableLogging: true, enableMonitoring: true} no
tags Metadati chiave/valore assegnati a ogni risorsa AWS che supporta AWSCluster. Per scoprire di più, consulta le best practice per il tagging. map(string) {Ambiente: Produzione, Team: Analytics} no
proxySecretName Nome scelto dall'utente di un secret utilizzato per definire proxy di rete specifici del cluster string proxy-secret-0 no
workloadIdentity Bucket Cloud Storage per la configurazione dell'identità del carico di lavoro. Contiene un singolo campo: oidcDiscoveryGCSBucket. object {oidcDiscoveryGCSBucket: my-bucket} no
rootVolume Parametri per i volumi radice delle repliche del piano di controllo. Contiene un oggetto definito nella sezione seguente. object {sizeGiB: 10}
etcd Parametri per volumi etcd. Contiene un oggetto definito nella sezione seguente. object {sizeGiB: 10}

spec.controlPlane.rootVolume e spec.etcd.rootVolume

Questi campi si applicano sia a spec.controlPlane.rootVolume che a spec.etcd.mainVolume.

Nome Descrizione Tipo Esempio Obbligatorio
sizeGiB Dimensioni del volume root in gigabyte. integer 10
volumeType Il tipo di volume AWS EBS del nodo del piano di controllo. Può essere gp2 (valore predefinito) o gp3. string gp2 no
IOPS La quantità di operazioni IO di cui è stato eseguito il provisioning al secondo (IOPS) per i volumi. Valido solo quando volumeType è GP3. Per maggiori informazioni, consulta la sezione Volumi SSD per uso generico (gp3). integer 5000 no
kmsKeyARN L'ARN della chiave KMS di AWS utilizzata per criptare il volume EBS. Per saperne di più, consulta Utilizzare una CMK gestita dal cliente per criptare i volumi. string arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee no

spec.authentication.awsIAM

Questo oggetto specifica i ruoli a cui è stato concesso l'accesso come amministratore del cluster con AWS IAM.

Nome Descrizione Tipo Esempio Obbligatorio
adminIdentityARNs ARN degli utenti o dei ruoli AWS IAM a cui è stato concesso l'accesso come amministratore del cluster. string arn:aws:iam::123456789012:user/admin Obbligatoria solo se si utilizza l'autenticazione AWS IAM.

spec.authentication.oidc

Puoi specificare più di un oggetto oidc. L'oggetto oidc è definito di seguito. Per maggiori informazioni, consulta la sezione Autenticazione con OIDC.

Campo Obbligatorio Descrizione Formato
certificateAuthorityData No Un certificato con codifica PEM con codifica Base64 per il provider OIDC. Per creare la stringa, codifica il certificato, incluse le intestazioni, in formato base64. Includi la stringa risultante in certificateAuthorityData come singola riga. Esempio: certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT== String
clientID ID per l'applicazione client che invia le richieste di autenticazione al provider OpenID. String
clientSecret No Secret condiviso tra applicazione client OIDC e provider OIDC. String
extraParams No Parametri chiave-valore aggiuntivi da inviare al provider OpenID. Se stai autorizzando un gruppo, passa resource=token-groups-claim.

Se il server di autorizzazione richiede il consenso, imposta extraParams su prompt=consent per l'autenticazione con Microsoft Azure e Okta. Per Google Cloud Identity, imposta extraParams su prompt=consent,access_type=offline.

Elenco delimitato da virgole
groupsClaim No JWT dichiara che il provider utilizza per restituire i gruppi di sicurezza. String
groupPrefix No Prefisso anteposto alle attestazioni dei gruppi per evitare conflitti con i nomi esistenti. Ad esempio, dati un gruppo foobar e il prefisso gid-, gid-foobar. String
issuerURI URL a cui vengono inviate le richieste di autorizzazione al tuo OpenID, ad esempio https://example.com/adfs. Il server API Kubernetes utilizza questo URL per individuare le chiavi pubbliche per la verifica dei token. L'URI deve utilizzare HTTPS. Stringa URL
kubectlRedirectURI L'URL di reindirizzamento utilizzato da "kubectl" per l'autorizzazione. Stringa URL
ambiti Ambiti aggiuntivi da inviare al provider OpenID. Microsoft Azure e Okta richiedono l'ambito offline_access. Elenco delimitato da virgole
userClaim No Attestazione JWT da utilizzare come nome utente. Il valore predefinito è "sub", che dovrebbe essere un identificatore univoco dell'utente finale. Puoi scegliere altre attestazioni, ad esempio indirizzo email o nome, a seconda del provider OpenID. Tuttavia, le attestazioni diverse dall'email sono precedute dal prefisso dell'URL dell'emittente per evitare conflitti di denominazione. String
userPrefix No Prefisso anteposto alle attestazioni dei nomi utente per evitare conflitti con i nomi esistenti. Se non fornisci questo campo e il nome utente è un valore diverso da un indirizzo email, il valore predefinito del prefisso sarà issuerurl#. Quando imposti userPrefix su -, la prefisso è disattivata. String