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 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.

En este tutorial se crean recursos de Azure Service Bus facturables. Para completar estos pasos, use una identidad que pueda crear y administrar recursos Service Bus y actualizar las cargas de trabajo de AKS en el grupo de recursos, como Colaborador o Propietario.

Este tutorial requiere la instalación del escritorio de AKS.

Creación de variables de entorno

  • Use el CLI de Azure para crear las siguientes variables de entorno que se usarán para los comandos de este tutorial:

    LOC_NAME=westus2
    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.

En este flujo, order-service envía mensajes a la cola orders mediante la regla de autorización sender y la clave que cree en esta sección.

Use el CLI de Azure para crear las siguientes variables de entorno que se usarán para los comandos de este tutorial.

  1. Cree un espacio de nombres de Azure Service Bus mediante el comando az servicebus namespace create.

    az servicebus namespace create --name $SB_NS --resource-group $RG_NAME --location $LOC_NAME
    

    Continúe cuando el comando se complete correctamente y devuelva los detalles del espacio de nombres.

  2. Creación de una cola de Azure Service Bus con el comando az servicebus queue create.

    az servicebus queue create --name orders --resource-group $RG_NAME --namespace-name $SB_NS
    

    Compruebe que la cola existe antes de continuar:

    az servicebus queue show --name orders --resource-group $RG_NAME --namespace-name $SB_NS --query name -o tsv
    
  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 az servicebus namespace show comandos 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
    

    Guarde estos valores para el paso de actualización del manifiesto:

    • <REPLACE_WITH_YOUR_ACR_NAME>: el nombre del Azure Container Registry de los tutoriales anteriores.
    • <REPLACE_WITH_YOUR_SB_NS_HOSTNAME>: $SB_NS.servicebus.windows.net.
    • <REPLACE_WITH_YOUR_SB_SENDER_PASSWORD>: el primaryKey valor de la salida del comando.

Actualización del archivo de manifiesto de Kubernetes

  1. Vaya a Proyectos en el escritorio de AKS y seleccione el que creó en el tutorial anterior, my-dev-frontend.

  2. Seleccione la pestaña Recursos y, a continuación, seleccione Cargas de trabajo>Implementación: order-service. Captura de pantalla que muestra la edición de la implementación, los recursos, las cargas de trabajo, la implementación y el servicio de pedidos.

  3. Seleccione el Editor.

  4. Quite las secciones StatefulSet, ConfigMap y Service existentes rabbitmq . Reemplace la sección Implementación existente order-service por el siguiente contenido. Copie y pegue el 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
            startupProbe:
              httpGet:
                path: /health
                port: 3000
              failureThreshold: 5
              initialDelaySeconds: 20
              periodSeconds: 10
            readinessProbe:
              httpGet:
                path: /health
                port: 3000
              failureThreshold: 3
              initialDelaySeconds: 3
              periodSeconds: 5
            livenessProbe:
              httpGet:
                path: /health
                port: 3000
              failureThreshold: 5
              initialDelaySeconds: 3
              periodSeconds: 3
    

    Captura de pantalla que muestra el uso del editor para actualizar la implementación de YAML.

    Nota:

    Añadir directamente información confidencial, como claves de API, en los archivos de manifiesto de Kubernetes no es seguro y podría subirse accidentalmente a repositorios de código. En este ejemplo se agrega 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.

  5. Para conservar la actualización, seleccione Guardar y aplicar.

  6. Comprueba que la implementación actualizada order-service alcanza un estado correcto en la vista de carga de trabajo antes de continuar.

Implementación de la aplicación actualizada

  1. Implemente la aplicación actualizada mediante el kubectl apply comando .

    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
    
  2. Compruebe que se está ejecutando la implementación actualizada.

    kubectl get pods
    

Continúa cuando los pods de la aplicación estén en estado Running.

Prueba de la aplicación

Realizar un pedido de ejemplo

Escritorio de AKS

Obtenga la dirección IP pública yendo a Recurso>Red>Servicio: store-front>IP externa.

Captura de pantalla que muestra cómo obtener la dirección IP externa.

Línea de comandos

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

    kubectl get service store-front
    

    Si EXTERNAL-IP es <pending>, espere un minuto y vuelva a ejecutar el comando hasta que aparezca una dirección IP pública.

  2. Navegue hasta la dirección IP externa del servicio store-front en su explorador mediante http://<external-ip>.

  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.