# Практическая работа по запуску swarm-кластера на Proxmox VE 1. развернем кластер 2. запустим панель управления 3. развернем s3 хранилище с балансировщиком ## Предустановки 1. Само собой, имеем уже настроенный Proxmox VE 2. На локальной машине ставим docker-machine (`brew install docker-machine` - если у вас MacOS) 3. Просаживаем плагин для работы с Proxmox: 1. качаем от [сюда](https://github.com/lnxbil/docker-machine-driver-proxmox-ve/releases/download/v4/docker-machine-driver-proxmoxve.macos-amd64) 2. даем права на запуск - `chmod +x docker-machine-driver-proxmoxve.macos-amd64` 3. перемещаем рабочую папку - `mv docker-machine-driver-proxmoxve.macos-amd64 /usr/local/bin/docker-machine-driver-proxmoxve` 4. проверяем, что работает плагин `docker-machine create -d proxmoxve --help` (должен появится листинг параметров плагина) 4. качаем образ [докера](https://github.com/rancher/os/releases/download/v1.5.8/rancheros-proxmoxve-autoformat.iso) и заливаем его себе в Proxmox ## Использование 1. переименовываем `.env.example` в `.env` и заполняем логопасс от доступа в ваш Proxmox 2. запускаем `swarm-init.sh` - он пробуем цепляться в Proxmox и создает 4 машины (одну мастера и 3 воркера - формально, пока просто 4 пустых машины) 3. идем на мастер `docker-machine ssh docker-master` и запускаем там: 1. `docker swarm init` - создает мастера и инициализирует рой 2. `docker swarm join-token worker` - показывает токен, копируем всю строчку в буфер 3. `exit` - выходим 4. далее, цепляемся к каждому воркеру `docker-machine ssh docker-1` и выполняем команду из буфера 5. после инициализации воркеров и идем снова на мастер `docker-machine ssh docker-master` и проверяем что воркеры подцепились `docker node ls` ## Portainer 1. на мастере запускаем установку стека 1. `wget https://downloads.portainer.io/portainer-agent-stack.yml --output-document portainer-agent-stack.yml` 2. `docker stack deploy --compose-file=portainer-agent-stack.yml portainer` 3. на мастере подсматриваем айпишник `ifconfig eth0` и идем на веб-морду http://ip:9000 ## Minio 1. на мастере 1. создаем секреты (само собой - свои, а не из примера) 1. `echo "AKIAIOSFODNN7EXAMPLE" | docker secret create access_key -` 2. `echo "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" | docker secret create secret_key -` 2. проставляем метки на воркеры 1. `docker node update --label-add minio1=true docker-master` 2. `docker node update --label-add minio2=true docker-2` 3. `docker node update --label-add minio3=true docker-3` 4. `docker node update --label-add minio4=true docker-1` 3. импортируем 4. в конфиги файлик `lb.conf` и называем его там так же `lb.conf` 5. запускает новый стек используя код из файла `docker-compose-minio.yaml` и называем стек `minio` 6. стек поднимет 4 независимые реплики minio со своими дисками на каждой их четырех нод и одну реплику nginx на мастер-ноде, выставит ингресс-линк на порте `8080` 7. доменное имя для minio выглядит как `minio.local` (можно поменять в lb.conf перед его импортом), не забудьте прописать его у себя в /etc/hosts на айпишники нод (или хотя бы мастер-ноды) ## Чистим за собой 1. `./swarm-rm.sh` ## Видео к курсу - [видео](https://www.youtube.com/playlist?list=PLEFo-qGWcO2b7trzxSQH3GyJvOUPyurhf) - [презентация](https://drive.google.com/file/d/1Ke5rDDp8dmUU-UmJABoh4Go0y7p4_qoU/view?usp=sharing) ##### Автор - **Vassiliy Yegorov** [vasyakrg](https://github.com/vasyakrg) - [сайт](https://vk.com/realmanual) - [youtube](https://youtube.com/realmanual)