AWSManagementService

La risorsa AWSManagementService contiene le informazioni di configurazione per GKE su AWS Management Service.

Devi configurare un file YAML denominato anthos-gke.yaml prima di creare il servizio di gestione. Lo strumento anthos-gke utilizza la configurazione durante la creazione del servizio di gestione.

I contenuti del file anthos-gke.yaml dipendono dall'utilizzo di anthos-gke per creare un VPC (Virtual Private Cloud) AWS dedicato o dall'utilizzo di un VPC AWS esistente.

VPC dedicato

apiVersion: multicloud.cluster.gke.io/v1
kind: AWSManagementService
metadata:
  name: management
spec:
  version: ANTHOS_CLI_VERSION
  region: AWS_REGION
  authentication:
    awsIAM:
      adminIdentityARNs:
      - ADMIN_AWS_IAM_ARN
  kmsKeyARN: KMS_KEY_ARN
  databaseEncryption:
    kmsKeyARN: KMS_KEY_ARN
  googleCloud:
    projectID: GCP_PROJECT_ID
    serviceAccountKeys:
      managementService: MANAGEMENT_KEY_PATH
      connectAgent: CONNECT_KEY_PATH
      node: NODE_KEY_PATH
  iam:
      permissionsBoundary: IAM_PERMISSIONS_BOUNDARY
      path: IAM_PATH
  dedicatedVPC:
    vpcCIDRBlock: VPC_CIDR_BLOCK
    availabilityZones:
    - ZONE_1
    - ZONE_2
    - ZONE_3
    privateSubnetCIDRBlocks:
    - PRIVATE_CIDR_BLOCK_1
    - PRIVATE_CIDR_BLOCK_2
    - PRIVATE_CIDR_BLOCK_3
    publicSubnetCIDRBlocks:
    - PUBLIC_CIDR_BLOCK_1
    - PUBLIC_CIDR_BLOCK_2
    - PUBLIC_CIDR_BLOCK_3
  # Optional section
  rootVolume:
    volumeType: ROOT_VOLUME_TYPE
    iops: ROOT_VOLUME_IOPS
    kmsKeyARN: ROOT_VOLUME_KEY
  dataVolume:
    volumeType: DATA_VOLUME_TYPE
    iops: DATA_VOLUME_IOPS
    kmsKeyARN: DATA_VOLUME_KEY
  tags:
    tag-name: tag-value
  bastionHost:
    allowedSSHCIDRBlocks:
    - SSH_CIDR_BLOCK
    rootVolume:
      volumeType: ROOT_VOLUME_TYPE
      iops: ROOT_VOLUME_IOPS
      kmsKeyARN: ROOT_VOLUME_KEY
  bootstrapS3Bucket: BOOTSTRAP_S3_BUCKET
  proxy: PROXY_JSON_FILE
  terraform:
    invokeManually: No
    stateGCSBucket: GCS_BUCKET_NAME

VPC esistente

apiVersion: multicloud.cluster.gke.io/v1
kind: AWSManagementService
metadata:
  name: management
spec:
  version: ANTHOS_CLI_VERSION
  region: AWS_REGION
  authentication:
    awsIAM:
      adminIdentityARNs:
      - ADMIN_AWS_IAM_ARN
  kmsKeyARN: KMS_KEY_ARN
  databaseEncryption:
    kmsKeyARN: KMS_KEY_ARN
  securityGroupIDs:
    - SECURITY_GROUP_IDS
  googleCloud:
    projectID: GCP_PROJECT_ID
    serviceAccountKeys:
      managementService: MANAGEMENT_KEY_PATH
      connectAgent: CONNECT_KEY_PATH
      node: NODE_KEY_PATH
  iam:
      permissionsBoundary: IAM_PERMISSIONS_BOUNDARY
      path: IAM_PATH
  existingVPC:
    subnetID: [MANAGEMENT_SUBNET_ID]
    allowedSSHSecurityGroupIDs: [SSH_SECURITY_GROUPS]
  # Optional fields
  rootVolume:
    volumeType: ROOT_VOLUME_TYPE
    iops: ROOT_VOLUME_IOPS
    kmsKeyARN: ROOT_VOLUME_KEY
  dataVolume:
    volumeType: DATA_VOLUME_TYPE
    iops: DATA_VOLUME_IOPS
    kmsKeyARN: DATA_VOLUME_KEY
  ubuntuRepositoryMirror: 'packages.cloud.google.com'
  bastionHost:
    subnetID: [BASTION_HOST_SUBNET_ID]
    allowedSSHCIDRBlocks:
    - [SSH_CIDR_BLOCK]
    rootVolume:
      volumeType: ROOT_VOLUME_TYPE
      iops: ROOT_VOLUME_IOPS
      kmsKeyARN: ROOT_VOLUME_KEY
  bootstrapS3Bucket: BOOTSTRAP_S3_BUCKET
  tags:
    tag-name: tag-value
  proxy: PROXY_JSON_FILE
  terraform:
    invokeManually: No
    stateGCSBucket: GCS_BUCKET_NAME

