CloudFoundry — Как понять среду операционной системы (ОС) приложения?

Мы загружаем приложение Java в облачное хранилище, используя cf push с приведенным ниже файлом манифеста.

    applications: 
       - name: xyz-api 
         instances: 1 
         memory: 1G 
         buildpack: java_buildpack_offline 
         path: target/xyz-api-0.1-SNAPSHOT.jar

Я понимаю, что PAAS (например, облачный литейный цех) — это слой поверх IAAS (например, vcenter, на котором размещены виртуальные машины Linux и Windows).

В файле манифеста buildpack просто говорит о библиотеках времени выполнения пользовательского пространства, необходимых для запуска приложения.


Исходя из необлачного фона и читая этот файл манифеста, я хотел бы понять...

1) Как понять среду операционной системы (ОС), в которой работает приложение? На какой операционной системе...

2) Чем приложение, работающее на экземпляре bosh, отличается от контейнера Docker?


person overexchange    schedule 08.02.2019    source источник
comment
См., например. docs.cloudfoundry.org/buildpacks. Также прочтите помощь по форматированию — YAML должен располагаться более чем в одной строке, а уценка поддерживает упорядоченные списки.   -  person jonrsharpe    schedule 08.02.2019
comment
@jonrsharpe спасибо за помощь   -  person overexchange    schedule 09.02.2019


Ответы (1)


1) Как понять среду операционной системы (ОС), в которой работает приложение? На какой операционной системе...

Стек определяет операционную систему, в которой будет работать ваше приложение. В манифесте есть атрибут stack или вы можете использовать cf push -s для указания стека.

Вы можете запустить cf stacks, чтобы увидеть все доступные стеки.

В большинстве сред на момент написания у вас будет cflinuxfs2. Это Ubuntu Trusty 14.04. Он будет заменен на cflinuxfs3, который является Ubuntu Bionic 18.04, потому что Trusty поддерживается только до апреля 2019 года. Однако у вас всегда будет некоторый стек cflinuxfs*, просто число будет меняться в зависимости от того, когда вы читаете это.

В некоторых средах у вас также может быть стек на базе Windows. Первоначальный стек на базе Windows — windows2012r2. Это довольно старо, когда я пишу это, поэтому вы, вероятно, больше его не увидите. Скорее всего, вы увидите windows2016 или, возможно, что-то еще более новое, в зависимости от того, когда вы это прочитаете.

Если вам нужно больше контроля, вы всегда можете нажать контейнер докеров. Это позволит вам выбрать полный образ ОС для вашего приложения.

2) Чем приложение, работающее на экземпляре bosh, отличается от контейнера Docker?

Приложения, работающие в Cloud Foundry, не развертываются BOSH напрямую. Приложение работает в контейнере. Контейнер запланирован и управляется Диего. Diego — это развернутая виртуальная машина BOSH. Так что там есть дополнительный слой.

По сути, разница между запуском вашего приложения в Cloud Foundry и запуском приложения в контейнере Docker минимальна. Они оба работают в «контейнере» Linux, который имеет ограничения, наложенные на него пространствами имен и контрольными группами ядра.

Разница заключается в том, а) как вы создаете контейнер и б) как контейнер развертывается.

С Cloud Foundry вы не создаете контейнер. Вы предоставляете свое приложение CF, и CF создает образ контейнера на основе выбранного стека и дополнительного программного обеспечения, добавленного сборочными пакетами. Вывод в терминологии CF называется «дроплетом», но в основном это образ OCI (это будет тем более с пакетами сборки v3). Когда вам нужно обновить или добавить новый код, вы просто повторяете процесс и снова нажимаете. Стек и пакеты сборки, которые автоматически обновляются платформой, в свою очередь, предоставят вам исправленный и актуальный образ приложения.

С Docker вы вручную создаете свой образ с нуля или из какого-то надежного базового образа. Вы добавляете свои собственные среды выполнения и код приложения. Когда вам нужно обновиться, вы должны получить обновления из базового образа и среды выполнения или, что еще хуже, обновить свой образ с нуля.

Когда дело доходит до развертывания, CF делает все это за вас автоматически. Он может запускать любое количество экземпляров вашего приложения, которое вы хотите, и автоматически размещает их, чтобы ваше приложение было устойчивым к сбоям в инфраструктуре и в CF.

С Docker это зависит от вас или все чаще от какого-либо другого инструмента, такого как Kubernetes.

Надеюсь, это поможет!

person Daniel Mikusa    schedule 09.02.2019