0Pricing
Cloud & IT Cert Prep · Урок

Azure Container Apps

Разверните приложение микрослужб в Azure Container Apps с интеграцией бокового контейнера Dapr, настройте входящий трафик и используйте автомасштабирование на основе KEDA, запускаемое глубиной очереди Service Bus.

«Azure Container Apps» — бесплатный урок Cloud & IT Cert Prep на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cloud & IT Cert Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Что такое Azure Container Apps?

Azure Container Apps (ACA) — это полностью управляемая бессерверная служба размещения контейнеров, построенная на Kubernetes и KEDA (автоматическое масштабирование Kubernetes на основе событий). В отличие от AKS, Вам не нужно напрямую управлять плоскостью управления, пулами узлов или манифестами Kubernetes. Вместо этого Вы развёртываете контейнеры с помощью простого CLI или определения YAML, а Azure берёт на себя всю оркестрацию. ACA идеально подходит для микрослужб, серверных компонентов API, обработчиков, управляемых событиями, и фоновых заданий обработки, которым требуется динамическое масштабирование, включая масштабирование до нуля.

Среды Container Apps

Среда Container Apps — это изолированная граница, внутри которой выполняется одно или несколько приложений Container Apps. Все приложения в среде используют одну виртуальную сеть и рабочую область Log Analytics. Среды относятся к региону и группе ресурсов. Можно развернуть несколько сред для изоляции команд или этапов (рабочая среда и промежуточная среда). Среду также можно при необходимости внедрить в VNet собственной виртуальной сети, чтобы разрешить закрытое взаимодействие между Container Apps и другими службами Azure без использования общедоступного Интернета.

# Create a Container Apps environment
az containerapp env create \
  --name myACAEnvironment \
  --resource-group myRG \
  --location eastus

Развёртывание приложения-контейнера

Чтобы развернуть приложение-контейнер, укажите образ контейнера (из Azure Container Registry или любого общедоступного реестра), количество реплик и переменные среды. Если включить внешний входящий трафик, приложение будет доступно из общедоступной сети по автоматически созданному URL HTTPS. Конфигурация входящего трафика включает целевой порт, распределение трафика для развёртываний «сине-зелёного» типа, а также разрешение только HTTP или только HTTPS. ACA извлекает образ во время развёртывания; среда должна иметь разрешения на извлечение образа из реестра.

# Deploy a container app from Azure Container Registry
az containerapp create \
  --name myapi \
  --resource-group myRG \
  --environment myACAEnvironment \
  --image myacr.azurecr.io/myapi:latest \
  --target-port 8080 \
  --ingress external \
  --registry-server myacr.azurecr.io \
  --min-replicas 1 \
  --max-replicas 10

Автоматическое масштабирование на основе KEDA

Container Apps масштабируется с помощью средств масштабирования KEDA, работающих на основе внешних метрик. Встроенные средства масштабирования KEDA включают: трафик HTTP (параллельные запросы на реплику), глубину очереди Azure Service Bus (ожидающие сообщения), очередь Azure Storage, Cron (на основе времени) и CPU/Memory. Когда значение метрики средства масштабирования становится равным нулю, а для minReplicas установлено значение 0, Container Apps масштабируется до нуля — вычислительные ресурсы не оплачиваются, пока не поступят новые запросы. Масштабирование до нуля отлично подходит для обработчиков, управляемых событиями, с нерегулярной нагрузкой.

# Scale based on Service Bus queue depth
az containerapp update \
  --name myworker \
  --resource-group myRG \
  --scale-rule-name sbqueue-scaler \
  --scale-rule-type azure-servicebus \
  --scale-rule-metadata 'queueName=orders' 'namespace=myservicebusns' 'messageCount=5' \
  --scale-rule-auth 'connection=servicebus-connection-secret:connection' \
  --min-replicas 0 \
  --max-replicas 20

Интеграция с Dapr

Dapr (среда выполнения распределённых приложений) — это переносимая среда выполнения, управляемая событиями, которая упрощает создание микрослужб. Container Apps имеет встроенную интеграцию с Dapr — её можно включить для каждого приложения с помощью одного флага. Dapr предоставляет строительные блоки для: вызова службы (с повторными попытками и mTLS), обмена сообщениями по модели публикации и подписки (абстрагируя Service Bus и Event Hubs), управления состоянием (абстрагируя Redis и Cosmos DB) и исходящих привязок. С Dapr микрослужбы взаимодействуют через побочный процесс Dapr, не зная подробностей базовой инфраструктуры.

# Enable Dapr on a Container App
az containerapp update \
  --name myapi \
  --resource-group myRG \
  --enable-dapr \
  --dapr-app-id myapi \
  --dapr-app-port 8080 \
  --dapr-app-protocol http

Редакции и распределение трафика

Каждое развёртывание приложения Container App создаёт новую редакцию. В режиме нескольких редакций можно распределять трафик между редакциями для «сине-зелёных» или канареечных развёртываний. Например, направить 10% трафика в новую редакцию, а 90% — в текущую стабильную редакцию. Отслеживайте частоту ошибок и задержку новой редакции, прежде чем увеличить долю её трафика до 100%. Старые редакции можно деактивировать, но они сохраняются в журнале, что позволяет мгновенно выполнить откат, вернув прежнюю долю трафика.

# Set traffic split between two revisions
az containerapp ingress traffic set \
  --name myapi \
  --resource-group myRG \
  --revision-weight myapi--abc123=90 myapi--def456=10

Секреты и переменные среды