Le sezioni seguenti descrivono questi campi.

spec.version

Il valore di spec.version è la versione del servizio di gestione creata da anthos- gke. La versione corrisponde all'output di anthos-gke version. Ad esempio, aws-1.14.1-gke.0.

spec.region

Il valore di spec.region corrisponde alla regione AWS in cui vuoi eseguire il deployment del servizio di gestione. Ad esempio: us-east-1.

spec.authentication.awsIAM

Il valore di spec.authentication.awsIAM.adminIdentityARNs è una stringa con il nome della risorsa Amazon (ARN) di un utente AWS IAM con autorizzazioni per creare un servizio di gestione di GKE su AWS. Ad esempio, arn:aws:iam::123456789:user/someuser.

spec.kmsKeyARN

Il valore di spec.kmsKeyARN è una stringa con il nome della risorsa Amazon (ARN) o l'alias della chiave KMS di AWS creata in Prerequisiti. GKE su AWS utilizza la chiave per la crittografia envelope. Ad esempio, arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee.

spec.databaseEncryption

Il valore di spec.databaseEncryption.kmsKeyARN è una stringa con nome risorsa Amazon (ARN) o alias chiave della chiave KMS di AWS che GKE su AWS utilizza per criptare i secret a livello di applicazione nei cluster. Ad esempio, arn:aws:kms:us-west-1:123456789:key/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee.

spec.securityGroupIDs

Il valore di spec.securityGroupIDs è un elenco di ID gruppo di sicurezza AWS aggiuntivi assegnati alla VM di Management Service. Ad esempio [sg-00123456789abcd, sg-00123456789def1]".

spec.dedicatedVPC

Questo campo rappresenta le impostazioni VPC desiderate.

Nome Descrizione Tipo Esempio
vpcCIDRBlock Il blocco CIDR del VPC AWS desiderato. Il valore deve essere compreso tra /16 e /28 bit. string 10.0.0.0/16
availabilityZones Zone di disponibilità in cui eseguire il deployment delle repliche del piano di controllo. Ogni zona avrà la propria subnet e necessita di un blocco CIDR separato. list(string) [us-east-1a, us-east-1b]
privateSubnetCIDRBlocks Blocco CIDR per le subnet private all'interno del VPC in ciascuna zona di disponibilità. Deve essere un sottoinsieme di vpcCIDRBlock. Devi avere una subnet per zona di disponibilità. list(string) [10.0.101.0/24, 10.0.102.0/24]
publicSubnetCIDRBlocks Blocco CIDR per le subnet pubbliche all'interno del VPC in ciascuna zona di disponibilità. Deve essere un sottoinsieme di vpcCIDRBlock. Devi avere una subnet per zona di disponibilità. list(string) [10.0.1.0/24, 10.0.2.0/24]
bastionAllowedSSHCIDRBlocks Blocchi CIDR per consentire l'accesso SSH in entrata. Questo campo è deprecato in GKE su AWS 1.5. Utilizza spec.bastionHost nella versione 1.5 o successive. string [104.132.0.0/14]

spec.existingVPC

I campi in spec.existingVPC configurano GKE su AWS in modo da utilizzare un VPC AWS esistente.

Nome Descrizione Tipo Esempio
subnetID ID subnet in cui viene eseguito il servizio di gestione. string subnet-00123456789ab
allowedSSHSecurityGroupIDs Elenco di ID gruppo di sicurezza a cui è consentito l'accesso SSH all'interno del VPC. elenco(stringa) [sg-00123456789abcd, sg-00123456789def1]

spec.googleCloud

I campi in spec.googleCloud consentono di configurare le chiavi del progetto Google Cloud e dell'account di servizio IAM.

Nome Descrizione Tipo Esempio
projectID Progetto Google Cloud. string my-gcp-project-id
serviceAccountKeys Percorsi dei file delle chiavi dell'account di servizio. serviceAccountKeys

spec.googleCloud.serviceAccountKeys

I campi in spec.googleCloud.serviceAccountKeys includono i percorsi file locali delle chiavi dell'account di servizio Google Cloud. Consulta i prerequisiti per le descrizioni dettagliate di ogni chiave.

