Distribuisci risorse e pacchetti Kubernetes utilizzando Amazon EKS e un repository di grafici Helm in Amazon S3 - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Distribuisci risorse e pacchetti Kubernetes utilizzando Amazon EKS e un repository di grafici Helm in Amazon S3

Creato da Sagar Panigrahi (AWS)

Ambiente: PoC o pilota

Tecnologie: contenitori e microservizi; DevOps

Servizi AWS: Amazon EKS

Riepilogo

Questo modello ti aiuta a gestire le applicazioni Kubernetes in modo efficiente, indipendentemente dalla loro complessità. Il modello integra Helm nelle pipeline esistenti di integrazione continua e distribuzione continua (CI/CD) per distribuire le applicazioni in un cluster Kubernetes. Helm è un gestore di pacchetti Kubernetes che ti aiuta a gestire le applicazioni Kubernetes. I grafici Helm aiutano a definire, installare e aggiornare applicazioni Kubernetes complesse. I grafici possono essere modificati in versioni e archiviati negli archivi Helm, il che migliora il tempo medio di ripristino (MTTR) durante le interruzioni. 

Questo modello utilizza Amazon Elastic Kubernetes Service (Amazon EKS) per il cluster Kubernetes. Utilizza Amazon Simple Storage Service (Amazon S3) come repository di grafici Helm, in modo che i grafici possano essere gestiti centralmente e accessibili dagli sviluppatori di tutta l'organizzazione.

Prerequisiti e limitazioni

Prerequisiti

  • Un account Amazon Web Services (AWS) attivo con un cloud privato virtuale (VPC)

  • Un cluster Amazon EKS 

  • Nodi di lavoro configurati all'interno del cluster Amazon EKS e pronti a gestire carichi di lavoro

  • Kubectl per configurare il file Amazon EKS kubeconfig per il cluster di destinazione nel computer client

  • Accesso ad AWS Identity and Access Management (IAM) per creare il bucket S3

  • Accesso IAM (programmatico o di ruolo) ad Amazon S3 dal computer client

  • Gestione del codice sorgente e pipeline CI/CD

Limitazioni

  • Al momento non è disponibile alcun supporto per l'aggiornamento, l'eliminazione o la gestione delle definizioni di risorse personalizzate (CRD).

  • Se si utilizza una risorsa che fa riferimento a un CRD, il CRD deve essere installato separatamente (al di fuori del grafico).

Versioni del prodotto

  • Helm v3.6.3

Architettura

Stack tecnologico Target

  • Amazon EKS

  • Amazon VPC

  • Amazon S3

  • Gestione del codice sorgente

  • Helm

  • Kubectl

Architettura Target

Client Helm e Kubectl distribuiscono un repository di grafici Helm in Amazon S3 per cluster Amazon EKS.

