Contribuisci a migliorare questa pagina
Per contribuire a questa guida per l’utente, seleziona il link Edit this page on GitHub che si trova nel riquadro destro di ogni pagina.
Avvio rapido: implementazione di un’app Web e archiviazione dei dati
Implementazione di un’applicazione di gioco e conservazione dei relativi dati su Amazon EKS
Questo tutorial di avvio rapido mostra i passaggi per distribuire l’applicazione di gioco 2048 esemplificativa e mantenere i relativi dati su un cluster in modalità automatica Amazon EKS utilizzando eksctl
Man mano che procediamo, ti guideremo attraverso il processo di configurazione del cluster. La modalità automatica Amazon EKS automatizzerà le attività per la creazione di un nodo utilizzando un’istanza gestita EC2, la creazione di un sistema di Application Load Balancer e la creazione di un volume EBS.
Nel complesso, distribuirai un carico di lavoro esemplificativo con le annotazioni personalizzate necessarie per l’integrazione completa con i servizi AWS.
In questo tutorial
Utilizzando il modello di cluster eksctl che segue, creerai un cluster con modalità automatica EKS per il provisioning automatico dei nodi.
Configurazione VPC Quando si utilizza il modello di cluster eksctl che segue, eksctl crea automaticamente un cloud privato virtuale (VPC) IPv4 per il cluster. Per impostazione predefinita, eksctl configura un VPC che soddisfa tutti i requisiti di rete, oltre a creare endpoint pubblici e privati.
Gestione delle istanze La modalità automatica EKS aggiunge o rimuove dinamicamente i nodi nel cluster EKS in base alle esigenze delle applicazioni Kubernetes.
Persistenza dei dati Utilizza la funzionalità di archiviazione a blocchi della modalità automatica EKS per garantire la persistenza dei dati delle applicazioni, anche in scenari che prevedono riavvii o guasti dei pod.
Accesso esterno alle app Utilizza la funzionalità di bilanciamento del carico della modalità automatica EKS per effettuare il provisioning dinamico di un Application Load Balancer (ALB).
Prerequisiti
Prima di iniziare, assicurati di aver configurato i prerequisiti seguenti per utilizzare Amazon EKS:
-
Configura AWS CLI e configura le credenziali
-
Installa eksctl
-
Installa kubectl
Per ulteriori informazioni, consulta Configurazione per l’utilizzo di Amazon EKS.
Configurazione del cluster
In questa sezione creerai un cluster utilizzando la modalità automatica EKS per il provisioning dinamico dei nodi.
Crea un file cluster-config.yaml e incollaci il seguente contenuto. Sostituisci region-code con una regione valida, ad esempious-east-1:
apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: web-quickstart region: <region-code> autoModeConfig: enabled: true
Ora siamo pronti per creare il cluster.
Crea il ruolo del cluster Amazon EKS
eksctl create cluster -f cluster-config.yaml
Importante
Se non usi eksctl per creare il cluster, devi etichettare manualmente le sottoreti VPC.
Creare IngressClass
Crea un Kubernetes IngressClass per la modalità automatica EKS. IngressClass definisce come la modalità automatica EKS gestisce le risorse in entrata. Questo passaggio configura la capacità di bilanciamento del carico della modalità automatica EKS. Quando crei risorse in entrata per le tue applicazioni, la modalità automatica EKS utilizza questa IngressClass per effettuare il provisioning e gestire automaticamente i bilanciatori del carico, integrando le tue applicazioni Kubernetes con i servizi di bilanciamento del carico AWS.
Salva il seguente file yaml come ingressclass.yaml:
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb annotations: ingressclass.kubernetes.io/is-default-class: "true" spec: controller: eks.amazonaws.com/alb
Applica IngressClass ruolo al cluster:
kubectl apply -f ingressclass.yaml
Distribuzione dell’applicazione di gioco 2048 esemplificativa
In questa sezione, ti illustreremo i passaggi per implementare il popolare “gioco 2048” come applicazione esemplificativa all’interno del cluster. Il manifesto fornito include annotazioni personalizzate per l’Application Load Balancer (ALB). Queste annotazioni si integrano e indicano a EKS di gestire il traffico HTTP in entrata come “rivolto a Internet” e di indirizzarlo al servizio appropriato nel namespace game-2048 utilizzando il tipo di destinazione “ip”.
Nota
L’immagine docker-2048 nell’esempio è un’immagine di container x86_64 e non sarà eseguita su altre architetture.
-
Crea un namespace Kubernetes chiamato
game-2048con il flag--save-config.kubectl create namespace game-2048 --save-configDovresti vedere il seguente messaggio di risposta:
namespace/game-2048 created -
Implementare l’applicazione di gioco 2048 esemplificativa
. kubectl apply -n game-2048 -f https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.8.0/docs/examples/2048/2048_full.yamlQuesto manifesto configura l’implementazione, il servizio e l’entrata Kubernetes per il namespace
game-2048, creando le risorse necessarie per implementare ed esporre l’applicazionegame-2048all’interno del cluster. Include la creazione di un servizio denominatoservice-2048che espone l’implementazione sulla porta80e una risorsa di entrata denominataingress-2048che definisce le regole di routing per il traffico HTTP in entrata e le annotazioni per un Application Load Balancer (ALB) con accesso a Internet. Dovresti vedere il seguente messaggio di risposta:namespace/game-2048 configured deployment.apps/deployment-2048 created service/service-2048 created ingress.networking.k8s.io/ingress-2048 created -
Esegui il seguente comando per ottenere la risorsa di ingresso per il namespace
game-2048.kubectl get ingress -n game-2048Dovresti vedere il seguente messaggio di risposta:
NAME CLASS HOSTS ADDRESS PORTS AGE ingress-2048 alb * k8s-game2048-ingress2-eb379a0f83-378466616.region-code.elb.amazonaws.com 80 31sDovrai attendere alcuni minuti per effettuare il provisioning dell’Application Load Balancer (ALB) prima di iniziare con i passaggi seguenti.
-
Apri un browser Web e inserisci
ADDRESSdal passaggio precedente per accedere all’applicazione Web. Per esempio:k8s-game2048-ingress2-eb379a0f83-378466616---region-code---elb.amazonaws.com.rproxy.govskope.caIl gioco 2048 dovrebbe essere visualizzato nel browser in uso. Gioca!
Dati persistenti utilizzando la modalità automatica Amazon EKS
Ora che il gioco 2048 è attivo e funzionante sul tuo cluster Amazon EKS, è il momento di garantire che i tuoi dati di gioco siano conservati in modo sicuro, utilizzando la funzionalità di archiviazione a blocchi della modalità automatica Amazon EKS.
-
Creare un file denominato
storage-class.yaml:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: auto-ebs-sc annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: ebs.csi.eks.amazonaws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp3 encrypted: "true" -
Applica
StorageClass:kubectl apply -f storage-class.yaml -
Crea una richiesta di volumi persistenti (PVC) per richiedere lo spazio di archiviazione per i tuoi dati di gioco. Crea un file denominato
ebs-pvc.yamlche contenga quando segue e aggiungilo a .apiVersion: v1 kind: PersistentVolumeClaim metadata: name: game-data-pvc namespace: game-2048 spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: auto-ebs-sc -
Applica PVC al cluster:
kubectl apply -f ebs-pvc.yamlDovresti vedere il seguente messaggio di risposta:
persistentvolumeclaim/game-data-pvc created -
Ora devi aggiornare l’implementazione del gioco 2048 per utilizzare questo PVC per archiviare i dati. La seguente implementazione è configurata per utilizzare PVC per l’archiviazione dei dati di gioco. Crea un file denominato
ebs-deployment.yamle aggiungilo a esso:apiVersion: apps/v1 kind: Deployment metadata: namespace: game-2048 name: deployment-2048 spec: replicas: 3 # Adjust the number of replicas as needed selector: matchLabels: app.kubernetes.io/name: app-2048 template: metadata: labels: app.kubernetes.io/name: app-2048 spec: containers: - name: app-2048 image: public.ecr.aws/l6m2t8p7/docker-2048:latest imagePullPolicy: Always ports: - containerPort: 80 volumeMounts: - name: game-data mountPath: /var/lib/2048 volumes: - name: game-data persistentVolumeClaim: claimName: game-data-pvc -
Applica l’implementazione aggiornata:
kubectl apply -f ebs-deployment.yamlDovresti vedere il seguente messaggio di risposta:
deployment.apps/deployment-2048 configured
Con questi passaggi, il gioco 2048 sul cluster è ora configurato per rendere persistenti i dati, utilizzando la funzionalità di archiviazione a blocchi della modalità automatica Amazon EKS. Ciò garantisce che i progressi e i dati di gioco siano al sicuro anche in caso di guasti ai pod o ai nodi.
Se ti è piaciuto questo tutorial, faccelo sapere fornendo un feedback, così saremo in grado di fornirti altri tutorial rapidi di utilizzo specifici per ogni caso, come questo.
Eliminare cluster e nodi.
Dopo aver creato il cluster e i nodi per questo tutorial, è consigliabile eseguire la pulizia mediante l’eliminazione del cluster e dei nodi con il seguente comando. Per eseguire altre operazioni con questo cluster prima di eseguire la pulizia, consulta Passaggi successivi.
eksctl delete cluster -f ./cluster-config.yaml
EKS pulirà automaticamente qualsiasi nodo su cui è stato effettuato il provisioning quando il cluster è eliminato.