Nome Descrizione Tipo Esempio
managementService Chiave dell'account di servizio utilizzata dal cluster di gestione string path/to/key/management-sa-key.json
connectAgent Chiave dell'account di servizio utilizzata dall'agente Connect di GKE Hub string path/to/key/hub-sa-key.json
node Chiave dell'account di servizio utilizzata dai nodi string path/to/key/node-sa-key.json

spec.iam

I campi in spec.iam configurano i parametri AWS IAM facoltativi per il tuo ambiente GKE in AWS.

Nome Descrizione Tipo Esempio
permissionsBoundary ARN dei Limiti delle autorizzazioni per i ruoli IAM string arn:aws:iam::126285863215:policy/testPolicyBoundary
percorso Percorso del ruolo IAM string /org_abc/team_abc/member_abc/

spec.bastionHost

La sezione spec.bastionHost è facoltativa e descrive un bastion host.

Un bastion host è un'istanza EC2 posizionata in una subnet pubblica. Consente l'accesso SSH in entrata da un blocco CIDR specificato e l'accesso SSH in uscita a GKE su servizio di gestione AWS e cluster utente.

Puoi creare un bastion host per le installazioni dedicatedVPC o existingVPC. Il campo allowedSSHCIDRBlocks specifica l'intervallo di indirizzi in entrata consentito e non deve essere vuoto.

Se non esiste un bastion host, GKE su AWS crea un nuovo bastion host.

  • Per un'installazione dedicatedVPC, GKE su AWS crea una subnet.
  • Per un'installazione di existingVPC, devi fornire una subnet per il bastion host e assicurarti che questa subnet sia connessa al tuo VPC.

Puoi modificare il tuo bastion host cambiando o eliminando il campo spec.bastionHost ed eseguendo anthos-gke aws management init, seguito da anthos-gke aws management apply.

Nome Descrizione Tipo Esempio
subnetID L'ID della subnet in cui viene eseguito il bastion host. Per le installazioni di existingVPC, la subnet deve consentire il traffico in entrata dalla quale potrai accedervi sulla porta 22. Inoltre, assicurati che il tuo VPC consenta l'accesso in entrata da questa subnet. Per le installazioni dedicatedVPC, non specificare questo campo. GKE su AWS eseguirà il provisioning della subnet con l'accesso richiesto. string subnet-003bdf7b0f5e21e45
allowedSSHCIDRBlocks Blocchi CIDR per consentire l'accesso SSH in entrata. list(string) [104.132.0.0/14]
rootVolume Un oggetto che descrive il volume principale del bastion host. object {volumeType: gp2}

spec.rootVolume, spec.dataVolume e spec.bastionHost.rootVolume

Nella tabella seguente vengono descritti i campi comuni per i seguenti oggetti:

  • spec.rootVolume, per i volumi di disco radice del piano di controllo
  • spec.dataVolume, per i volumi del disco dati del piano di controllo
  • spec.bastionHost.rootVolume, per i volumi del disco radice del bastion host
Nome Descrizione Tipo Esempio Obbligatorio
volumeType Il tipo di volume AWS EBS del nodo. 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.tags

Nome Descrizione Tipo Esempio
tags Metadati facoltativi delle coppie chiave/valore assegnati a ogni risorsa AWS che supporta il servizio di gestione. map(string) {Ambiente: Produzione, Team: Analytics}

spec.proxy

Il campo spec.proxy consente di configurare un proxy HTTP/HTTPS facoltativo.

Nome Descrizione Tipo Esempio
proxy Percorso del file di configurazione proxy. Percorso relativo da anthos-gke.yaml proxy.json

spec.bootstrapS3Bucket

Il campo spec.bootstrapS3Bucket configura un nome di bucket S3 per GKE su AWS .

Nome Descrizione Tipo Esempio
bootstrapS3Bucket Campo facoltativo per il nome del bucket AWS S3 in cui GKE su AWS archivia le informazioni di configurazione. Se vuoi creare più servizi di gestione GKE su AWS nella stessa regione AWS, imposta questo valore su un nome di bucket univoco. string example-s3-bucket

spec.terraform

Il campo spec.terraform.invokeManually configura il comando anthos-gke in modo da non creare un servizio di gestione.

Nome Descrizione Tipo Esempio
invokeManually Campo facoltativo che configura lo strumento a riga di comando anthos-gke in modo che non crei un servizio di gestione dopo aver creato e convalidato la configurazione. Se imposti invokeManually su Yes, puoi modificare e applicare manualmente i file di configurazione Terraform. Yes, No Yes
stateGCSBucket Campo facoltativo che specifica un bucket Google Cloud Storage preesistente per consentire a Terraform di archiviare i propri dati di configurazione. string example-GCS-bucket