Podman-compose-to-kube: различия между версиями

Материал из ALT Linux Wiki
Строка 5: Строка 5:
Данный документ описывает решение данной проблемы путем использования команды <code>podman-compose</code>.
Данный документ описывает решение данной проблемы путем использования команды <code>podman-compose</code>.
В качестве примера разворачивания стека будет использоваться <code>docker-compose</code> стек [https://github.com/containers/podman-compose/tree/devel/examples/hello-python hello-python] проекта <code>podman-compose</code>.
В качестве примера разворачивания стека будет использоваться <code>docker-compose</code> стек [https://github.com/containers/podman-compose/tree/devel/examples/hello-python hello-python] проекта <code>podman-compose</code>.
Будут рассмотрены вопросы разворачивания  миграции как <code>rootfull</code> так и <code>rootless-решений</code>.
=== Установка ПО, создание пользователей, разворачивание kubernetes ===
Для разворачивания docker-compose стеков необходимо установить пакет <code>podman-compose</code>.
Текущая (16.01.2024) версия <code>1.0.6</code> разворачивает контейнеры и тома с именами, которые после генерации на их основе YML-манифестов требуют дополнительной корректировки манифестов. В последующих версиях возможны изменения, которые обеспечат коррекное формирование имен контейнеров и томов. 
==== rootfull-окружение ====
Разворачивание решений в <code>roofull</code> окружении производится под пользователем root. 
В создании других пользователей необходимости нет.
Разворачивание <code>roofull-kubernetes</code> описано в документе [[Kubernetes]].
==== rootless-решение ====
Разворачивание <code>rooless-kubernetes</code> описано в документе [[Rootless kubernetes]].
В процессе его разворачивания создается пользователь <code>u7s-admin</code>. Вы можете разворачивать rootless podman-compose стек либо в рамках этого пользователя либо создать пользователя, имеющий право загружать образы с внешний репозиториев. В защищенных платформах <code>c10f.</code> это пользователи, входящие в группу <code>podman_dev</code>.
Пользователь <code>u7s-admin</code> входит в эту группу.


=== Разворачивание docker-compose стека в podman-compose ===
=== Разворачивание docker-compose стека в podman-compose ===

Версия от 14:45, 16 января 2024

podman-compose как средство миграция docker-compose решений в kubernetes

Одной из основных проблем миграции docker-compose (docker swarm) решений в kubernetes является (полу)автоматическия генерация kubernetes-манифестов из YAML-файлов описания стека сервисов. Существует достаточно бедный набор инструментов, решающий данную проблему. Данный документ описывает решение данной проблемы путем использования команды podman-compose. В качестве примера разворачивания стека будет использоваться docker-compose стек hello-python проекта podman-compose.

Будут рассмотрены вопросы разворачивания миграции как rootfull так и rootless-решений.

Установка ПО, создание пользователей, разворачивание kubernetes

Для разворачивания docker-compose стеков необходимо установить пакет podman-compose. Текущая (16.01.2024) версия 1.0.6 разворачивает контейнеры и тома с именами, которые после генерации на их основе YML-манифестов требуют дополнительной корректировки манифестов. В последующих версиях возможны изменения, которые обеспечат коррекное формирование имен контейнеров и томов.

rootfull-окружение

Разворачивание решений в roofull окружении производится под пользователем root. В создании других пользователей необходимости нет. Разворачивание roofull-kubernetes описано в документе Kubernetes.

rootless-решение

Разворачивание rooless-kubernetes описано в документе Rootless kubernetes. В процессе его разворачивания создается пользователь u7s-admin. Вы можете разворачивать rootless podman-compose стек либо в рамках этого пользователя либо создать пользователя, имеющий право загружать образы с внешний репозиториев. В защищенных платформах c10f. это пользователи, входящие в группу podman_dev. Пользователь u7s-admin входит в эту группу.


Разворачивание docker-compose стека в podman-compose

Экспорт развернутого стека в kubernetes-манифесты

Копирование локальных образов в rootless окружении

В rootless-окружении образы, созданные podman-compose хранятся в каталоге /var/lib/u7s-admin/.local/share/containers/storage/. Образы же для kubernetes хранятся в другом каталоге /var/lib/u7s-admin/.local/share/usernetes/containers/storage/. Для образов, загружаемых с регистраторов это несущественно, так как они подгружаются при запуске POD'а. Образы же, созданные локально, как в нашем случае образ localhost/hello-py-aioweb необходимо перенести в container-storage для kubernetes-образов командой skopeo:

# skopeo copy \
  containers-storage:[/var/lib/u7s-admin/.local/share/containers/storage/]localhost/hello-py-aioweb \ 
  containers-storage:[/var/lib/u7s-admin/.local/share/usernetes/containers/storage/]localhost/hello-py-aioweb

и изменить собственника перенесенного образа с root на u7s-admin:

# chown -R u7s-admin:u7s-admin /var/lib/u7s-admin/.local/share/usernetes/containers/storage/

Корректировка kubernetes-манифестов

Запуск манифестов в kubernetes