Руководство. Использование служб PaaS с кластером Служба Azure Kubernetes (AKS)

С помощью Kubernetes можно использовать службы PaaS, такие как Служебная шина Azure, для разработки и запуска приложений.

В этом руководстве показано, как создать Служебная шина Azure пространство имен и очередь для тестирования приложения. Узнайте следующие темы:

  • Создайте пространство имен и очередь Служебная шина Azure.
  • Обновите файл манифеста Kubernetes, чтобы использовать очередь Служебная шина Azure.
  • Протестируйте обновленное приложение, поместив заказ.

Подготовка к работе

В предыдущих руководствах вы упаковали приложение в образ контейнера, отправили образ в Реестр контейнеров Azure, создали кластер Kubernetes и развернули приложение. Для работы с этим руководством необходимо предварительно создать файл манифеста Kubernetes aks-store-quickstart.yaml. Этот файл был включен в исходный код приложения в предыдущем руководстве. Убедитесь, что вы клонировали репозиторий и изменили каталоги в клонированного репозитория. Если вы не выполнили эти действия и хотите следовать вместе, начните с руководства 1. Подготовка приложения для AKS.

Для этого руководства требуется Azure CLI версии 2.34.1 или более поздней. Чтобы узнать версию, выполните команду az --version. Если вам необходимо выполнить установку или обновление, см. статью Установка Azure CLI 2.0.

Создание переменной среды

  • Создайте следующие переменные среды, которые будут использоваться для команд в этом руководстве:

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

Создание пространства имен и очереди Служебная шина Azure

В предыдущих руководствах вы использовали контейнер RabbitMQ для хранения заказов, отправленных этим элементом order-service. В этом руководстве вы используете пространство имен Служебная шина Azure для предоставления контейнера области для ресурсов служебная шина в приложении. Вы также используете очередь служебной шины Azure для отправки и получения сообщений между компонентами приложения. Дополнительные сведения о Служебная шина Azure см. в статье "Создание пространства имен и очереди Служебная шина Azure".

  1. Создайте пространство имен Служебная шина Azure с помощью az servicebus namespace create команды.

    az servicebus namespace create -n $SB_NS -g $RG_NAME -l $LOC_NAME
    
  2. Создайте очередь Служебная шина Azure с помощью az servicebus queue create команды.

    az servicebus queue create -n orders -g $RG_NAME --namespace-name $SB_NS -g $RG_NAME
    
  3. Создайте правило авторизации Служебная шина Azure с помощью 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. Получите учетные данные Служебная шина Azure для последующего az servicebus namespace show использования с помощью команд и 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
    

Обновление файла манифеста Kubernetes

  1. Настройте kubectl подключение к кластеру az aks get-credentials с помощью команды.

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. Откройте файл aks-store-quickstart.yaml в текстовом редакторе.

  3. Удалите существующие разделы StatefulSet, ConfigMap и Service и замените существующий rabbitmqorder-service раздел развертывания следующим содержимым:

    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
    

    Примечание.

    Непосредственное добавление конфиденциальной информации, например ключей API, в файлы манифеста Kubernetes не является безопасным и может случайно зафиксироваться в репозиториях кода. Мы добавили его здесь для простоты. Для рабочих нагрузок используйте управляемое удостоверение для проверки подлинности с помощью Служебная шина Azure или хранения секретов в Azure Key Vault.

  4. Сохраните и закройте обновленный aks-store-quickstart.yaml файл.

Развертывание обновленного приложения

  • Разверните обновленное приложение с помощью kubectl apply команды.

    kubectl apply -f aks-store-quickstart.yaml
    

    В следующем примере выходных данных показаны успешно обновленные ресурсы:

    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
    

Тестирование приложения

Размещение примера заказа

  1. Получите внешний IP-адрес store-front службы с помощью kubectl get service команды.

    kubectl get service store-front
    
  2. Перейдите к внешнему IP-адресу store-front службы в браузере.

  3. Поместите заказ, выбрав продукт и выбрав "Добавить в корзину".

  4. Выберите "Корзина ", чтобы просмотреть заказ, а затем нажмите кнопку "Извлечь".

Просмотр порядка в очереди Служебная шина Azure

  1. Перейдите к портал Azure и откройте созданное ранее пространство имен Служебная шина Azure.
  2. В разделе Сущности выберите очереди и выберите очередь заказов.
  3. В очереди заказов выберите служебная шина Обозреватель.
  4. Выберите "Просмотреть" в начале , чтобы просмотреть отправленный заказ.

Следующие шаги

В этом руководстве вы использовали Служебная шина Azure для обновления и тестирования примера приложения. Вы научились выполнять следующие задачи:

  • Создайте пространство имен и очередь Служебная шина Azure.
  • Обновите файл манифеста Kubernetes, чтобы использовать очередь Служебная шина Azure.
  • Протестируйте обновленное приложение, поместив заказ.

В следующем руководстве описано, как масштабировать приложение в AKS.