Поделиться через


Краткое руководство. Развертывание приложения с помощью расширения Dapr для службы Azure Kubernetes (AKS) или Kubernetes с поддержкой Arc

В этом кратком руководстве вы используете расширение Dapr в кластере Kubernetes, поддерживаемом Arc или AKS. Вы развертываете hello world пример, состоящий из приложения Python, которое создает сообщения и приложение Node.js, которое использует и сохраняет сообщения.

Prerequisites

Клонирование репозитория

  1. Клонируйте репозиторий быстрого запуска Dapr с помощью git clone команды.

    git clone https://github.com/Azure-Samples/dapr-aks-extension-quickstart.git
    
  2. Перейдите в каталог dapr-aks-extension-quickstart.

    cd dapr-aks-extension-quickstart
    

Создание и настройка хранилища Redis

Откройте портал Azure , чтобы запустить поток создания кэша Azure для Redis.

  1. Заполните рекомендуемые сведения в соответствии с кратким руководством по созданию кэша Azure для Redis .

  2. Выберите "Создать", чтобы запустить развертывание экземпляра Redis.

Проверка сведений о ресурсе

  1. После развертывания ресурса Redis перейдите на страницу обзора.

  2. Запишите следующее:

    • Имя узла, найденное в разделе Essentials страницы обзора кэша. Формат имени узла выглядит примерно так: xxxxxx.redis.cache.windows.net
    • Порт SSL находится в параметрах>Дополнительные параметры. Значение по умолчанию — 6380.
  3. Перейдите к разделу Настройки>Аутентификация и убедитесь, что аутентификация Microsoft Entra включена в вашем ресурсе.

Добавление управляемого удостоверения

  1. В разделе «Аутентификация» под флажком «Включить аутентификацию Microsoft Entra» введите имя управляемого удостоверения, которое вы создали как необходимое условие.

    Снимок экрана: поле, в котором можно выбрать управляемое удостоверение для добавления в качестве пользователя Redis.

  2. Убедитесь, что ваша управляемая идентичность добавлена как Пользователь Redis с назначенными разрешениями политики доступа владельца данных.

Включение доступа к общедоступной сети

В этом случае кэш Redis использует доступ к общедоступной сети. Не забудьте очистить ресурсы после завершения этого краткого руководства.

  1. Перейдите кнастройкам>частной конечной точке.

  2. Выберите "Включить доступ к общедоступной сети " в меню.

Настройка компонентов Dapr

В файле redis.yaml компонент настроен для использования аутентификации Entra ID с применением идентификации рабочей нагрузки, включенной для кластера AKS. Ключи доступа не требуются.

- name: useEntraID
  value: "true"
- name: enableTLS
  value: true
  1. В предпочтительном редакторе кода перейдите к каталогу развертывания в примере репозитория и откройте redis.yaml.

  2. Для , замените значение заполнителя именем узла кэша Redis и портом SSL, которые вы сохранили ранее на портале Azure.

    - name: redisHost
      value: <your-cache-name>.redis.cache.windows.net:6380
    

Применение конфигурации

Примените файл redis.yaml с помощью kubectl apply команды.

kubectl apply -f ./deploy/redis.yaml

Ожидаемые выходные данные

component.dapr.io/statestore created

Разверните приложение Node.js с сайдкаром Dapr

Настройка приложения Node.js

В node.yaml в спецификации пода добавлена метка для использования идентичности рабочей нагрузки:

labels:
  app: node
  azure.workload.identity/use: "true"
  1. Перейдите к каталогу deploy и откройте node.yaml.

  2. Замените значение заполнителя <SERVICE_ACCOUNT_NAME>именем созданной учетной записи службы.

    • Это значение должно быть той же учетной записью службы, которую вы использовали для создания учетных данных федеративного удостоверения.

Применение конфигурации

  1. Примените развертывание приложения Node.js на ваш кластер с помощью команды kubectl apply.

    kubectl apply -f ./deploy/node.yaml
    
  2. Развертывания Kubernetes являются асинхронными, поэтому перед переходом к следующим шагам убедитесь, что развертывание завершено со следующей командой:

    kubectl rollout status deploy/nodeapp
    
  3. Используйте команду kubectl get svc, чтобы получить доступ к сервису.

    kubectl get svc nodeapp
    
  4. Обратите внимание на EXTERNAL-IP в выходных данных.

Проверка службы Node.js

  1. Воспользуйтесь curl, чтобы вызвать службу с помощью EXTERNAL-IP.

    curl <EXTERNAL-IP>/ports
    

    Пример результата

    {"DAPR_HTTP_PORT":"3500","DAPR_GRPC_PORT":"50001"}
    
  2. Отправьте заказ в приложение.

    curl --request POST --data "@sample.json" --header Content-Type:application/json <EXTERNAL-IP>/neworder
    
  3. Подтвердите заказ.

    curl <EXTERNAL-IP>/order
    

    Ожидаемые выходные данные

    { "orderId": "42" }
    

Разверните приложение Python с сайдкаром Dapr

Настройка приложения Python

В python.yaml в спецификации pod добавлена метка для использования идентификации рабочей нагрузки.

labels:
  app: node
  azure.workload.identity/use: "true"
  1. Перейдите к каталогу deploy и откройте python.yaml.

  2. Замените значение заполнителя <SERVICE_ACCOUNT_NAME>именем созданной учетной записи службы.

    • Это значение должно быть той же учетной записью службы, которую вы использовали для создания учетных данных федеративного удостоверения.

Применение конфигурации

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

    kubectl apply -f ./deploy/python.yaml
    
  2. Развертывания Kubernetes являются асинхронными, поэтому перед переходом к следующим шагам убедитесь, что развертывание завершено со следующей командой:

    kubectl rollout status deploy/pythonapp
    

Наблюдение за сообщениями и подтверждение сохраняемости

Теперь, когда приложения Node.js и Python развернуты, вы можете наблюдать, как проходят сообщения.

  1. Получите журналы приложения Node.js с помощью kubectl logs команды.

    kubectl logs --selector=app=node -c node --tail=-1
    

    Ожидаемые выходные данные

    Got a new order! Order ID: 1
    Successfully persisted state
    Got a new order! Order ID: 2
    Successfully persisted state
    Got a new order! Order ID: 3
    Successfully persisted state
    
  2. Используя curl, вызовите конечную точку заказа приложения Node.js, чтобы получить последний заказ.

    curl <EXTERNAL-IP>/order
    

    В ответе должны отображаться последние выходные данные JSON.

Очистите ресурсы

Если вы больше не планируете использовать ресурсы из этого краткого руководства, можно удалить группу ресурсов, кластер, пространство имен и все связанные ресурсы с помощью команды az group delete .

az group delete --name <your-resource-group>

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