Esercizio - Distribuire un'applicazione nel cluster del servizio Azure Kubernetes
Verrà distribuito il servizio di messaggistica di back-end della società come app di test nel servizio Azure Kubernetes. Il servizio si connette al servizio PaaS Redis creato nell'esercizio precedente.
Nota
Il codice per il servizio è disponibile nel repository di GitHub.
Creare un elenco in Redis
È necessario creare un elenco in Redis e popolarlo con alcuni elementi casuali per simulare una coda che riceve dati. Ogni elemento nella coda rappresenta qualcosa che verrà elaborato dal microservizio. Per questo esercizio si aggiungerà un numero statico di elementi. Più avanti nell'esercizio si ridimensionerà il microservizio fino al numero di elementi nella coda.
Assicurarsi che Docker sia in esecuzione nel computer.
Creare un contenitore Redis in locale per connettersi a Cache di Azure per Redis usando il comando
docker run
:docker run -it --rm redis redis-cli -h $REDIS_HOST -a $REDIS_KEY
L'output dovrebbe essere simile all'esempio di output seguente:
redis-contoso-video.redis.cache.windows.net:6379>
Creare un elenco e popolarlo con elementi casuali usando il comando
lpush keda
:lpush keda Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris eget interdum felis, ac ultricies nulla. Fusce vehicula mattis laoreet. Quisque facilisis bibendum dui, at scelerisque nulla hendrerit sed. Sed rutrum augue arcu, id maximus felis sollicitudin eget. Curabitur non libero rhoncus, pellentesque orci a, tincidunt sapien. Suspendisse laoreet vulputate sagittis. Vivamus ac magna lacus. Etiam sagittis facilisis dictum. Phasellus faucibus sagittis libero, ac semper lorem commodo in. Quisque tortor lorem, sollicitudin non odio sit amet, finibus molestie eros. Proin aliquam laoreet eros, sed dapibus tortor euismod quis. Maecenas sed viverra sem, at porta sapien. Sed sollicitudin arcu leo, vitae elementum
Verificare la lunghezza dell'elenco usando il comando
llen keda
:llen keda
Uscire dalla shell di Redis digitando
exit
.
Creare un manifesto della distribuzione
Si crea un file manifesto della distribuzione per distribuire l'applicazione. Il file manifesto consente di definire il tipo di risorsa che si vuole distribuire e i dettagli associati al carico di lavoro.
Kubernetes raggruppa i contenitori in strutture logiche denominate pod, non intelligenti. Le distribuzioni aggiungono l'intelligenza mancante per creare l'applicazione.
In Cloud Shell creare un file manifesto per la distribuzione Kubernetes con nome
deployment.yaml
usando il comandotouch
:touch deployment.yaml
Aprire l'editor integrato in Cloud Shell immettendo
code .
Aprire il file
deployment.yaml
e incollarlo nel codice manifesto seguente. Assicurarsi di sostituire le variabili di ambiente Redis con i propri valori.apiVersion: apps/v1 kind: Deployment metadata: name: contoso-microservice spec: replicas: 1 # Tells K8S the number of containers to process the Redis list items selector: # Define the wrapping strategy matchLabels: # Match all pods with the defined labels app: contoso-microservice # Labels follow the `name: value` template template: # Template of the pod inside the Deployment metadata: labels: app: contoso-microservice spec: containers: - image: mcr.microsoft.com/mslearn/samples/redis-client:latest name: contoso-microservice resources: requests: cpu: 100m memory: 128Mi limits: cpu: 100m memory: 128Mi env: - name: REDIS_HOST value: "redis-contoso-video.redis.cache.windows.net" # *** REPLACE with your value *** - name: REDIS_PORT value: "6379" # *** REPLACE with your value *** - name: REDIS_LIST value: "keda" # *** REPLACE with your value *** - name: REDIS_KEY value: "******************************************" # *** REPLACE with your value ***
Salvare il file manifesto (CTRL + S) e chiudere l'editor(CTRL + Q).
Applicare il manifesto
Distribuire il manifesto nel cluster usando il comando
kubectl apply
:kubectl apply -f ./deployment.yaml
L'output dovrebbe essere simile all'esempio di output seguente:
deployment.apps/contoso-microservice created
Verificare che la distribuzione abbia avuto esito positivo usando il comando
kubectl get deployment
:kubectl get deployment contoso-microservice
L'output dovrebbe essere simile all'esempio di output seguente:
NAME READY UP-TO-DATE AVAILABLE AGE contoso-microservice 1/1 1 0 16s
Verificare che il pod sia in esecuzione usando il comando
kubectl get pods
:kubectl get pods
L'output dovrebbe essere simile all'esempio di output seguente:
NAME READY STATUS RESTARTS AGE contoso-microservice-7c58c5f699-r79mv 1/1 Running 0 63s