Installazione del servizio di gestione

Un servizio di gestione crea, aggiorna ed elimina i cluster GKE su AWS. Questo argomento spiega come creare un servizio di gestione all'interno di un virtual private cloud (VPC) AWS dedicato. Se hai già un VPC, consulta Integrazione con l'infrastruttura esistente.

Prima di iniziare

Prima di iniziare a utilizzare GKE su AWS, assicurati di aver eseguito le seguenti attività:

  • Completa i prerequisiti.
  • Esegui l'autenticazione con Google Cloud CLI.
    gcloud auth login && \
        gcloud auth application-default login

Valori necessari

Per completare questo argomento, devi disporre di quanto segue tra i prerequisiti:

  • Alias o ARN delle chiavi KMS
  • Google Cloud Chiavi account di servizio
  • ProgettoGoogle Cloud
  • Gli strumenti a riga di comando aws, terraform e anthos-gke sono installati e configurati.
  • La regione AWS e le zone di disponibilità in cui GKE on AWS crea il tuo cluster di gestione.

Configura il servizio di gestione

Configura il servizio di gestione GKE su AWS con un file YAML. Il file assomiglia a una configurazione di risorse personalizzate di Kubernetes, ma non è una rappresentazione di una risorsa.

  1. Apri un terminale sul computer su cui hai installato e configurato gli strumenti a riga di comando aws, terraform e anthos-gke.

  2. Crea una directory vuota per la configurazione di GKE su AWS e passa a questa directory. La documentazione di GKE su AWS utilizza anthos-aws come directory di configurazione di esempio.

    mkdir anthos-aws
    cd anthos-aws
    
  3. Crea un file denominato anthos-gke.yaml in un editor di testo. Incolla i contenuti seguenti nel file.

     apiVersion: multicloud.cluster.gke.io/v1
     kind: AWSManagementService
     metadata:
       name: management
     spec:
       version: aws-1.14.1-gke.0
       region: AWS_REGION
       authentication:
         awsIAM:
           adminIdentityARNs:
           - ADMIN_AWS_IAM_ARN
       kmsKeyARN: KMS_KEY_ARN
       databaseEncryption:
         kmsKeyARN: DATABASE_KMS_KEY_ARN
       googleCloud:
         projectID: GCP_PROJECT_ID
         serviceAccountKeys:
           managementService: MANAGEMENT_KEY_PATH
           connectAgent: HUB_KEY_PATH
           node: NODE_KEY_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
       bastionHost:
         allowedSSHCIDRBlocks:
         - SSH_CIDR_BLOCK
       proxy: PROXY_JSON_FILE # optional
    

    Sostituisci i seguenti valori:

    • AWS_REGION con la regione AWS in cui eseguire il cluster.

    • ADMIN_AWS_IAM_ARN con il nome della risorsa Amazon dell'utente con autorizzazioni AWS IAM per creare un servizio di gestione. Per ottenere l'ARN dell'utente autenticato nello strumento aws, esegui aws sts get-caller-identity.

    • KMS_KEY_ARN con il nome della risorsa Amazon della chiave AWS KMS o dell'alias della chiave KMS che protegge i dati del servizio di gestione durante la creazione. Ad esempio, arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab. Se non hai l'ARN, esegui aws kms list-keys per recuperare un elenco di ARN.

    • DATABASE_KMS_KEY_ARN con l'Amazon Resource Name della chiave AWS KMS o dell'alias della chiave che protegge i database etcd del tuo servizio di gestione, ad esempio arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab.

    • GCP_PROJECT_ID con l' Google Cloud ID progetto che ospita il tuo ambiente GKE Enterprise.

    • MANAGEMENT_KEY_PATH con la posizione della Google Cloud chiave dell'account di servizio di gestione.

    • HUB_KEY_PATH con la posizione della chiave dell'account di servizio Google Cloud Collega.

    • NODE_KEY_PATH con la posizione della chiave dell'account di servizio del nodo GKE su AWS.

    • VPC_CIDR_BLOCK con l'intervallo CIDR totale degli indirizzi IP per il VPC AWS creato da anthos-gke. Ad esempio, 10.0.0.0/16. Per ulteriori informazioni, consulta Nozioni di base su VPC e subnet nella documentazione di AWS.

    • ZONE_1, ZONE_2 e ZONE_3 con le zone di disponibilità AWS EC2 dove vuoi creare nodi e control plane. GKE su AWS crea subnet in queste zone. Quando utilizzi anthos-gke per generare la configurazione per un cluster utente, GKE su AWS crea piani di controllo e pool di nodi in queste zone di disponibilità, ad esempio us-east-1a.
      Se vuoi utilizzare anthos-gke per creare cluster utente in una sola zona, puoi rimuovere ZONE_2 e ZONE_3.

    • PRIVATE_CIDR_BLOCK_1, PRIVATE_CIDR_BLOCK_2 e PRIVATE_CIDR_BLOCK_3, con il blocco CIDR per la sottonet privata. I componenti di GKE su AWS, come il servizio di gestione, vengono eseguiti nella subnet privata. Questa subnet deve rientrare nell'intervallo CIDR della VPC specificato in vpcCIDRBlock. È necessaria una subnet per ogni zona di disponibilità, ad esempio 10.0.1.0/24.

    • PUBLIC_CIDR_BLOCK_1, PUBLIC_CIDR_BLOCK_2 e PUBLIC_CIDR_BLOCK_3, con i blocchi CIDR per la subnet pubblica. È necessaria una subnet per ogni zona di disponibilità. La sottorete pubblica espone i servizi di cluster, come i bilanciatori del carico, ai gruppi di sicurezza e agli intervalli di indirizzi specificati nelle ACL di rete e nei gruppi di sicurezza di AWS, ad esempio 10.0.100.0/24.

    • SSH_CIDR_BLOCK con il blocco CIDR che consente l'accesso SSH in entrata al tuo bastion host, ad esempio 203.0.113.0/24. Se vuoi consentire SSH da qualsiasi indirizzo IP, utilizza 0.0.0.0/0.

    • (Facoltativo) PROXY_JSON_FILE con il percorso relativo del file di configurazione del proxy. Se non utilizzi un proxy, elimina questa riga.

  4. Esegui anthos-gke aws management init per generare un file anthos-gke.status.yaml con una configurazione aggiuntiva. Il comando init convalida anche l'oggetto AWSManagementService nel file anthos-gke.yaml.

    anthos-gke aws management init
    
  5. Esegui anthos-gke aws management apply per creare il servizio di gestione su AWS.

    anthos-gke aws management apply
    

    Il completamento del comando anthos-gke aws management apply potrebbe richiedere fino a dieci minuti. Al termine del comando, il servizio di gestione viene eseguito su AWS.

