Compartilhar via


Tutorial – Usar serviços de PaaS com um cluster do AKS (Serviço de Kubernetes do Azure)

Com o Kubernetes, você pode usar serviços de PaaS, como o Barramento de Serviço do Azure, para desenvolver e executar seus aplicativos.

Neste tutorial, parte cinco de sete, você cria um namespace e uma fila do Barramento de Serviço do Azure para testar seu aplicativo. Você aprenderá como:

  • Criar um namespace do Barramento de Serviço do Azure.
  • Atualizar o arquivo de manifesto do Kubernetes para usar a fila do Barramento de Serviço do Azure.
  • Testar o aplicativo atualizado fazendo um pedido.

Antes de começar

Nos tutoriais anteriores, você empacotou um aplicativo em uma imagem de contêiner, carregou a imagem no Registro de Contêiner do Azure, criou um cluster do Kubernetes e implantou um aplicativo. Para concluir este tutorial, você precisa do arquivo de manifesto do Kubernetes aks-store-quickstart.yaml pré-criado. Esse arquivo baixado foi incluído com o código-fonte do aplicativo em um tutorial anterior. Verifique se você clonou o repositório e alterou os diretórios no repositório clonado. Se você não concluiu essas etapas e deseja acompanhar este tutorial, comece com Tutorial 1: preparar um aplicativo para o AKS.

Este tutorial requer a CLI do Azure, versão 2.34.1 ou posterior. Execute az --version para encontrar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.

Criar variáveis de ambiente

  • Crie as seguintes variáveis de ambiente a serem usadas para os comandos neste tutorial:

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

Criar um namespace e uma fila do Barramento de Serviço do Azure

Em tutoriais anteriores, você usou um contêiner RabbitMQ para armazenar os pedidos enviados pelo order-service. Neste tutorial, você usará um namespace do Barramento de Serviço do Azure para fornecer um contêiner de escopo para os recursos do Barramento de Serviço dentro do aplicativo. Você também usa uma fila do Barramento de Serviço do Azure para enviar e receber mensagens entre os componentes do aplicativo. Para obter mais informações sobre o Barramento de Serviço do Azure, consulte Criar um namespace e uma fila do Barramento de Serviço do Azure.

  1. Crie um namespace do Barramento de Serviço do Azure usando o comando az servicebus namespace create.

    az servicebus namespace create --name $SB_NS --resource-group $RG_NAME --location $LOC_NAME
    
  2. Crie uma fila do Barramento de Serviço do Azure usando o comando az servicebus queue create.

    az servicebus queue create --name orders --resource-group $RG_NAME --namespace-name $SB_NS
    
  3. Crie uma regra de autorização do Barramento de Serviço do Azure usando o 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. Obtenha as credenciais do Barramento de Serviço do Azure para uso posterior usando os comandos az servicebus namespace show e 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
    

Atualizar os arquivos de manifesto do Kubernetes

  1. Configure kubectl para se conectar ao seu cluster usando o comando az aks get-credentials.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Abra o arquivo aks-store-quickstart.yaml em um editor de texto.

  3. Remova as seções rabbitmq StatefulSet, ConfigMap e Service existentes e substitua a seção order-service Deployment existente pelo seguinte conteúdo:

    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
    

    Observação

    A adição direta de informações confidenciais, como chaves de API, aos arquivos de manifesto do Kubernetes não é segura e pode ser confirmada acidentalmente em repositórios de código. Colocamos isso aqui para simplificar. Para cargas de trabalho de produção, use a Identidade Gerenciada para autenticar com o Barramento de Serviço do Azure ou armazene seus segredos no Azure Key Vault.

  4. Salve e feche o arquivo aks-store-quickstart.yaml atualizado.

Implantar o aplicativo atualizado

  • Implante o aplicativo atualizado usando o comando kubectl apply.

    kubectl apply -f aks-store-quickstart.yaml
    

    A saída de exemplo a seguir mostra os recursos atualizados com êxito:

    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
    

Testar o aplicativo

Fazer um pedido de exemplo

  1. Obtenha o endereço IP externo do serviço store-front usando o comando kubectl get service.

    kubectl get service store-front
    
  2. Navegue até o endereço IP externo do serviço store-front no navegador usando http://<external-ip>.

  3. Faça um pedido escolhendo um produto e selecionando Adicionar ao carrinho.

  4. Selecione Carrinho para exibir seu pedido e, em seguida, selecione Finalizar compra.

Exibir o pedido na fila do Barramento de Serviço do Azure

  1. Navegue até o portal do Azure e abra o namespace do Barramento de Serviço do Azure criado anteriormente.
  2. Em Entidades, selecione Filas e, em seguida, selecione a fila de pedidos.
  3. Na fila de pedidos, selecione Service Bus Explorer.
  4. Selecione Espiar do início para exibir a ordem enviada.

Próximas etapas

Neste tutorial, você usou o Barramento de Serviço do Azure para atualizar e testar o aplicativo de exemplo. Você aprendeu a:

  • Criar um namespace do Barramento de Serviço do Azure.
  • Atualizar o arquivo de manifesto do Kubernetes para usar a fila do Barramento de Serviço do Azure.
  • Testar o aplicativo atualizado fazendo um pedido.

No próximo tutorial, você aprenderá a dimensionar um aplicativo no AKS.