Tutorial: Uso de servicios PaaS con un clúster de Azure Kubernetes Service (AKS)

Con Kubernetes, puede usar servicios PaaS, como Azure Service Bus, para desarrollar y ejecutar aplicaciones.

En este tutorial, parte cinco de siete, creará un espacio de nombres y una cola de Azure Service Bus para probar la aplicación. Aprenderá a:

  • Cree un espacio de nombres y una cola de Azure Service Bus.
  • Actualice el archivo de manifiesto de Kubernetes para usar la cola de Azure Service Bus.
  • Pruebe la aplicación actualizada mediante la realización de un pedido.

Antes de empezar

En los tutoriales anteriores, empaquetó una aplicación en una imagen de contenedor, cargó la imagen en Azure Container Registry, creó un clúster de Kubernetes e implementó una aplicación. Para completar este tutorial, necesita el archivo de manifiesto de Kubernetes aks-store-quickstart.yaml creado previamente. El código fuente de la aplicación incluía esta descarga de archivo en un tutorial anterior. Asegúrese de clonar el repositorio y de cambiar los directorios en el repositorio clonado. Si no ha realizado estos pasos, pero quiere seguir con el tutorial, comience con Tutorial 1: Preparación de una aplicación para AKS.

Para este tutorial se necesita la versión 2.34.1 o posterior de la CLI de Azure. Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.

Creación de variables de entorno

  • Cree las siguientes variables de entorno que se usarán para los comandos de este tutorial:

    LOC_NAME=eastus
    RAND=$RANDOM
    RG_NAME=myResourceGroup
    AKS_NAME=myAKSCluster
    SB_NS=sb-store-demo-$RAND
    

Crear un espacio de nombres de Service Bus y una cola

En los tutoriales anteriores, usó un contenedor RabbitMQ para almacenar los pedidos enviados por el order-service. En este tutorial, usará un espacio de nombres de Azure Service Bus para proporcionar un contenedor de ámbito para los recursos de Service Bus dentro de la aplicación. También se usa una cola de Azure Service Bus para enviar y recibir mensajes entre los componentes de la aplicación. Para más información sobre Azure Service Bus, consulte Creación de un espacio de nombres y una cola de Azure Service Bus.

  1. Creación de un espacio de nombres de Azure Service Bus con el comando az servicebus namespace create.

    az servicebus namespace create -n $SB_NS -g $RG_NAME -l $LOC_NAME
    
  2. Creación de una cola de Azure Service Bus con el comando az servicebus queue create.

    az servicebus queue create -n orders -g $RG_NAME --namespace-name $SB_NS -g $RG_NAME
    
  3. Creación de una regla de autorización de Azure Service Bus con el comando az servicebus queue authorization-rule create.

    az servicebus queue authorization-rule create \
        --name sender \
        --namespace-name $SB_NS \
        --resource-group $RG_NAME \
        --queue-name orders \
        --rights Send
    
  4. Obtenga las credenciales de Azure Service Bus para su uso posterior mediante los comandos az servicebus namespace show y az servicebus queue authorization-rule keys list.

    az servicebus namespace show --name $SB_NS --resource-group $RG_NAME --query name -o tsv
    az servicebus queue authorization-rule keys list --namespace-name $SB_NS --resource-group $RG_NAME --queue-name orders --name sender --query primaryKey -o tsv
    

Actualización del archivo de manifiesto de Kubernetes

  1. Configure kubectl para conectarse al clúster ejecutando el comando az aks get-credentials.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Abra el archivo aks-store-quickstart.yaml en un editor de texto.

  3. Quite las secciones StatefulSet, ConfigMap y Service rabbitmq existentes y reemplace la sección implementación de order-service existente por el siguiente contenido:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: order-service
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: order-service
      template:
        metadata:
          labels:
            app: order-service
        spec:
          nodeSelector:
            "kubernetes.io/os": linux
          containers:
          - name: order-service
            image: <REPLACE_WITH_YOUR_ACR_NAME>.azurecr.io/aks-store-demo/order-service:latest
            ports:
            - containerPort: 3000
            env:
            - name: ORDER_QUEUE_HOSTNAME
              value: "<REPLACE_WITH_YOUR_SB_NS_HOSTNAME>" # Example: sb-store-demo-123456.servicebus.windows.net
            - name: ORDER_QUEUE_PORT
              value: "5671"
            - name: ORDER_QUEUE_TRANSPORT
              value: "tls"
            - name: ORDER_QUEUE_USERNAME
              value: "sender"
            - name: ORDER_QUEUE_PASSWORD
              value: "<REPLACE_WITH_YOUR_SB_SENDER_PASSWORD>"
            - name: ORDER_QUEUE_NAME
              value: "orders"
            - name: FASTIFY_ADDRESS
              value: "0.0.0.0"
            resources:
              requests:
                cpu: 1m
                memory: 50Mi
              limits:
                cpu: 75m
                memory: 128Mi
    

    Nota:

    La adición directa de información confidencial, como las claves de API, a los archivos de manifiesto de Kubernetes no es segura y puede confirmarse accidentalmente en los repositorios de código. Lo agregamos aquí por motivos de simplicidad. En el caso de las cargas de trabajo de producción, use Identidad administrada para autenticarse con Azure Service Bus o almacenar los secretos en Azure Key Vault.

  4. Guarde y cierre el archivo aks-store-quickstart.yaml actualizado.

Implementación de la aplicación actualizada

  • Implemente la aplicación actualizada con el comando kubectl apply.

    kubectl apply -f aks-store-quickstart.yaml
    

    En la siguiente salida de ejemplo se muestran los recursos que se han actualizado correctamente:

    deployment.apps/order-service configured
    service/order-service unchanged
    deployment.apps/product-service unchanged
    service/product-service unchanged
    deployment.apps/store-front configured
    service/store-front unchanged
    

Prueba de la aplicación

Realizar un pedido de ejemplo

  1. Obtenga la dirección IP externa del servicio store-front usando el comando kubectl get service.

    kubectl get service store-front
    
  2. Navegue en su explorador hasta la dirección IP externa del servicio store-front.

  3. Para realizar un pedido, elija un producto y seleccione Agregar al carro.

  4. Seleccione Carro para ver el pedido y, a continuación, seleccione Pasar por caja.

Ver el orden en la cola de Azure Service Bus

  1. Vaya a Azure Portal y abra el espacio de nombres de Azure Service Bus que creó anteriormente.
  2. En Entidades, seleccione Colas y, a continuación, seleccione la cola de pedidos.
  3. En la cola de pedidos, seleccione Service Bus Explorer.
  4. Seleccione Ver desde el inicio para ver el pedido enviado.

Pasos siguientes

En este tutorial, ha usado Azure Service Bus para actualizar y probar la aplicación de ejemplo. Ha aprendido a:

  • Cree un espacio de nombres y una cola de Azure Service Bus.
  • Actualice el archivo de manifiesto de Kubernetes para usar la cola de Azure Service Bus.
  • Pruebe la aplicación actualizada mediante la realización de un pedido.

En el siguiente tutorial aprenderá a escalar una aplicación en AKS.