Campi facoltativi

Il file anthos-gke.yaml riportato sopra mostra un insieme tipico di campi di cui la maggior parte dei clienti avrà bisogno. La configurazione in anthos-gke.yaml supporta anche un certo numero di campi facoltativi. Questi includono:

  • spec.bootstrapS3Bucket per specificare un bucket AWS S3 per i dati di configurazione di GKE su AWS
  • spec.tags per taggare le risorse AWS correlate al cluster
  • spec.securityGroupIDs per assegnare ID gruppo di sicurezza aggiuntivi al cluster di gestione
  • spec.*Volume e i relativi campi secondari volumeType, iops e kmsKeyARN per ottimizzare i parametri del volume EBS
  • spec.terraform.stateGCSBucket per specificare un bucket del servizio Google Cloud per i dati di configurazione di Terraform

Per ulteriori informazioni su tutti i campi supportati in anthos-gke.yaml, consulta la documentazione di riferimento di AWS Management Service.

Connettiti al servizio di gestione

Successivamente, utilizza anthos-gke per connetterti e autenticarti al servizio di gestione GKE su AWS.

Quando crei un servizio di gestione utilizzando le impostazioni predefinite, il piano di controllo ha un indirizzo IP privato non accessibile dall'esterno del VPC AWS. Puoi accedere al tuo servizio di gestione in uno dei seguenti tre modi:

  • tramite il servizio AWS Direct Connect di Amazon
  • tramite un bastion host che esegue il proxy delle connessioni tra internet e GKE sulle sottoreti AWS
  • tramite una VPN

Quando crei un servizio di gestione in una VPC dedicata, GKE on AWS crea automaticamente un bastion host in una subnet pubblica. Se ti colleghi al servizio di gestione tramite una VPN o AWS Direct Connect, questo bastion host non è necessario. In caso contrario, per connetterti al servizio di gestione tramite l'bastion host, segui questi passaggi:

  1. Utilizza lo strumento terraform per generare lo script che apre un tunnel SSH all'bastion host. Scegli la versione di Terraform, quindi esegui i seguenti comandi:

    Terraform 0.12, 0.13

    terraform output bastion_tunnel > bastion-tunnel.sh
    chmod 755 bastion-tunnel.sh
    

    Terraform 0.14.3 o versioni successive

    terraform output -raw bastion_tunnel > bastion-tunnel.sh
    chmod 755 bastion-tunnel.sh
    

    Terraform crea lo script bastion-tunnel.sh che fa riferimento alla chiave SSH dell'host bastione in ~/.ssh/anthos-gke.

  2. Per aprire il tunnel, esegui lo script bastion-tunnel.sh. Il tunnel inoltra da localhost:8118 all'bastion host.

    Per aprire un tunnel per l'bastion host, esegui il seguente comando:

    ./bastion-tunnel.sh -N -4
    

    I messaggi del tunnel SSH vengono visualizzati in questa finestra. Quando è tutto pronto, per chiudere la connessione, interrompi il processo utilizzando Ctrl+C o chiudendo la finestra.

  3. Apri un nuovo terminale e cambia directory in quella con la configurazione GKE su AWS.

  4. Genera un kubeconfig per l'autenticazione. Utilizza anthos-gke per aggiungere le credenziali alla configurazione memorizzata in ~/.kube/config.

    anthos-gke aws management get-credentials
    
  5. Verifica di essere in grado di connetterti al servizio di gestione con kubectl.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl cluster-info
    

    L'output include l'URL del server dell'API del servizio di gestione.

Passaggi successivi