Questo argomento descrive le opzioni di configurazione della definizione di risorsa personalizzata AWSCluster.
Definizione di un AWSCluster
AWSCluster è una risorsa personalizzata di Kubernetes definita da
GKE su AWS. Questa risorsa rappresenta un control plane
GKE su AWS.
Per creare un cluster da questo modello, copia il seguente YAML e completa i valori evidenziati definiti nelle definizioni dei campi spec.networking e spec.controlPlane. quindi applica
il manifest della risorsa al tuo 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 di rete a livello di cluster.
| Nome | Descrizione | Tipo | Esempio | Obbligatorio | 
|---|---|---|---|---|
| vpcID | L'ID del VPC in cui viene eseguito il cluster. Il control plane e i node pool di un cluster utente vengono eseguiti in un singolo VPC. | string | vpc-0814934042d983118 | sì | 
| podAddressCIDRBlocks | Intervallo di indirizzi IPv4 utilizzati dai pod del cluster. Al momento è supportato un solo intervallo. L'intervallo non deve sovrapporsi ad alcuna subnet raggiungibile dalla tua rete. È sicuro utilizzare lo stesso intervallo in più oggetti AWSCluster diversi. | list(string) | [10.1.0.0/16] | sì | 
| serviceAddressCIDRBlocks | Intervallo di indirizzi IPv4 utilizzati dai servizi del cluster. Al momento è supportato un solo intervallo. L'intervallo non deve sovrapporsi ad alcuna subnet raggiungibile dalla tua rete. È sicuro utilizzare lo stesso intervallo in più oggetti AWSCluster diversi. | list(string) | [10.2.0.0/16] | sì | 
| 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 ALB richiede più di una subnet specificata. | list(string) | [subnet-abcdefg, subnet-12345678] | 
spec.controlPlane
Questo oggetto include parametri comuni per il control plane del cluster.
| Nome | Descrizione | Tipo | Esempio | Obbligatorio | 
|---|---|---|---|---|
| versione | La versione GKE del control plane. Per ulteriori informazioni, vedi Controllo delle versioni e upgrade e Upgrade di un cluster utente. | string | 1.25.5-gke.2100 | sì | 
| instanceType | Un tipo di istanza AWS EC2 per ogni replica del control plane. Consulta la sezione Tipi di istanza supportati. | string | m5.large | sì | 
| keyName | La coppia di chiavi AWS EC2 assegnata a ogni replica del control plane. | string | my-key-pair | sì | 
| subnetIDs | Un elenco di subnet VPC per le repliche del control plane. | list(string) | [subnet-06a004869a1eae947] | sì | 
| securityGroupIDs | GKE su AWS crea automaticamente gruppi di sicurezza con le regole minime necessarie per un cluster funzionante. Se vuoi aggiungere altri gruppi di sicurezza con accesso alle repliche del control plane, aggiungi i relativi ID a securityGroupIDs. | list(string) | [sg-0ec06559d997a796f] | no | 
| iamInstanceProfile | Il nome del profilo dell'istanza EC2 AWS assegnato alle repliche del control plane. | string | my-control-plane-profile | sì | 
| databaseEncryption.kmsKeyARN | L'Amazon Resource Name (ARN) della chiave AWS KMS 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'abbonamento Connect utilizzato per registrare il cluster. | string | projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME | |
| cloudOperations | La configurazione di Cloud Logging e Cloud Monitoring per i nodi del control plane. | object | {projectID: YOUR_PROJECT, location: us-central1, enableLogging: true, enableMonitoring: true} | no | 
| Tag | Metadati chiave/valore assegnati a ogni risorsa AWS che supporta AWSCluster. Per saperne di più, consulta le best practice di tagging. | map(string) | {Environment: Production, Team: Analytics} | no | 
| proxySecretName | Nome scelto dall'utente di un secret utilizzato per definire i proxy di rete specifici del cluster | string | proxy-secret-0 | no | 
| workloadIdentity | Bucket Cloud Storage per la configurazione di Workload Identity. Contiene un singolo campo: oidcDiscoveryGCSBucket. | object | {oidcDiscoveryGCSBucket: my-bucket} | no | 
| rootVolume | Parametri per i volumi root delle repliche del control plane. Contiene un oggetto definito nella sezione seguente. | object | {sizeGiB: 10} | sì | 
| etcd | Parametri per i volumi etcd. Contiene un oggetto definito nella sezione seguente. | object | {sizeGiB: 10} | sì | 
spec.controlPlane.rootVolume e spec.etcd.rootVolume
Questi campi si applicano sia a spec.controlPlane.rootVolume sia a
spec.etcd.mainVolume.
| Nome | Descrizione | Tipo | Esempio | Obbligatorio | 
|---|---|---|---|---|
| sizeGiB | Dimensioni del volume root in gigabyte. | integer | 10 | sì | 
| volumeType | Il tipo di volume EBS del nodo del control plane. Può essere gp2(predefinito) ogp3. | string | gp2 | no | 
| iops | La quantità di operazioni di I/O al secondo (IOPS) di cui è stato eseguito il provisioning per i volumi. Valido solo quando volumeTypeèGP3. Per ulteriori informazioni, vedi Volumi SSD per uso generico (gp3). | integer | 5000 | no | 
| kmsKeyARN | L'ARN della chiave AWS KMS utilizzata per criptare il volume EBS. Per saperne di più, consulta Utilizzo di una chiave 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 di amministratore del cluster con AWS IAM.
| Nome | Descrizione | Tipo | Esempio | Obbligatorio | 
|---|---|---|---|---|
| adminIdentityARNs | ARN di utenti o ruoli AWS IAM a cui è stato concesso l'accesso amministratore cluster. | string | arn:aws:iam::123456789012:user/admin | Obbligatorio solo se utilizzi l'autenticazione AWS IAM. | 
spec.authentication.oidc
Puoi specificare più di un oggetto oidc. L'oggetto oidc è definito di seguito.
Per maggiori informazioni, consulta 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 base64. Includi la stringa
  risultante in certificateAuthorityDatacome riga singola. Esempio:certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT== | Stringa | 
