Se sei uno sviluppatore, probabilmente vorresti distribuire applicazioni containerizzate su Kubernetes. Ma la domanda è: come? Perché non provare AWS EKS CLI?
In questo tutorial, imparerai come configurare AWS EKS CLI per creare un cluster Kubernetes, in modo da poterti concentrare sul tuo codice anziché sulla gestione dell’infrastruttura.
Continua a leggere e inizia a creare il tuo cluster oggi stesso!
Prerequisito
Questo tutorial sarà una dimostrazione pratica. Se desideri seguirmi, assicurati di avere un PC e un account AWS. Se non hai un account AWS, è disponibile un account gratuito tier.
Creazione di un utente amministratore
Prima di creare un cluster Kubernetes, creerai un utente amministratore. Un utente amministratore ti consente di accedere alla console AWS per configurare il tuo cluster. Inizia questo tutorial creando un utente con le autorizzazioni di amministratore tramite la Console AWS.
1. Accedi alla tua Console AWS e vai alla dashboard IAM.
Fai clic su Utenti (pannello di sinistra) -> Aggiungi utenti (in alto a destra) come mostrato di seguito per iniziare ad aggiungere utenti.

2. Successivamente, fornisci un nome utente nel campo Nome utente, qui viene utilizzato K8-Admin, seleziona l’opzione Accesso programmatico – Accesso tramite programma e clicca su Avanti: Autorizzazioni.
Stai selezionando l’opzione Accesso programmatico – Accesso tramite programma poiché è accessibile tramite programmazione. Di conseguenza, puoi utilizzare un’applicazione per comunicare direttamente con AWS su quali azioni intraprendere.

3. Clicca sull’opzione Allega direttamente le politiche esistenti, seleziona la politica AdministratorAccess e clicca su Avanti: Tag.
La politica AdministratorAccess dà all’utente (K8-Admin) pieno accesso ad AWS e altro come segue:
- Consente all’utente di utilizzare CloudFormation
- Creare istanze EC2 e registri CloudWatch
- Configurare bilanciatori di carico elastici .

4. Clicca su Avanti: Riepilogo per saltare l’aggiunta di tag.

5. Infine, verifica i dettagli dell’utente e clicca su Crea utente per finalizzare la creazione dell’utente amministratore.

Una volta completata la creazione dell’utente amministratore, riceverai un messaggio di Successo in alto nella schermata, come quello riportato di seguito. Prendi nota dell’ID chiave di accesso e della chiave di accesso segreta poiché utilizzerai queste chiavi per effettuare l’accesso successivamente.

Lancio di un’istanza EC2
Ora che hai creato K8-Admin, puoi creare la tua prima istanza EC2. Utilizzerai questa istanza come nodo master, dove eseguirai i comandi per creare il cluster.
1. Vai alla dashboard di EC2, fai clic su EC2, quindi su Launch Instances nella parte più a destra della pagina. Ciò reindirizzerà il tuo browser a una pagina in cui puoi scegliere un’immagine di macchina Amazon (AMI) (passo due).

2. Successivamente, fai clic su Select accanto (a destra) all’AMAZON Linux 2 AMI (HVM) dalla lista, come mostrato di seguito.
AMAZON Linux 2 AMI (HVM) offre il kernel Linux 5.10 ottimizzato per le prestazioni ottimali dell’ultima generazione di hardware. Questa AMI ha anche molte funzionalità richieste dai cluster Kubernetes di livello di produzione.

3. Mantieni il valore predefinito (t2.micro) per il tipo di istanza e fai clic su Avanti: Configura i dettagli dell’istanza per configurare l’istanza.

4. Abilita l’opzione Auto-assegna indirizzo IP pubblico e fai clic su Avanti: Aggiungi archiviazione. Questa opzione garantisce che ciascuno dei tuoi contenitori possa accedere all’indirizzo IP pubblico del tuo nodo master Kubernetes e delle tue istanze EC2.

5. Mantenere il valore predefinito (Root) nella pagina Aggiungi Archiviazione e fare clic su Avanti: Aggiungi tag. Il volume Root è necessario per leggere e scrivere dati dall’interno dell’istanza.

6. Ignorare l’aggiunta di tag e fare clic su Avanti: Configura il Gruppo di Sicurezza.