Container Apps поддерживает два способа передачи конфигурации: переменные среды (для неконфиденциальных настроек, таких как флаги функций или URL-адреса API) и секреты (для конфиденциальных значений, таких как строки подключения). Секреты хранятся на уровне приложения Container App и используются через переменные среды или компоненты Dapr. Для наиболее безопасной конфигурации ссылайтесь на секреты из Azure Key Vault с помощью управляемой идентификации, чтобы значение секрета извлекалось во время выполнения и никогда не хранилось на уровне конфигурации Container App.

# Add a secret to a Container App
az containerapp secret set \
  --name myapi \
  --resource-group myRG \
  --secrets 'db-password=supersecretpassword'

# Reference the secret as an environment variable
az containerapp update \
  --name myapi \
  --resource-group myRG \
  --set-env-vars 'DB_PASSWORD=secretref:db-password'

Задания: рабочие нагрузки с выполнением до завершения

Задания Container Apps расширяют платформу, обеспечивая поддержку рабочих нагрузок с выполнением до завершения — контейнеров, которые запускаются, выполняют работу и завершаются. Задания поддерживают три типа запуска: вручную (через API или CLI), по расписанию (выражение cron) и по событию (масштабировщик KEDA запускает каждое выполнение). Оплата заданий взимается только за фактическое время выполнения, поэтому они идеально подходят для пакетной обработки, создания отчётов, миграции баз данных и конвейеров вывода моделей машинного обучения, которые запускаются периодически или в ответ на события.

# Create a scheduled Container Apps job (run every hour)
az containerapp job create \
  --name my-batch-job \
  --resource-group myRG \
  --environment myACAEnvironment \
  --trigger-type Schedule \
  --cron-expression '0 * * * *' \
  --image myacr.azurecr.io/batchjob:latest \
  --cpu 0.5 --memory 1Gi

Наблюдаемость: журналы и метрики

Container Apps отправляет системные журналы (события платформы, например создание ревизии и масштабирование) и журналы консоли (вывод stdout/stderr вашего приложения) в рабочую область Log Analytics, подключённую к среде. Запрашивайте журналы с помощью KQL: ContainerAppConsoleLogs_CL | where ContainerAppName_s == 'myapi' | project TimeGenerated, Log_s. Встроенные метрики Azure Monitor включают количество реплик, количество запросов, задержку запросов и загрузку CPU/памяти для каждой реплики — всё это доступно на портале Azure без дополнительной настройки.

# Stream live logs from a Container App
az containerapp logs show \
  --name myapi \
  --resource-group myRG \
  --follow

ACA, AKS и App Service

Выбор подходящей контейнерной платформы Azure: Container Apps лучше всего подходит для микросервисов, обработчиков событий и API, когда вам нужны преимущества Kubernetes без управления кластером, особенно если важно масштабирование до нуля. AKS лучше всего подходит, когда необходим полный контроль над Kubernetes, пользовательские операторы или особые конфигурации узлов (GPU, большой объём памяти). App Service лучше всего подходит для традиционных веб-приложений и API, когда команда разработчиков предпочитает простую модель PaaS без накладных расходов на управление контейнерами. Все три решения поддерживают контейнеры; различие заключается в соотношении сложности управления и уровня контроля.

Сетевое взаимодействие: внутренний и внешний входящий трафик

Container Apps поддерживает два режима входящего трафика: внешний (доступен из общедоступной сети через конечную точку HTTPS с балансировкой нагрузки и автоматическим TLS) и внутренний (доступен только из той же среды Container Apps или из ресурсов, подключённых через пиринг VNet). Внутренний входящий трафик используется для внутренних служб, которые ни в коем случае не должны быть доступны из интернета. Приложения могут обращаться друг к другу по автоматически созданному внутреннему DNS-имени http://myapi в одной среде, что обеспечивает простой обмен данными между службами без развёртывания шлюза API.

Быстрая проверка

Проверьте своё понимание концепций Microsoft Azure Fundamentals (AZ-900), рассмотренных в этом уроке.

Итоги урока

В этом уроке вы узнали, что Azure Container Apps обеспечивает бессерверное размещение контейнеров на базе Kubernetes и KEDA без управления кластером, масштабировщики KEDA позволяют масштабировать до нуля на основе длины очереди, HTTP-трафика или расписаний cron, а интеграция Dapr упрощает взаимодействие между микрослужбами и управление состоянием. Далее мы объединим всё в единый сквозной рабочий процесс разработчика.

Часто задаваемые вопросы

Урок «Azure Container Apps» бесплатный?

Да — полный текст урока «Azure Container Apps» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cloud & IT Cert Prep, подпишись на CoddyKit PRO. Курс Cloud & IT Cert Prep содержит 4 уроков всего.

Чему я научусь в уроке «Azure Container Apps»?

Разверните приложение микрослужб в Azure Container Apps с интеграцией бокового контейнера Dapr, настройте входящий трафик и используйте автомасштабирование на основе KEDA, запускаемое глубиной очеред… Ты практикуешь Cloud & IT Cert Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cloud & IT Cert Prep?

Предыдущий опыт не требуется. Cloud & IT Cert Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Azure Container Apps»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cloud & IT Cert Prep?

Да. Каждый урок Cloud & IT Cert Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Управляемое удостоверение для аутентификации без паролей
  2. Azure Service Bus для слабосвязанного обмена сообщениями
  3. Azure Container Apps
  4. Сквозной рабочий процесс разработчика
← Назад к Cloud & IT Cert Prep