Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Служба Azure Container Apps берет на себя управление Kubernetes и оркестрацией контейнеров для вас. Контейнеры в Контейнерах приложений Azure могут использовать любую среду выполнения, язык программирования или стек разработки на ваш выбор.
Приложения-контейнеры Azure поддерживают:
- любой образ контейнера на основе Linux x86-64 (
linux/amd64
); - контейнеры из любого общедоступного или частного реестра контейнеров.
- Необязательные сайдкар- и инициализирующие контейнеры
Кроме того, к ним относятся следующие функции:
- Приложения используют
template
раздел конфигурации для определения образа контейнера и других параметров. Изменения вtemplate
разделе конфигурации активируют новую редакцию приложения контейнера. - В случае аварийного завершения работы контейнер автоматически перезапускается.
К функциям заданий относятся:
- Выполнение заданий использует
template
раздел конфигурации для определения образа контейнера и других параметров при каждом запуске выполнения. - Если контейнер завершает работу с кодом выхода, отличного от нуля, выполнение задания помечается как неудачное. Задание можно настроить для повтора неудачных выполнений.
Настройка
Большинство приложений-контейнеров имеют один контейнер. В расширенных сценариях приложение может также иметь сайдкар и инициализационные контейнеры. В определении приложения в контейнере основное приложение и его сайдкар-контейнеры перечислены в массиве containers
в разделе properties.template
, а контейнеры инициализации перечислены в массиве initContainers
. В следующем фрагменте показаны доступные параметры конфигурации при настройке контейнеров приложения.
{
"properties": {
"template": {
"containers": [
{
"name": "main",
"image": "[parameters('container_image')]",
"env": [
{
"name": "HTTP_PORT",
"value": "80"
},
{
"name": "SECRET_VAL",
"secretRef": "mysecret"
}
],
"resources": {
"cpu": 0.5,
"memory": "1Gi"
},
"volumeMounts": [
{
"mountPath": "/appsettings",
"volumeName": "appsettings-volume"
}
],
"probes": [
{
"type": "liveness",
"httpGet": {
"path": "/health",
"port": 8080,
"httpHeaders": [
{
"name": "Custom-Header",
"value": "liveness probe"
}
]
},
"initialDelaySeconds": 7,
"periodSeconds": 3
},
{
"type": "readiness",
"tcpSocket": {
"port": 8081
},
"initialDelaySeconds": 10,
"periodSeconds": 3
},
{
"type": "startup",
"httpGet": {
"path": "/startup",
"port": 8080,
"httpHeaders": [
{
"name": "Custom-Header",
"value": "startup probe"
}
]
},
"initialDelaySeconds": 3,
"periodSeconds": 3
}
]
}
]
},
"initContainers": [
{
"name": "init",
"image": "[parameters('init_container_image')]",
"resources": {
"cpu": 0.25,
"memory": "0.5Gi"
},
"volumeMounts": [
{
"mountPath": "/appsettings",
"volumeName": "appsettings-volume"
}
]
}
]
...
}
...
}
Настройка | Описание | Примечания |
---|---|---|
image |
Имя образа контейнера для приложенного контейнера. | Это значение имеет формат repository/<IMAGE_NAME>:<TAG> . Избегайте использования статических тегов, например latest для образов контейнеров. Использование статических тегов может привести к проблемам кэширования и может затруднить устранение неполадок приложения. Вместо этого используйте уникальные теги для каждого развертывания, например хэш Git или дату и время, чтобы обеспечить правильное отслеживание и развертывание обновлений. |
name |
Дружественное имя контейнера. | Используется для создания отчетов и идентификации. |
command |
Команда запуска контейнера. | Эквивалентно полю entryPoint в Docker. |
args |
Аргументы команды запуска. | Записи в этом массиве объединяются в список параметров, который передается команде запуска. |
env |
Массив пар name/value, определяющих переменные среды. | Вместо поля secretRef для ссылки на секрет используйте value . |
resources.cpu |
Количество ЦП, выделенных для контейнера. | См. требования к выделению виртуальных процессоров и памяти |
resources.memory |
Объем ОЗУ, выделенный для контейнера. | См. требования к выделению vCPU и памяти |
volumeMounts |
Массив с определениями монтирования томов. | Вы можете определить временные или постоянные тома хранилища для контейнера. Дополнительные сведения о томах хранилища см. в статье Использование подключений к хранилищу в Контейнерах приложений Azure. |
probes |
Массив проб работоспособности, настроенных в контейнере. | Дополнительные сведения о параметрах проверок см. в статье Проверки работоспособности в Azure Container Apps. |
Требования к выделению виртуальных процессоров и памяти
При использовании плана потребления общий объем ЦП и памяти, выделенной для всех контейнеров в приложении-контейнере, должен добавиться к одному из следующих сочетаний.
Виртуальные ЦП (ядра) | Память |
---|---|
0.25 |
0.5Gi |
0.5 |
1.0Gi |
0.75 |
1.5Gi |
1.0 |
2.0Gi |
1.25 |
2.5Gi |
1.5 |
3.0Gi |
1.75 |
3.5Gi |
2.0 |
4.0Gi |
2.25 |
4.5Gi |
2.5 |
5.0Gi |
2.75 |
5.5Gi |
3.0 |
6.0Gi |
3.25 |
6.5Gi |
3.5 |
7.0Gi |
3.75 |
7.5Gi |
4.0 |
8.0Gi |
Примечание.
Приложения, использующие план потребления в среде с только потреблением, ограничиваются максимум 2 ядрами и 4 ГиБ памяти.
Несколько контейнеров
В расширенных сценариях можно запускать несколько контейнеров в одном приложении-контейнере. Используйте этот шаблон только в определенных случаях, где контейнеры тесно сопряжены.
Для большинства сценариев микрослужб рекомендуется развернуть каждую службу как отдельное приложение контейнера.
Несколько контейнеров в одном приложении-контейнере совместно используют жесткие диски и сетевые ресурсы и имеют одинаковый жизненный цикл приложения.
Существует два способа запуска дополнительных контейнеров в приложении контейнеров: дополнительные контейнеры и инициализирующие контейнеры.
Контейнеры-побочники
Вы можете определить несколько контейнеров в одном контейнерном приложении для реализации шаблона побочного.
Примеры контейнеров сайдкар включают:
Агент читает журналы из основного контейнера приложения на общем томе и отправляет их в сервис логирования.
Фоновый процесс, который обновляет кэш, используемый контейнером основного приложения в общем томе.
Эти сценарии являются примерами и не являются единственными способами реализации сайдкара.
Чтобы запустить несколько контейнеров в контейнерном приложении, добавьте несколько контейнеров в массив containers
в шаблоне контейнерного приложения.
Контейнеры инициализации.
Вы можете определить один или несколько инициализирующих контейнеров в контейнерном приложении. Контейнеры инициализации выполняются до контейнера основного приложения и используются для выполнения задач инициализации, таких как скачивание данных или подготовка среды.
Инициализационные контейнеры определяются в массиве initContainers
шаблона приложения контейнера. Контейнеры выполняются в том порядке, в который они определены в массиве, и должны успешно завершиться до запуска контейнера основного приложения.
Примечание.
Контейнеры init в приложениях, использующих выделенный план или работающих только в среде потребления, не могут получить доступ к управляемому удостоверению вовремя выполнения.
Реестры контейнеров
Вы можете развернуть образы, размещенные в частных реестрах, указав их учетные данные в конфигурации Приложений контейнеров.
Чтобы использовать реестр контейнеров, необходимо определить реестр в registries
массиве в properties.configuration
разделе шаблона ресурса приложения контейнера. Поле passwordSecretRef
определяет имя секрета в имени массива secrets
, где вы определили пароль.
{
...
"registries": [{
"server": "docker.io",
"username": "my-registry-user-name",
"passwordSecretRef": "my-password-secret-name"
}]
}
Сохраненные учетные данные используются для извлечения образа контейнера из частного реестра при развертывании приложения.
В следующем примере показано, как настроить в контейнере приложения учетные данные для Реестра контейнеров Azure.
{
...
"configuration": {
"secrets": [
{
"name": "docker-hub-password",
"value": "my-docker-hub-password"
}
],
...
"registries": [
{
"server": "docker.io",
"username": "someuser",
"passwordSecretRef": "docker-hub-password"
}
]
}
}
Примечание.
Docker Hub ограничивает количество скачиваемых образов Docker. Когда ограничение достигнуто, контейнеры в приложении не будут запускаться. Используйте реестр с достаточными ограничениями, например Реестр контейнеров Azure, чтобы избежать этой проблемы.
Управляемое удостоверение в Azure Container Registry
Управляемое удостоверение Azure можно использовать для аутентификации в Реестре контейнеров Azure вместо имени пользователя и пароля. Дополнительные сведения см. в разделе «Управляемые удостоверения в Azure Container Apps».
Чтобы использовать управляемое удостоверение с реестром, удостоверение должно быть включено в приложении и ему должна быть назначена роль acrPull
в реестре. Чтобы настроить реестр, используйте идентификатор ресурса управляемого удостоверения для удостоверения, назначаемого пользователем, или идентификатор system
для удостоверения, назначаемого системой, в свойстве identity
реестра. Не настраивайте имя пользователя и пароль при использовании управляемого удостоверения.
{
"identity": {
"type": "SystemAssigned,UserAssigned",
"userAssignedIdentities": {
"<IDENTITY1_RESOURCE_ID>": {}
}
}
"properties": {
"configuration": {
"registries": [
{
"server": "myacr1.azurecr.io",
"identity": "<IDENTITY1_RESOURCE_ID>"
},
{
"server": "myacr2.azurecr.io",
"identity": "system"
}]
}
...
}
}
Дополнительные сведения о настройке назначаемых пользователем удостоверений см. в разделе "Добавление удостоверения, назначаемого пользователем".
Ограничения
Для Azure Container Apps действуют следующие ограничения.
Привилегированные контейнеры: приложения контейнеров Azure не разрешают режим привилегированных контейнеров с доступом на уровне узла.
Операционная система. Требуются образы контейнеров под управлением Linux (
linux/amd64
).Максимальный размер изображения:
- Профиль рабочей нагрузки потребления поддерживает образы контейнеров, составляющие до 8 ГБ для каждого приложения или реплики заданий.
- Выделенные профили рабочей нагрузки поддерживают более крупные образы контейнеров. Так как профиль выделенной рабочей нагрузки может запускать несколько приложений или заданий, несколько образов контейнеров совместно используют доступное место на диске. Фактический поддерживаемый размер изображения зависит от ресурсов, потребляемых другими приложениями и заданиями.