Files
DevOpsLab/docs/podman.md
Sergey Antropoff 05881e8d74 podman: переход на Podman, Minikube, локальные образы и док для новичков
- Molecule: драйвер delegated, коллекция containers.podman, create/destroy/verify на Podman
- Makefile: все вызовы docker заменены на podman, сокет /run/podman/podman.sock
- Сборка образов: podman build (без buildx), buildall/buildall-image — только локально без push
- Ansible-controller: Podman в образе, docker-compose на podman compose, сокет Podman
- K8s: Kind заменён на Minikube (драйвер podman), скрипты и Makefile обновлены
- Пресеты: проверка локальных образов, без podman pull (registry запрещён)
- Документация: docs/podman.md, docs/quickstart-for-dummies.md (роли, плейбук, линт, тесты, пресеты, инвентори)
- README: ссылка на quickstart-for-dummies

Made-with: Cursor
2026-03-11 19:59:47 +03:00

87 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Работа с Podman (ветка podman)
**Автор:** Сергей Антропов
**Сайт:** https://devops.org.ru
В ветке `podman` проект переведён на использование **только Podman** (без Docker и Docker Compose).
## Требования
- **Podman** установлен и запущен (rootful: сокет `/run/podman/podman.sock`)
- **podman compose** (встроен в Podman 4.1+ или пакет `podman-compose`)
- Для K8s: **Minikube** и **kubectl** на хосте
## Основные изменения
### Molecule
- Драйвер: `delegated` (создание/удаление контейнеров в `create.yml` / `destroy.yml` через Ansible).
- Используется коллекция **containers.podman** (`podman_network`, `podman_container`).
- Сокет: `/run/podman/podman.sock` (DOoD-узлы заменены на POoD с монтированием сокета Podman).
- Инвентарь: `ansible_connection=containers.podman.podman`.
### Makefile
- Все вызовы `docker` заменены на `podman`.
- Сборка образов: `podman build --platform ...` (без buildx).
- Compose: `podman compose` (вместо `docker-compose`).
- Сокет в целях контроллера: `PODMAN_SOCKET ?= /run/podman/podman.sock`, монтируется в контейнер ansible-controller.
### Ansible-controller
- Образ собирается и запускается через Podman.
- В образе установлен **Podman** (вместо Docker).
- При запуске монтируется сокет хоста: `-v $(PODMAN_SOCKET):/run/podman/podman.sock`.
- Переменная окружения: `CONTAINER_HOST=unix:///run/podman/podman.sock`.
### Kubernetes
- Вместо **Kind** используется **Minikube** с драйвером `podman`.
- Кластер создаётся на хосте: `minikube start --driver=podman`.
- Скрипт: `scripts/create_minikube_cluster.py` (читает пресет из `molecule/presets/k8s/*.yml`).
- В пресетах K8s: `minikube_profile`, `minikube_addons`, `minikube_cpus`, `minikube_memory` (вместо `kind_clusters`).
## Локальные образы (без доступа к registry)
Во всех пресетах при использовании Podman **используются только локальные образы**. Выгрузка из registry отключена.
1. Соберите все образы локально один раз:
```bash
make buildall
```
2. Либо один образ для нужного пресета:
```bash
make buildall-image IMAGE=ubuntu22
make buildall-image IMAGE=debian11
```
3. После этого Molecule при `create` проверяет наличие образов локально и не выполняет `podman pull`. Если какого-то образа нет — выведет сообщение с указанием выполнить `make buildall`.
## Быстрый старт
```bash
# 1. Собрать локальные образы (без registry)
make buildall
# 2. Сеть labnet для compose (если нужен controller)
podman network create labnet 2>/dev/null || true
# 3. Запуск ansible-controller
make controller run
# 4. Тест ролей (контейнеры создаются через Podman из локальных образов)
make role test minimal
# Minikube (на хосте)
make k8s create k8s-minimal
make k8s status
kubectl get nodes
```
## Переменные
- **PODMAN_SOCKET** — путь к сокету Podman на хосте (по умолчанию `/run/podman/podman.sock` для rootful).
## CI/CD
Секция CI/CD (**cicd/**) в этой ветке **не менялась** — рассчитана на окружения с Docker. Для Podman в пайплайнах нужно отдельно устанавливать Podman и вызывать `podman` / `podman compose` в jobах.