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


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

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

Необходимые компоненты

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

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

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

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

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

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

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

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

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

  1. В колонке проверки подлинности введите имя управляемого удостоверения, созданного в качестве обязательного условия в поле в разделе "Включить проверку подлинности Microsoft Entra Authentication".

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

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

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

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

  1. Перейдите в колонку "Частная конечная точка ".
  2. Нажмите кнопку "Включить доступ к общедоступной сети" в верхнем меню.

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

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

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

  2. Для redisHostэтого замените значение заполнителя <REDIS_HOST>:<REDIS_PORT> именем узла кэша Redis и ПОРТОМ SSL, сохраненным ранее из портал Azure.

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

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

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

    kubectl apply -f ./deploy/redis.yaml
    
  2. Убедитесь, что хранилище состояний kubectl get components.redis успешно настроено с помощью команды.

    kubectl get components.redis -o yaml
    

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

    component.dapr.io/statestore created
    

Развертывание приложения Node.js с помощью расширения Dapr

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

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

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

  2. Замените значение serviceAccountName заполнителя <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. Замените значение serviceAccountName заполнителя <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 MyResourceGroup

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