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


Поддержка развертывания Docker Compose в Azure Service Fabric

Средство Docker использует файл docker-compose.yml для определения приложений с несколькими контейнерами. Чтобы пользователи могли ознакомиться с инструментом Docker, который позволяет организовать существующие приложения-контейнеры в Azure Service Fabric, мы изначально добавили в платформу предварительную версию поддержки развертывания Docker Compose. Платформа Service Fabric может принять файлы docker-compose.yml версии 3 и более поздней.

Так как эта поддержка доступна в режиме предварительной версии, поддерживается только подмножество директив Compose.

Для использования этой предварительной версии создайте кластер со средой выполнения Service Fabric версии 5.7 (или более новой) с помощью портала Azure и соответствующего пакета SDK.

Примечание.

Эта функция доступна в режиме предварительной версии и не поддерживается в рабочей среде. Приведенные ниже примеры основаны на среде выполнения версии 6.0 и пакете SDK версии 2.8.

Развертывание файла Docker Compose в Service Fabric

Приведенные ниже команды создают приложение Service Fabric (fabric:/TestContainerApp), которое можно отслеживать и которым можно управлять, как и любым приложением Service Fabric. Указанное имя приложения можно использовать для запросов работоспособности. Service Fabric распознает DeploymentName как идентификатор развертывания Compose.

С помощью PowerShell

Чтобы создать развертывание Compose для Service Fabric из файла docker-compose.yml, выполните следующую команду в PowerShell.

New-ServiceFabricComposeDeployment -DeploymentName TestContainerApp -Compose docker-compose.yml [-RegistryUserName <>] [-RegistryPassword <>] [-PasswordEncrypted]

RegistryUserName и RegistryPassword задают имя пользователя и пароль реестра контейнеров. После завершения развертывания можно проверить его состояние с помощью следующей команды.

Get-ServiceFabricComposeDeploymentStatus -DeploymentName TestContainerApp

Чтобы удалить развертывание Compose с помощью PowerShell, используйте следующую команду.

Remove-ServiceFabricComposeDeployment  -DeploymentName TestContainerApp

Чтобы запустить обновление развертывания Compose с помощью PowerShell, используйте следующую команду.

Start-ServiceFabricComposeDeploymentUpgrade -DeploymentName TestContainerApp -Compose docker-compose-v2.yml -Monitored -FailureAction Rollback

Чтобы выполнить откат обновления развертывания Compose с помощью PowerShell, выполните следующую команду:

Start-ServiceFabricComposeDeploymentRollback -DeploymentName TestContainerApp

После согласия на обновление ход его выполнения можно отслеживать с помощью следующей команды.

Get-ServiceFabricComposeDeploymentUpgrade -DeploymentName TestContainerApp

Использование интерфейса командной строки Service Fabric (sfctl)

Можно также выполнить следующую команду интерфейса командной строки Service Fabric.

sfctl compose create --deployment-name TestContainerApp --file-path docker-compose.yml [ [ --user --encrypted-pass ] | [ --user --has-pass ] ] [ --timeout ]

После создания развертывания можно проверить его состояние с помощью следующей команды.

sfctl compose status --deployment-name TestContainerApp [ --timeout ]

Чтобы удалить развертывание Compose, выполните следующую команду.

sfctl compose remove  --deployment-name TestContainerApp [ --timeout ]

Чтобы начать обновление развертывания Compose, выполните следующую команду.

sfctl compose upgrade --deployment-name TestContainerApp --file-path docker-compose-v2.yml [ [ --user --encrypted-pass ] | [ --user --has-pass ] ] [--upgrade-mode Monitored] [--failure-action Rollback] [ --timeout ]

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

sfctl compose upgrade-rollback --deployment-name TestContainerApp [ --timeout ]

После согласия на обновление ход его выполнения можно отслеживать с помощью следующей команды.

sfctl compose upgrade-status --deployment-name TestContainerApp

Поддерживаемые директивы Compose

В этой предварительной версии поддерживается подмножество параметров конфигурации из формата Compose версии 3. Поддерживаются следующие примитивы:

  • Службы > Развернуть > Реплики
  • Службы > Развернуть > Размещение > Ограничение
  • Ограничения для развертывания > ресурсов > служб >
    • -cpu-shares
    • -memory
    • -memory-swap
  • Службы > Команды
  • Службы > Среда
  • Службы > Порты
  • Службы > Изображение
  • Службы > Изоляция (только для Windows)
  • Службы > Ведение журнала > Драйвер
  • Службы > Ведение журнала > Драйвер > Параметры
  • Том и развертывание тома >

Настройте кластер для принудительного применения ограничения ресурсов, как описано в статье об управлении ресурсами Service Fabric. Другие директивы Docker Compose не поддерживаются в этой предварительной версии.

Раздел портов

Укажите протокол http или https в разделе "Порты", который будет использовать прослушиватель службы Service Fabric. Это обеспечит правильную публикацию протокола конечной точки с помощью службы именования, позволяя обратному прокси-серверу пересылать запросы:

  • Для маршрутизации в незащищенные службы Compose в Service Fabric укажите /http. Например, 80:80/http.
  • Для маршрутизации в защищенные службы Compose в Service Fabric укажите /https. Например, 443:443/https.

Примечание.

Синтаксис раздела портов /http и /https относится к Service Fabric. Он необходим для регистрации правильного URL-адреса прослушивателя Service Fabric. Если синтаксис файла Docker Compose проверен программно, это может привести к ошибке проверки.

Вычисление ServiceDnsName

Если в файле Compose указано полное доменное имя службы (то есть оно содержит точку [.]), платформа Service Fabric зарегистрирует DNS-имя <ServiceName> с точкой. В противном случае каждый сегмент пути в имени приложения становится меткой домена в DNS-имени службы. При этом первый сегмент пути становится меткой домена верхнего уровня.

Например, если в качестве имени приложения указано fabric:/SampleApp/MyComposeApp, то <ServiceName>.MyComposeApp.SampleApp будет зарегистрированным DNS-именем.

Сравнение развертывания Compose (определение экземпляра) и модели приложения Service Fabric (определение типа)

Файл docker-compose.yml описывает набор контейнеров, доступных для развертывания, в том числе их свойства и конфигурации. Например, файл может содержать переменные среды и порты. В файле docker-compose.yml также указываются параметры развертывания, такие как ограничения размещения, ограничения ресурсов и DNS-имена.

Модель приложения Service Fabric использует типы служб и типы приложений, в которых можно создать несколько экземпляров приложений того же типа. Например, можно создать по одному экземпляру приложения на клиента. Эта модель на основе типа поддерживает несколько версий одного типа приложений, зарегистрированных в среде выполнения.

Например, для клиента A может быть создан экземпляр приложения версии 1.0 типа AppTypeA, а для клиента Б может быть создан другой экземпляр приложения того же типа и версии. Типы приложений определяются в манифестах приложений, а параметры развертывания и имя приложения указываются во время создания приложения.

Хотя эта модель обеспечивает гибкость, мы также планируем поддерживать более простую модель развертывания на основе экземпляра, в которой типы будут извлекаться из файла манифеста. В этой модели каждое приложение получает собственный независимый манифест. Мы предварительно рассматриваем это действие, добавляя поддержку docker-compose.yml, в котором используется формат развертывания на основе экземпляра.

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