Automazione e scalabilità

  • AWS CloudFormation può essere utilizzato per automatizzare la creazione dell'infrastruttura. Per ulteriori informazioni, consulta Creazione di risorse Amazon EKS con AWS CloudFormation nella documentazione di Amazon EKS.

  • Helm deve essere incorporato nel tuo strumento di automazione CI/CD esistente per automatizzare il packaging e il controllo delle versioni dei grafici Helm (al di fuori dell'ambito di questo schema).

  • GitVersion Oppure è possibile utilizzare i numeri di build Jenkins per automatizzare il controllo delle versioni dei grafici.

Strumenti

Strumenti

  • Amazon EKS — Amazon Elastic Kubernetes Service (Amazon EKS) è un servizio gestito per eseguire Kubernetes su AWS senza dover installare o mantenere il proprio piano di controllo Kubernetes. Kubernetes è un sistema open source per automatizzare l'implementazione, il dimensionamento e la gestione di applicazioni containerizzate.

  • Helm — Helm è un gestore di pacchetti per Kubernetes che ti aiuta a installare e gestire applicazioni sul tuo cluster Kubernetes.

  • Amazon S3 — Amazon Simple Storage Service (Amazon S3) è uno storage per Internet. È possibile utilizzare Amazon S3 per memorizzare e recuperare qualsiasi volume di dati, in qualunque momento e da qualunque luogo tramite il Web.

  • Kubectl — Kubectl è un'utilità da riga di comando per l'esecuzione di comandi su cluster Kubernetes.

Codice

Il codice di esempio è allegato.

Epiche

AttivitàDescrizioneCompetenze richieste

Installa il client Helm.

Per scaricare e installare il client Helm sul sistema locale, utilizzare il seguente comando. 

sudo curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
DevOps ingegnere

Convalida l'installazione di Helm.

Per verificare che Helm sia in grado di comunicare con il server API Kubernetes all'interno del cluster Amazon EKS, esegui. helm version

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Crea un grafico Helm per NGINX.

Per creare un diagramma Helm denominato my-nginx sul computer client, esegui. helm create my-nginx

DevOps ingegnere

Esamina la struttura del grafico.

Per rivedere la struttura del grafico, esegui il comando treetree my-nginx/.

DevOps ingegnere

Disattiva la creazione dell'account di servizio nel grafico.

Nella serviceAccount sezionevalues.yaml, imposta la create chiave su. false Questa opzione è disattivata perché non è necessario creare un account di servizio per questo pattern.

DevOps ingegnere

Convalida (lint) il grafico modificato per eventuali errori sintattici.

Per convalidare il grafico per eventuali errori sintattici prima di installarlo nel cluster di destinazione, esegui. helm lint my-nginx/

DevOps ingegnere

Installa il grafico per distribuire le risorse Kubernetes.

Per eseguire l'installazione di Helm chart, usa il comando seguente. 

helm install --name my-nginx-release --debug my-nginx/ --namespace helm-space

Il debug flag opzionale emette tutti i messaggi di debug durante l'installazione. Il namespace flag specifica lo spazio dei nomi in cui verranno create le risorse che fanno parte di questo grafico.

DevOps ingegnere

Esamina le risorse nel cluster Amazon EKS.

Per esaminare le risorse che sono state create come parte del grafico Helm nel helm-space namespace, usa il comando seguente. 

kubectl get all -n helm-space
DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Modifica e aggiorna la versione.

Per modificare il grafico, invalues.yaml, modifica il replicaCount valore in2. Quindi aggiorna la versione già installata eseguendo il comando seguente.

helm upgrade my-nginx-release my-nginx/ --namespace helm-space
DevOps ingegnere

Consulta la cronologia della versione di Helm.

Per elencare tutte le revisioni di una versione specifica che sono state installate utilizzando Helm, esegui il comando seguente. 

helm history my-nginx-release
DevOps ingegnere

Esamina i dettagli per una revisione specifica.

Prima di passare o ripristinare una versione funzionante e per un ulteriore livello di convalida prima di installare una revisione, visualizza quali valori sono stati passati a ciascuna delle revisioni utilizzando il comando seguente.

helm get --revision=2 my-nginx-release
DevOps ingegnere

Torna a una versione precedente.

Per tornare a una revisione precedente, usa il seguente comando. 

helm rollback my-nginx-release 1

Questo esempio sta tornando alla revisione numero 1.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Crea un bucket S3 per i grafici Helm.

Crea un bucket S3 unico. Nel bucket, crea una cartella chiamata. charts L'esempio di questo modello utilizza s3://my-helm-charts/charts come archivio grafico di destinazione.

Amministratore cloud

Installa il plug-in Helm per Amazon S3.

Per installare il plugin helm-s3 sul tuo computer client, usa il seguente comando. 

helm plugin install https://github.com/hypnoglow/helm-s3.git --version 0.10.0

Nota: il supporto per Helm V3 è disponibile con la versione del plugin 0.9.0 e successive.

DevOps ingegnere

Inizializza il repository Amazon S3 Helm.

Per inizializzare la cartella di destinazione come repository Helm, usa il seguente comando. 

helm S3 init s3://my-helm-charts/charts

Il comando crea un index.yaml file nella destinazione per tenere traccia di tutte le informazioni del grafico archiviate in quella posizione.

DevOps ingegnere

Aggiungi il repository Amazon S3 a Helm.

Per aggiungere il repository nel computer client, usa il seguente comando.

helm repo add my-helm-charts s3://my-helm-charts/charts

Questo comando aggiunge un alias al repository di destinazione nel computer client Helm.

DevOps ingegnere

Controlla l'elenco dei repository.

Per visualizzare l'elenco dei repository nel computer client Helm, esegui. helm repo list

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Creazione pacchetto del grafico.

Per impacchettare il my-nginx grafico che hai creato, eseguihelm package ./my-nginx/. Il comando impacchetta tutto il contenuto della cartella del my-nginx grafico in un file di archivio, denominato utilizzando il numero di versione indicato nel Chart.yaml file.

DevOps ingegnere

Archivia il pacchetto nel repository Amazon S3 Helm.

Per caricare il pacchetto nel repository Helm in Amazon S3, esegui il comando seguente, utilizzando il nome corretto del file. .tgz

helm s3 push ./my-nginx-0.1.0.tgz my-helm-charts
DevOps ingegnere

Cerca la carta Helm.

Per confermare che il grafico sia visualizzato sia localmente che nel repository Helm in Amazon S3, esegui il comando seguente.

helm search repo my-nginx
DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Modifica e impacchetta il grafico.

Invalues.yaml, imposta il replicaCount valore su1. Quindi impacchetta il grafico eseguendolohelm package ./my-nginx/, questa volta cambiando la versione Chart.yaml in0.1.1

Il controllo delle versioni viene idealmente aggiornato tramite l'automazione utilizzando strumenti come GitVersion o Jenkins build Numbers in una pipeline CI/CD. L'automazione del numero di versione non rientra nell'ambito di questo schema.

DevOps ingegnere

Invia la nuova versione al repository Helm in Amazon S3.

Per inviare il nuovo pacchetto con la versione 0.1.1 al repository my-helm-charts Helm in Amazon S3, esegui il comando seguente.

helm s3 push ./my-nginx-0.1.1.tgz my-helm-charts
DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Cerca tutte le versioni del grafico my-nginx.

Per visualizzare tutte le versioni disponibili di un grafico, esegui il seguente comando con il flag. --versions

helm search repo my-nginx --versions

Senza il flag, per impostazione predefinita Helm visualizza l'ultima versione caricata di un grafico.

DevOps ingegnere

Installa un grafico dal repository Amazon S3 Helm.

I risultati della ricerca dell'attività precedente mostrano le diverse versioni del grafico. my-nginx Per installare la nuova versione (0.1.1) dal repository Amazon S3 Helm, usa il seguente comando.

helm upgrade my-nginx-release my-helm-charts/my-nginx --version 0.1.1 --namespace helm-space
DevOps ingegnere

Risorse correlate

Allegati

Per accedere a contenuti aggiuntivi associati a questo documento, decomprimi il seguente file: attachment.zip