| clientID | Sì | ID per l'applicazione client che effettua richieste di autenticazione al provider OpenID. | Stringa | 
| clientSecret | No | Secret condiviso tra applicazione client OIDC e provider OIDC. | Stringa | 
| extraParams | No | Parametri coppia chiave-valore aggiuntivi da inviare al provider OpenID. Se stai
    autorizzando un gruppo, inserisci resource=token-groups-claim.
      Se il server di autorizzazione richiede il consenso, per l'autenticazione con
    Microsoft Azure e Okta, imposta  | Elenco delimitato da virgole | 
| groupsClaim | No | Attestazione JWT utilizzata dal provider per restituire i tuoi gruppi di sicurezza. | Stringa | 
| groupPrefix | No | Prefisso anteposto alle attestazioni dei gruppi per evitare conflitti con i nomi esistenti. Ad esempio, dato un gruppo foobar e un prefisso gid-, gid-foobar. | Stringa | 
| issuerURI | Sì | 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 rilevare le chiavi pubbliche per la verifica dei token. L'URI deve utilizzare HTTPS. | Stringa URL | 
| kubectlRedirectURI | Sì | L'URL di reindirizzamento utilizzato da "kubectl" per l'autorizzazione. | Stringa URL | 
| ambiti | Sì | 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 email o nome, a seconda del provider OpenID. Tuttavia, alle attestazioni diverse dall'indirizzo email viene aggiunto come prefisso l'URL dell'emittente per evitare conflitti di denominazione. | Stringa | 
| 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 prefisso viene impostato come predefinito su issuerurl#. Quando impostiuserPrefixsu-, l'aggiunta del prefisso viene disattivata. | Stringa |