7. Mantenere le impostazioni predefinite sul gruppo di sicurezza, come mostrato di seguito, e fare clic su Revisiona e Avvia.

8. Rivedere i dettagli del lancio dell’istanza e fare clic su Avvia per avviare l’istanza. Comparirà una finestra pop-up in cui potrai scegliere di selezionare una chiave key pair esistente o crearne una nuova (passaggio nove).

9. Nella finestra di dialogo pop-up, configurare la chiave con i seguenti passaggi:
- Selezionare Crea una nuova chiave nel menu a discesa.
- Scegliere RSA come tipo di chiave Key pair type.
- Fornire il nome preferito per la Key pair name. Ma per questo tutorial, il nome della chiave è impostato su my-nvkp.
- Fare clic su Scarica Key Pair, quindi su Avvia istanze.

L’istanza potrebbe impiegare uno o due minuti per essere completamente avviata. Una volta che l’istanza è in esecuzione, la vedrai elencata nel tuo dashboard EC2, come mostrato di seguito.

Configurazione dello Strumento AWS CLI
Ora che la tua istanza è in esecuzione, è il momento di configurare gli strumenti della riga di comando (CLI). Utilizzare gli strumenti CLI in combinazione con il tuo account AWS è essenziale per creare il tuo cluster Kubernetes.
1. Dal tuo cruscotto EC2, seleziona la casella per scegliere l’istanza, come mostrato di seguito. Fai clic su Connect per inizializzare la connessione all’istanza.

2. Successivamente, fai clic sul pulsante Connect per connetterti all’istanza che hai selezionato in precedenza al passo uno.

Una volta connesso alla tua istanza EC2, il tuo browser reindirizza alla terminale interattiva mostrata di seguito come la tua sessione SSH temporanea con la tua istanza EC2.
La terminale interattiva ti consente di connetterti alla riga di comando ed eseguire comandi amministrativi per la tua nuova istanza.

3. Esegui il comando aws
di seguito per verificare la versione della tua CLI.
Come puoi vedere dall’output qui sotto, stai eseguendo la versione 1.18.147 sulla tua istanza Amazon Linux 2, che è obsoleta. Devi scaricare e installare AWS CLI versione 2+ per garantire l’accesso a tutte le funzionalità di Kubernetes (passo tre).

4. Ora, esegui il comando curl
di seguito per scaricare lo strumento CLI v2+ e salvarlo in un file zip chiamato awscliv2.zip
.

5. Esegui i seguenti comandi per decomprimere il file scaricato e determinare dove è installata la vecchia versione di AWS CLI.
Come puoi vedere dall’output qui sotto, la vecchia versione di AWS CLI è installata in /usr/bin/aws. Devi aggiornare questo percorso con la versione aggiornata.

6. Esegui il comando sottostante per eseguire le seguenti operazioni e – aggiorna il percorso di installazione dell’AWS CLI sulla tua istanza:
- Installa gli strumenti aggiornati AWS CLI sulla tua istanza Amazon Linux 2 (
sudo ./aws/install
). - Imposta la directory (
--install-dir /usr/bin/aws-cli
) dove installare gli strumenti CLI. In questo modo puoi trasferire la AWS CLI aggiornata su altre istanze senza reinstallare gli strumenti CLI. - Aggiorna (
--update
) il tuo ambiente shell corrente con il nuovo percorso per gli strumenti AWS CLI se ce n’è uno nel tuo ambiente corrente.

7. Esegui di nuovo il comando aws --version
qui sotto per verificare che la AWS CLI aggiornata sia stata installata correttamente.
La versione di AWS CLI installata è 2.4.7, come mostrato di seguito, che è la versione più recente di AWS CLI al momento della stesura.

8. Successivamente, esegui il comando aws configure
per configurare la tua istanza con i nuovi strumenti AWS CLI.
Inserisci i valori appropriati nei promemoria come indicato di seguito:
- AWS Access Key ID [Nessuno] – Inserisci l’ID chiave di accesso che hai annotato nella sezione precedente “Creazione dell’utente amministratore”.
- AWS Secret Access Key [Nessuno] – Inserisci la chiave di accesso segreta che hai annotato nella sezione precedente “Creazione dell’utente amministratore”.
- Nome della regione predefinita [Nessuno] – Seleziona una regione supportata, come us-east-1.
- Formato di output predefinito [Nessuno] – Inserisci json, poiché il formato JSON è lo standard preferito per l’uso con Kubernetes.

