Ejercicio: implementación de una aplicación en un clúster de Azure Kubernetes Service

Completado

En este ejercicio, implementará el servicio de mensajería de back-end de la empresa como una aplicación de prueba en Azure Kubernetes Service (AKS). El servicio se conectará al servicio PaaS de Redis que ha creado en el ejercicio anterior.

Nota:

El código del servicio está disponible en el repositorio de GitHub.

Creación de una lista en Redis

Debe crear una lista en Redis y rellenarla con algunos elementos aleatorios para simular una cola que recibe datos. Cada elemento de la cola representa algo que el microservicio procesará. En este ejercicio, agregará un número estático de elementos. Más adelante en el ejercicio, escalará el microservicio al número de elementos de la cola.

  1. Asegúrese de que Docker se está ejecutando en el equipo.

  2. Cree un contenedor de Redis localmente para conectarse a Azure Cache for Redis mediante el comando docker run:

    docker run -it --rm redis redis-cli -h $REDIS_HOST -a $REDIS_KEY
    

    El resultado debería ser similar al ejemplo siguiente:

    redis-contoso-video.redis.cache.windows.net:6379>
    
  3. Cree una lista y rellénela con elementos aleatorios mediante el 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. Compruebe la longitud de la lista mediante el comando llen keda:

    llen keda
    
  5. Salga del shell de Redis, escribiendo exit.

Creación de un manifiesto de implementación

Cree un archivo de manifiesto de implementación para implementar la aplicación. El archivo de manifiesto permite definir el tipo de recurso que quiere implementar y todos los detalles asociados a la carga de trabajo.

Kubernetes agrupa los contenedores en estructuras lógicas denominadas pods, que no tienen inteligencia. Las implementaciones agregan la inteligencia que falta para crear la aplicación.

  1. Cree un archivo de manifiesto en Cloud Shell para la implementación de Kubernetes denominado deployment.yaml mediante el comando touch:

    touch deployment.yaml
    
  2. Abra el editor integrado en Cloud Shell escribiendo code ..

  3. Abra el archivo deployment.yaml y pegue el siguiente código de manifiesto. Asegúrese de reemplazar las variables de entorno de Redis con sus propios valores.

    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. Guarde el archivo de manifiesto (CTRL + S) y cierre el editor(CTRL + Q).

Aplicación del manifiesto

  1. Implemente el manifiesto en el clúster mediante el comando kubectl apply:

    kubectl apply -f ./deployment.yaml
    

    El resultado debería ser similar al ejemplo siguiente:

    deployment.apps/contoso-microservice created
    
  2. Compruebe que la implementación se realizó correctamente mediante el comando kubectl get deployment:

    kubectl get deployment contoso-microservice
    

    El resultado debería ser similar al ejemplo siguiente:

    NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
    contoso-microservice   1/1     1            0           16s
    
  3. Compruebe que el pod se está ejecutando con el comando kubectl get pods:

    kubectl get pods
    

    El resultado debería ser similar al ejemplo siguiente:

    NAME                                    READY   STATUS    RESTARTS   AGE
    contoso-microservice-7c58c5f699-r79mv   1/1     Running   0          63s