Esercizio - Distribuire un'applicazione nel cluster del servizio Azure Kubernetes

Completato

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.

  1. Assicurarsi che Docker sia in esecuzione nel computer.

  2. 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>
    
  3. 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
    
  4. Verificare la lunghezza dell'elenco usando il comando llen keda:

    llen keda
    
  5. 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.

  1. In Cloud Shell creare un file manifesto per la distribuzione Kubernetes con nome deployment.yaml usando il comando touch:

    touch deployment.yaml
    
  2. Aprire l'editor integrato in Cloud Shell immettendo code .

  3. 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 ***
    
  4. Salvare il file manifesto (CTRL + S) e chiudere l'editor(CTRL + Q).

Applicare il manifesto

  1. 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
    
  2. 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
    
  3. 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