Configurazione dello strumento da riga di comando Amazon EKS (eksctl)
Dato che il tuo obiettivo è creare un cluster Kubernetes con AWS EKS CLI, configurerai anche lo strumento da riga di comando Amazon EKS (eksctl). Questo strumento ti permette di creare e gestire cluster Kubernetes su Amazon EKS.
1. Installa l’ultima versione dello strumento da riga di comando Kubernetes (kubectl) sulla tua istanza EC2. Questo strumento ti consente di eseguire comandi sui cluster Kubernetes.
2. Successivamente, esegui il comando curl
di seguito per scaricare l’ultima versione di eksctl
da GitHub nella tua directory /tmp come file .tar.gz, quindi estrai i contenuti dell’archivio nella directory /tmp.
Esegui i comandi seguenti per eseguire le seguenti operazioni:
- Scarica l’ultima versione di
eksctl
da GitHub (--location
) come archivio .tar.gz ("<https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$>(uname -s)_amd64.tar.gz"
) - Estrai i contenuti dell’archivio nella directory /tmp (
tar xz -C /tmp
), mentre il flag--silent
sopprime l’output di avanzamento del comando. - Sposta (
sudo mv
) il binario eksctl (/tmp/eksctl
) nel percorso in cui hai installato AWS CLI (/usr/bin
)
3. Infine, esegui il comando sottostante per confermare di aver installato con successo eksctl
.
L’output sottostante conferma che hai installato eksctl con successo.

Se sei nuovo a eksctl
, puoi eseguire il comando sottostante per ottenere un elenco di tutti i comandi supportati di eksctl
e il loro utilizzo.

Provisionamento del tuo cluster EKS
Ora che hai configurato eksctl, puoi ora creare il tuo primo cluster EKS con i comandi di eksctl
.
Esegui il comando eksctl
sottostante per creare il tuo primo cluster e eseguire le seguenti operazioni:
- Crea un cluster Kubernetes a 3 nodi chiamato
dev
con un tipo di nodo comet3.micro
e una regione comeus-east-1
. - Definisci almeno un nodo (
--nodes-min 1
) e un massimo di quattro nodi (--nodes-max 4
) per questo gruppo di nodi gestito da EKS. Il gruppo di nodi è chiamatostandard-workers
. - Crea un gruppo di nodi con il nome
standard-workers
e seleziona un tipo di macchina per il gruppo di nodistandard-workers
.

2. Vai alla tua dashboard di CloudFormation per vedere le azioni eseguite dal comando. Il comando eksctl create cluster
utilizza CloudFormation per fornire l’infrastruttura nel tuo account AWS.
Come puoi vedere di seguito, viene creato uno stack CloudFormation chiamato eksctl-dev-cluster. Questo processo potrebbe richiedere 15 minuti o più per completarsi.

3. Ora, vai alla tua dashboard EKS e vedrai un cluster chiamato dev predisposto. Clicca sul collegamento ipertestuale dev per accedere alla dashboard del cluster EKS di dev.

In basso, puoi vedere i dettagli del cluster EKS di dev, come il Nome del nodo, il Tipo di istanza, il Gruppo di nodi e lo Stato.

4. Passa alla tua dashboard EC2 e vedrai che quattro nodi sono in esecuzione, di cui tre con il ruolo t3.micro nel tuo account AWS (tre nodi worker e un nodo master).

5. Infine, esegui il comando seguente per aggiornare la tua configurazione kubectl (update-kubeconfig
) con il punto di accesso del tuo cluster, il certificato e le credenziali.

Implementazione di un’applicazione sul cluster EKS
Hai creato il tuo cluster EKS e confermato che funziona perfettamente. Ma in questo momento, il cluster EKS è solo seduto in un angolo. Per questa demo, farai uso del cluster EKS implementando un’applicazione NGINX.
1. Esegui il comando yum
di seguito per installare
git
accettando automaticamente tutte le richieste (-y
) durante l’installazione.

2. Successivamente, esegui il comando git clone
di seguito per clonare i file di configurazione dal repository GitHub nella tua directory corrente. Utilizzerai questi file per creare un’implementazione di NGINX sui tuoi pod e creare un bilanciatore di carico (ELB).

