Questo argomento spiega come preparare Amazon Web Services (AWS) per l'esecuzione di Tanzu Kubernetes Grid.
Prima di poter utilizzare la CLI o l'interfaccia del programma di installazione di Tanzu per distribuire un cluster di gestione, è necessario preparare la macchina di bootstrap in cui eseguire la CLI di Tanzu e configurare l'account AWS (Amazon Web Services).
Se si sta installando Tanzu Kubernetes Grid in VMware Cloud on AWS, si sta eseguendo l'installazione in un ambiente vSphere. Vedere Preparazione di VMware Cloud on AWS in Preparazione della distribuzione dei cluster di gestione in un ambiente VMware Cloud per preparare l'ambiente e Preparazione della distribuzione dei cluster di gestione in vSphere per distribuire i cluster di gestione.
ImportanteTanzu Kubernetes Grid v2.4.x è l'ultima versione di TKG che supporta la creazione di cluster di gestione TKG autonomi in AWS. La possibilità di creare cluster di gestione TKG autonomi in AWS verrà rimossa nella versione Tanzu Kubernetes Grid v2.5.
A partire da ora, VMware consiglia di utilizzare Tanzu Mission Control per creare cluster AWS EKS nativi anziché creare nuovi cluster di gestione TKG in AWS. Per informazioni su come creare cluster AWS EKS nativi con Tanzu Mission Control, vedere Gestione del ciclo di vita dei cluster AWS EKS nella documentazione di Tanzu Mission Control.
Per ulteriori informazioni, vedere Deprecazione dei cluster di gestione e del carico di lavoro TKG in AWS e Azure nelle Note di rilascio di VMware Tanzu Kubernetes Grid v2.4.
CLUSTER_API_SERVER_PORT
quando si distribuisce il cluster.Il traffico è consentito tra la macchina di bootstrap locale e i repository di immagini elencati nel file Bill of Materials (BoM) del cluster di gestione, nella porta 443, per TCP.*
~/.config/tanzu/tkg/bom/
e il suo nome include la versione Tanzu Kubernetes Grid, ad esempio tkg-bom-v2.3.1+vmware.1.yaml
per la versione v2.3.1.imageRepository
, ad esempio projects.registry.vmware.com/tkg
, per trovare i record CNAME a cui consentire l'accesso.CLI di AWS installata in locale.
jq
installato in locale.
La guida della CLI di AWS utilizza jq
per elaborare JSON durante la creazione di coppie di chiavi SSH. Viene inoltre utilizzata per preparare le variabili di ambiente o configurazione quando si distribuisce Tanzu Kubernetes Grid utilizzando la CLI.
Per risolvere un problema noto con CAPA, impostare EXP_EXTERNAL_RESOURCE_GC=false
nell'ambiente locale o nel file di configurazione del cluster di gestione.
*In alternativa, vedere Preparazione di un ambiente con limitazioni Internet per l'installazione senza accesso alla rete esterna.
Per ogni cluster creato, Tanzu Kubernetes Grid utilizza un set di risorse nell'account AWS.
Risorsa | Tanzu Kubernetes Grid utilizza |
---|---|
VPC | 1 |
Indirizzi IP flessibili | 1 per zona di disponibilità* (ZD) |
Subnet | 2 per ZD per la connessione Internet, 1 per ZD internamente* |
Gruppi di sicurezza EC2 (VPC) | 4 |
Gateway Internet | 1 |
Gateway NAT | 1 per ZD per le distribuzioni predefinite* |
Istanze di EC2 del piano di controllo | 1 per ZD* |
*I cluster di sviluppo utilizzano una zona di disponibilità, mentre i cluster di produzione ne utilizzano 3.
AWS implementa limiti o quote predefiniti in queste risorse e consente di modificare i limiti. I limiti predefiniti sono in genere sufficienti per consentire di iniziare a creare e utilizzare i cluster, ma quando si aumenta il numero di cluster o carichi di lavoro, è possibile che questi limiti di AWS vengano superati impedendo a Tanzu Kubernetes Grid di creare nuovi cluster o distribuire nuovi carichi di lavoro.
VMware consiglia di valutare regolarmente i limiti specificati nell'account AWS e richiedere aumenti delle quote dei servizi in base alle necessità aziendali.
Le quote dei servizi più pertinenti sono:
Codice del servizio | Nome della quota | Codice della quota |
---|---|---|
vpc | Gateway Internet per regione | L-A4707A72 |
vpc | Gateway NAT per zona di disponibilità | L-FE5A380F |
vpc | VPC per regione | L-F678F1CE |
ec2 | Esecuzione di istanze standard su richiesta (A, C, D, H, I, M, R, T, Z) | L-1216C47A |
ec2 | IP flessibili EC2-VPC | L-0263D0A3 |
elasticloadbalancing | Bilanciamenti del carico classici per regione | L-E9E9831D |
Facoltativamente, è possibile condividere VPC anziché creare nuovi VPC, ad esempio un cluster del carico di lavoro che condivide un VPC con il relativo cluster di gestione.
Per informazioni sulle dimensioni delle istanze dei nodi del cluster, vedere Tipi di istanze di Amazon EC2 nella documentazione di AWS.
Tanzu Kubernetes Grid può essere distribuito in VPC senza gateway NAT collegati quando viene soddisfatta una delle condizioni seguenti:
Tanzu Kubernetes Grid non verifica l'esistenza di route specifiche nelle tabelle di routing. È quindi supportata la connettività Internet tramite gateway NAT VPC, istanze o appliance di EC2, gateway Internet, gateway di transito o DirectConnect.
La tabella seguente descrive esempi di dimensionamento per i cluster di gestione in AWS. Utilizzare questi dati come linee guida per assicurarsi che le dimensioni del cluster di gestione vengano modificate per gestire il numero di cluster del carico di lavoro che si intende distribuire. La colonna Dimensioni macchina virtuale carico di lavoro include le dimensioni delle macchine virtuali utilizzate per gli esempi nella colonna Può gestire….
Piano del cluster di gestione | Dimensioni macchina virtuale cluster di gestione | Può gestire… | Dimensioni macchina virtuale cluster carico di lavoro |
---|---|---|---|
3 nodi del piano di controllo e 3 nodi worker |
|
Esempi:
|
|
3 nodi del piano di controllo e 3 nodi worker |
|
Esempio: un cluster del carico di lavoro, distribuito con 3 nodi del piano di controllo e 500 nodi worker |
|
3 nodi del piano di controllo e 3 nodi worker |
|
Esempio: 200 cluster del carico di lavoro; ogni cluster è distribuito con 3 nodi del piano di controllo e 5 nodi worker |
|
Nelle sezioni seguenti sono elencate le autorizzazioni di cui Tanzu Kubernetes Grid necessita per distribuire e gestire cluster in AWS:
tanzu mc permissions aws set
o si seleziona la casella di controllo Crea automaticamente stack AWS CloudFormation (Automate creation of AWS CloudFormation Stack) nell'interfaccia del programma di installazione.
mc
è l'abbreviazione di management-cluster
.Per consentire a Tanzu Kubernetes Grid di distribuire cluster in AWS, è necessario creare uno stack CloudFormation tkg-cloud-vmware-com
nell'account AWS. Questo stack CloudFormation definisce le risorse di gestione di identità e accessi (IAM) di cui Tanzu Kubernetes Grid necessita per distribuire e gestire cluster in AWS.
Per creare lo stack, dopo aver completato i passaggi descritti in questo argomento, eseguire il comando tanzu mc permissions aws set
prima di distribuire il cluster oppure selezionare la casella di controllo Crea automaticamente stack AWS CloudFormation (Automate creation of AWS CloudFormation Stack) nell'interfaccia del programma di installazione, come descritto nella sezione Creazione di risorse IAM di Distribuzione dei cluster di gestione da un file di configurazione o Distribuzione dei cluster di gestione con l'interfaccia del programma di installazione. È necessario eseguire questa operazione una sola volta per ogni account AWS, indipendentemente dal fatto che si intenda utilizzare una o più regioni AWS per l'ambiente Tanzu Kubernetes Grid.
Quando si esegue tanzu mc permissions aws set
o si seleziona Crea automaticamente stack AWS CloudFormation (Automate creation of AWS CloudFormation Stack), vengono creati i profili, i ruoli e i criteri IAM seguenti. L'utente di cui vengono specificate le credenziali in Tanzu Kubernetes Grid quando si crea lo stack deve disporre delle autorizzazioni di amministratore per creare queste risorse IAM nell'account AWS.
Profili (Profiles) / AWS::IAM::InstanceProfile
:
control-plane.tkg.cloud.vmware.com
: utilizzato dalle istanze di EC2 che eseguono i componenti del piano di controllo di Kubernetes.nodes.tkg.cloud.vmware.com
: utilizzati da tutte le istanze di EC2 non del piano di controllo nei cluster Tanzu Kubernetes Grid.controllers.tkg.cloud.vmware.com
: possono essere utilizzati per il bootstrap di Tanzu Kubernetes Grid da una jump box in EC2 con il profilo dell'istanza collegato.Ruoli (Roles) / AWS::IAM::Role
: mappatura 1:1 ai profili delle istanze di AWS IAM precedenti:
control-plane.tkg.cloud.vmware.com
nodes.tkg.cloud.vmware.com
controllers.tkg.cloud.vmware.com
Criteri (Policies) / AWS::IAM::ManagedPolicy
:
arn:aws:iam::YOUR-ACCOUNT-ID:policy/control-plane.tkg.cloud.vmware.com
: collegato al ruolo IAM Piano di controllo (Control Plane) precedente.arn:aws:iam::YOUR-ACCOUNT-ID:policy/nodes.tkg.cloud.vmware.com
: collegato ai ruoli IAM Piano di controllo (Control Plane) e Nodi (Nodes) precedenti.arn:aws:iam::YOUR-ACCOUNT-ID:policy/controllers.tkg.cloud.vmware.com
: collegato ai ruoli IAM Piano di controllo (Control Plane) e Controller (Controllers) precedenti.Dopo che Tanzu Kubernetes Grid ha creato lo stack CloudFormation nell'account AWS, è possibile recuperarne il modello passando a CloudFormation > Stack (Stacks) nella console di AWS. Per ulteriori informazioni sugli stack CloudFormation, vedere Utilizzo degli stack nella documentazione di AWS.
In alternativa, anziché eseguire tanzu mc permissions aws set
o selezionare Crea automaticamente stack AWS CloudFormation (Automate creation of AWS CloudFormation Stack), è possibile recuperare il modello che Tanzu Kubernetes Grid utilizza per creare le risorse IAM precedenti e lo stack tkg-cloud-vmware-com
direttamente nell'account AWS. Per recuperare il modello, eseguire tanzu mc permissions aws generate-cloudformation-template
.
Le autorizzazioni IAM seguenti sono necessarie solo se si intende registrare il cluster di gestione in Tanzu Mission Control. Queste autorizzazioni vengono aggiunte automaticamente al ruolo IAM nodes.tkg.cloud.vmware.com
quando si esegue il comando tanzu mc permissions aws set
.
{
"Action": [
"servicequotas:ListServiceQuotas",
"ec2:DescribeKeyPairs",
"ec2:DescribeInstanceTypeOfferings",
"ec2:DescribeInstanceTypes",
"ec2:DescribeAvailabiilityZones",
"ec2:DescribeRegions",
"ec2:DescribeSubnets",
"ec2:DescribeRouteTables",
"ec2:DescribeVpcs",
"ec2:DescribeNatGateways",
"ec2:DescribeAddresses",
"elasticloadbalancing:DescribeLoadBalancers"
],
"Resource": [
"*"
],
"Effect": "Allow"
}
È possibile disattivare queste autorizzazioni impostando DISABLE_TMC_CLOUD_PERMISSIONS
su true
prima di eseguire tanzu mc permissions aws set
. Per ulteriori informazioni, vedere Registrazione del cluster di gestione in Tanzu Mission Control.
È necessario impostare manualmente le autorizzazioni seguenti, una volta per ogni account AWS.
Se si intende distribuire il cluster di gestione dall'interfaccia del programma di installazione, l'utente le cui credenziali vengono fornite a Tanzu Kubernetes Grid quando si distribuisce il cluster deve disporre delle autorizzazioni "ec2:DescribeInstanceTypeOfferings"
e "ec2:DescribeInstanceTypes"
. Se l'utente al momento non dispone di queste autorizzazioni, è possibile creare un criterio personalizzato che includa le autorizzazioni e collegarlo all'utente.
Affinché sia possibile consentire a Tanzu Kubernetes Grid di creare e gestire macchine virtuali in Amazon EC2, deve disporre di un account AWS insieme a:
È necessario impostare le credenziali dell'account per creare una coppia di chiavi SSH per la regione in cui si intende distribuire cluster Tanzu Kubernetes Grid.
Sono disponibili diverse opzioni per la configurazione delle credenziali dell'account AWS utilizzate per accedere a EC2. Le sottosezioni seguenti illustrano le varie opzioni.
VMware consiglia l'opzione Profili credenziali (Credential Profiles), gestita con il comando aws configure
. Questi profili vengono salvati in un file di configurazione condiviso locale, in genere in ~/.aws/config
.
Quando sono presenti più profili, vengono disposti in ordine decrescente di precedenza. Le possibili opzioni di configurazione delle credenziali sono:
Variabili del file di configurazione del cluster del carico di lavoro (solo per la creazione del cluster del carico di lavoro). Vedere File di configurazione del cluster di seguito.
Variabili di ambiente statiche locali. Vedere Variabili di ambiente locali di seguito.
(Opzione consigliata) Profili credenziali (Credential Profiles), che vengono aggiornati quando si esegue aws configure
. Questi profili vengono salvati in un file che si trova in ~/.aws/config
in Linux o macOS oppure in C:\Users\USERNAME\.aws\config
in Windows. Può essere denominato anche credentials
. Vedere Profili di credenziali di seguito.
Credenziali del profilo dell'istanza. È possibile associare un ruolo IAM a ciascuna istanza di Amazon Elastic Compute Cloud (Amazon EC2). Le credenziali temporanee per tale ruolo sono quindi disponibili per il codice in esecuzione nell'istanza. Le credenziali vengono fornite tramite il servizio metadati di Amazon EC2. Per ulteriori informazioni, vedere Ruoli IAM per AWS nella Guida dell'utente di Amazon EC2 per le istanze di Linux e Utilizzo dei profili delle istanze nella Guida dell'utente di IAM.
Un'opzione per configurare le credenziali di AWS consiste nell'impostare variabili di ambiente locali nella macchina di bootstrap. Per utilizzare le variabili di ambiente locali, impostare le variabili di ambiente seguenti per l'account AWS:
export AWS_ACCESS_KEY_ID=aws_access_key
, in cui aws_access_key
è la chiave di accesso di AWS.
export AWS_SECRET_ACCESS_KEY=aws_access_key_secret
, in cui aws_access_key_secret
è il segreto della chiave di accesso di AWS.
export AWS_SESSION_TOKEN=aws_session_token
, in cui aws_session_token
è il token della sessione AWS concesso all'account in uso. È necessario specificare questa variabile solo se si deve utilizzare una chiave di accesso temporanea. Per ulteriori informazioni sull'utilizzo delle chiavi di accesso temporanee, vedere Informazioni sulle credenziali di AWS e su come ottenerle.
export AWS_REGION=aws_region
, in cui aws_region
è la regione di AWS in cui si intende distribuire il cluster. Ad esempio, us-west-2
.
Per l'elenco completo delle regioni di AWS, vedere Endpoint del servizio AWS. Oltre alle normali regioni di AWS, è anche possibile specificare le regioni us-gov-east
e us-gov-west
in AWS GovCloud.
Tanzu Kubernetes Grid supporta le seguenti variabili di ambiente della CLI di AWS:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
AWS_SHARED_CREDENTIALS_FILE
AWS_CONFIG_FILE
AWS_REGION
AWS_PROFILE
Ulteriori informazioni su queste variabili sono disponibili nella Guida dell'utente dell'interfaccia della riga di comando di AWS.
Il metodo consigliato per utilizzare Tanzu Kubernetes Grid prevede l'uso del comando aws configure
per archiviare le credenziali di AWS in un file di credenziali o in un file di configurazione locale. Un file di configurazione di AWS può supportare una serie di meccanismi di autenticazione, che vanno dalle credenziali statiche a SSO tramite helper di credenziali esterni.
Un file di credenziali di AWS può essere utilizzato da più account, tra cui un profilo predefinito e profili denominati aggiuntivi. I file e i profili delle credenziali vengono applicati dopo le variabili di ambiente locali in base alla precedenza delle credenziali indicata sopra.
Per configurare i file e i profili delle credenziali per l'account AWS nella macchina di bootstrap, è possibile utilizzare il comando della CLI aws configure.
Per specificare quali file e profili delle credenziali di AWS utilizzare, è possibile impostare le variabili di ambiente seguenti:
export AWS_PROFILE=profile_name
in cui profile_name
è il nome del profilo che contiene la chiave di accesso di AWS che si desidera utilizzare. Se non si specifica un valore per questa variabile, viene utilizzato il nome del profilo default
. Per ulteriori informazioni sull'utilizzo dei profili denominati, vedere Profili denominati nella documentazione di AWS.
export AWS_SHARED_CREDENTIAL_FILE=path_to_credentials_file
in cui path_to_credentials_file
indica la posizione e il nome del file delle credenziali che contiene le informazioni sulla chiave di accesso di AWS. Se non si definisce questa variabile di ambiente, la posizione e il nome del file predefiniti sono $HOME/.aws/credentials
.
export AWS_CONFIG=path_to_config_file
in cui path_to_config_file
indica la posizione e il nome del file di configurazione che contiene la configurazione del profilo. Se non si definisce questa variabile di ambiente, la posizione e il nome del file predefiniti sono $HOME/.aws/config
. Se si specificano origini delle credenziali esplicite o si utilizzano processi esterni per le credenziali, è consigliabile utilizzare questo file.
Notatutti i profili denominati creati nelle credenziali o nei file di configurazione di AWS vengono visualizzati come opzioni selezionabili nel menu a discesa Profilo credenziali AWS (AWS Credential Profile) nell'interfaccia utente del programma di installazione di Tanzu Kubernetes Grid per AWS.
Per ulteriori informazioni sull'utilizzo delle credenziali di AWS e sulla catena di provider di credenziali di AWS predefinita, vedere Procedure consigliate per la gestione delle chiavi di accesso di AWS nella documentazione di AWS.
È possibile specificare le credenziali di AWS nel file di configurazione utilizzato per creare un cluster impostando le variabili seguenti:
AWS_ACCESS_KEY_ID
(con codifica base64)AWS_SECRET_ACCESS_KEY
(con codifica base64)AWS_SESSION_TOKEN
(facoltativo)AWS_ACCESS_KEY_ID
e AWS_SECRET_ACCESS_KEY
devono essere passati nel formato <encoded:(base64 encoded value)>
, ad esempio se l'ID della chiave di accesso di AWS è AKIAIOSFODNN7EXAMPLE
, la chiave di accesso segreta è wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
e il token della sessione è AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OP
, nel file di configurazione deve essere impostato quanto segue:
AWS_ACCESS_KEY_ID: <encoded:QUtJQUlPU0ZPRE5ON0VYQU1QTEU=>
AWS_SECRET_ACCESS_KEY: <encoded:d0phbHJYVXRuRkVNSS9LN01ERU5HL2JQeFJmaUNZRVhBTVBMRUtFWQ==>
AWS_SESSION_TOKEN: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Nelle versioni precedenti di Tanzu Kubernetes Grid le credenziali vengono salvate in un file di configurazione del cluster. In Tanzu Kubernetes Grid 1.4 e versioni successive le credenziali per AWS non vengono salvate in file di configurazione per impostazione predefinita.
Dopo aver impostato le credenziali dell'account AWS utilizzando le variabili di ambiente locali o in un file e un profilo di credenziali, è necessario generare una coppia di chiavi EC2 per l'account AWS. Tanzu Kubernetes Grid passa la parte della chiave pubblica di questa coppia di chiavi ad AWS per eseguire l'autenticazione in ogni regione.
NotaAWS supporta solo chiavi RSA. Il formato delle chiavi richieste da AWS è diverso da quello richiesto da vSphere. Non è possibile utilizzare la stessa coppia di chiavi per le distribuzioni vSphere e AWS.
Se non si dispone già di una coppia di chiavi EC2 per l'account e la regione utilizzati per distribuire il cluster di gestione, crearne una eseguendo i passaggi seguenti:
Per ogni regione che si intende utilizzare con Tanzu Kubernetes Grid, creare una coppia di chiavi denominata e generare un file .pem
che include il nome. Ad esempio, il comando seguente utilizza default
e salva il file con il nome default.pem
.
aws ec2 create-key-pair --key-name default --output json | jq .KeyMaterial -r > default.pem
Per creare una coppia di chiavi per una regione che non è quella predefinita nel profilo o impostata in locale come AWS_DEFAULT_REGION
, includere l'opzione --region
.
Accedere al dashboard di Amazon EC2 e passare a Rete e sicurezza (Network & Security) > Coppie di chiavi (Key Pairs) per verificare che la coppia di chiavi creata sia registrata nel proprio account.
Per le distribuzioni di produzione, è consigliabile abilitare la gestione delle identità per i cluster:
Se si utilizza Tanzu Kubernetes Grid in un ambiente con una connessione Internet esterna, dopo aver configurato la gestione delle identità è possibile distribuire cluster di gestione in AWS.