AWSManagementService

La risorsa AWSManagementService contiene informazioni di configurazione per il servizio di gestione GKE su AWS.

Prima di creare il servizio di gestione, configura un file YAML denominato anthos-gke.yaml. Lo strumento anthos-gke utilizza la configurazione durante la creazione del servizio di gestione.

I contenuti del file anthos-gke.yaml dipendono dal fatto che utilizzi anthos-gke per creare un Virtual Private Cloud (VPC) AWS dedicato, o se utilizzi 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 creato 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 è la 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 l'Amazon Resource Name (ARN) di un utente IAM AWS con autorizzazioni per creare un servizio di gestione GKE su AWS. Ad esempio arn:aws:iam::123456789:user/someuser.

spec.kmsKeyARN

Il valore di spec.kmsKeyARN è una stringa con l'Amazon Resource Name (ARN) o l'alias della chiave AWS KMS 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 l'Amazon Resource Name (ARN) o l'alias della 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 di gruppi di sicurezza AWS aggiuntivi assegnati alla VM del servizio di gestione. 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 che preferisci. 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 control plane. 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 ogni 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 ogni 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 da cui consentire l'accesso SSH in entrata. Questo campo è obsoleto 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 per utilizzare un VPC AWS esistente.

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

spec.googleCloud

I campi in spec.googleCloud configurano il tuo Google Cloud progetto e le chiavi dell'account di servizio IAM.

Nome Descrizione Tipo Esempio
projectID Google Cloud Google Cloud progetto. string my-gcp-project-id
serviceAccountKeys Percorsi dei file delle chiavi del service account. serviceAccountKeys

spec.googleCloud.serviceAccountKeys

I campi in spec.googleCloud.serviceAccountKeys includono i percorsi dei file locali alle chiavi dell'account di servizio GCP. Consulta la sezione Prerequisiti per descrizioni dettagliate di ogni chiave.

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

spec.iam

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

Nome Descrizione Tipo Esempio
permissionsBoundary ARN dei confini 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 inserita in una subnet pubblica. Consente l'accesso SSH in entrata da un blocco CIDR specificato e l'accesso SSH in uscita ai cluster di gestione e utente GKE su AWS.

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

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

  • Per un'installazione dedicatedVPC, GKE su AWS crea una subnet.
  • Per un'installazione di existingVPC, devi fornire una subnet per l'bastion host e assicurarti che questa subnet abbia la connettività al tuo VPC.

Puoi modificare l'bastion host modificando 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 l'bastion host. Per le installazioni di existingVPC, la subnet deve consentire l'ingresso da dove vi accederai sulla porta 22. Inoltre, assicurati che il 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 da cui consentire l'accesso SSH in entrata. list(string) [104.132.0.0/14]
rootVolume Un oggetto che descrive il volume radice dell'bastion host. object {volumeType: gp2}

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

La tabella seguente descrive i campi comuni per i seguenti oggetti:

  • spec.rootVolume, per i volumi del disco principale del control plane
  • spec.dataVolume, per i volumi del disco dati del control plane
  • spec.bastionHost.rootVolume, per i volumi del disco di avvio del bastion host
Nome Descrizione Tipo Esempio Obbligatorio
volumeType Il tipo di volume EBS del nodo. Può essere gp2 (predefinito) o gp3. 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.tags

Nome Descrizione Tipo Esempio
Tag Metadati chiave/valore facoltativi assegnati a ogni risorsa AWS che supporta il servizio di gestione. map(string) {Environment: Production, Team: Analytics}

spec.proxy

Il campo spec.proxy configura un proxy HTTP/HTTPS facoltativo.

Nome Descrizione Tipo Esempio
proxy Percorso del file di configurazione del 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 bucket univoco. string example-s3-bucket

spec.terraform

Il campo spec.terraform.invokeManually configura il comando anthos-gke in modo che non crei 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 in cui Terraform deve archiviare i dati di configurazione. string example-GCS-bucket