3. Esegui i seguenti comandi per spostarti nella directory ata-elk
e creare (kubectl apply
) un servizio per NGINX (./nginx-svc.yaml
).

4. Successivamente, esegui il comando kubectl get service
per controllare lo stato del tuo servizio NGINX.
Come vedi qui sotto, il tipo di servizio è un bilanciatore di carico e Kubernetes ha creato un servizio (nginx-svc), che è la tua implementazione di NGINX. Puoi anche vedere il nome host DNS esterno del bilanciatore di carico creato da EKS sotto la colonna EXTERNAL IP.
Annota il nome host DNS esterno del bilanciatore di carico in quanto ne avrai bisogno in seguito per testare il bilanciatore di carico.

5. Esegui il comando kubectl
di seguito per distribuire i pod NGINX.

6. Esegui i seguenti comandi kubectl get
per verificare lo stato del tuo NGINX deployment
e del tuo NGINX pod
.
Come puoi vedere nell’output sottostante, ci sono tre pod del tuo deployment e tutti sono in esecuzione.

7. Successivamente, esegui il comando kubectl get node
per verificare lo stato dei tuoi nodi worker.

8. Ora, esegui il comando curl
di seguito per testare il tuo bilanciamento del carico. Sostituisci <LOAD_BALANCER_DNS_HOSTNAME>
con il nome DNS che hai annotato in precedenza (passo cinque).
Vedrai la pagina di benvenuto NGINX dal servizio NGINX creato da EKS, come mostrato di seguito. L’output conferma che il tuo bilanciamento del carico funziona correttamente e che puoi accedere ai tuoi pod NGINX.

9. Infine, per un controllo doppio, copia e incolla il nome DNS del bilanciamento del carico in una nuova scheda del browser.
Vedrai anche una pagina di benvenuto da NGINX, il che indica che la tua applicazione funziona.

Test del controllo di Kubernetes altamente disponibile
Ora che hai un cluster in esecuzione, testerai se il piano di controllo di Kubernetes è altamente disponibile. L’uptime della tua applicazione dipende da questa funzionalità. Se il piano di controllo non funziona, le tue applicazioni saranno inattive e non potranno servire gli utenti.
Con la funzione di controllo di Kubernetes altamente disponibile, aumenti la disponibilità della tua applicazione. Testerai questa funzionalità fermare i nodi worker EKS e vedere se Kubernetes ne avvia di nuovi per sostituire quelli falliti.
1. Nel tuo dashboard EC2, arresta tutte le istanze dei nodi worker EKS, come mostrato di seguito.

2. Successivamente, esegui il seguente comando per verificare lo stato del nodo worker.
Otterrai una combinazione di stati, come In sospeso, In esecuzione e In terminazione. Perché? Perché mentre cerchi di fermare tutti i nodi worker, Kubernetes rileva il fallimento e porta rapidamente su un altro nodo.

3. Ora esegui il comando kubectl get pod
per testare la funzionalità di controllo altamente disponibile di Kubernetes.
Puoi vedere nell’output che ci sono tre nuovi pod (identificati per età) nello stato In esecuzione. Questi nuovi pod indicano che la funzionalità di controllo altamente disponibile di Kubernetes sta funzionando come previsto.

4. Esegui infine il comando kubectl get service
di seguito per elencare tutti i servizi disponibili.
Puoi vedere qui sotto che Kubernetes ha creato un nuovo servizio e il nome DNS del bilanciatore di carico è diverso ora. kubectl get service

5. Infine, copia e incolla il nome DNS del bilanciatore di carico nel tuo browser. Otterrai la pagina di benvenuto da NGINX come hai fatto nell’ultimo passaggio della sezione “Deploying an Application on EKS Cluster”.
Conclusione
Attraverso questo tutorial, hai imparato come creare un cluster EKS, distribuire un servizio NGINX dal tuo contenitore e testare la funzionalità del piano di controllo altamente disponibile.
A questo punto, dovresti avere una buona comprensione di come creare cluster EKS nel tuo ambiente AWS.
Qual è il tuo prossimo passo? Forse imparare come implementare un’app NodeJS utilizzando Docker e K8s su AWS?