Rainbow
Наука с тобой не согласна
Да, да, это у меня сворм неправильный был
Денис
Да, да, это у меня сворм неправильный был
Это не я дурацкий пример придумал
Денис
Придумай правильный и возвращайся
Денис
Например про кувалду и молоток
Старый
Ну я юзал сворм, но я в целом считаю что контейнеры тупик развития
Rainbow
Ну я юзал сворм, но я в целом считаю что контейнеры тупик развития
Я тоже бы считал контейнеры тупиком, если бы использовал сворм 💩
Rainbow
Какаху телеграмм подставил, я не сам
Старый
Я тоже бы считал контейнеры тупиком, если бы использовал сворм 💩
Не сворм считает что код если запустился, то пригоден для прода
Игорь
А еще вопрос, тоже читал разные мнения. По поводу деплоя баз данных на продакшене в контейнерах. Типо, что в проде все должно быт впихнуто в контейнер, а вольюмс на проде- это плохо?
inqfen
Я использую, мне норм
inqfen
Они ещё и на zfs
Igor
День добрый, Явно запутался в двух соснах. Подскажите. Есть docker nginx В одном из конфигов прописал resolver 127.0.0.1 valid=60s; upstream testserver { server testservers fail_timeout=60s; server localhost backup; } Но при старте данного контейнера падает ошибка [emerg] 1#1: host not found in upstream "testservers" Конечно сервера такого нет, но я предполагал - если сервер не отвечает конфиг игнорируется и если отвечать начнет включится
Rainbow
docker run --network host -d --name traefik -v /var/run/docker.sock:/var/run/docker.sock traefik traefik --api --docker docker run -d --name demo --label traefik.frontend.rule=Host:mysite.ru emilevauge/whoami curl -H 'Host: mysite.ru' http://localhost:80
Rainbow
увы перепрыгнуть нельзя(
Тогда можно consul+consul-template который генерит nginx конфиг и делает reload
Igor
Тогда можно consul+consul-template который генерит nginx конфиг и делает reload
Хотелось бы остаться в рамках простого nginx + его конфиги... обойти вопрос могу просто скриптом который после успешного релоада кладет conf и релоадит nginx..
Rainbow
Consul хранит конфигурацию, кто жив и тп. Consul template генерит конфиг после правок конфигурации
Ильдар
Игорь
Блин, короче, чет я офигел немного. Решил переехать на контейнеризацию на своем приложении. Но пока все разбирался с докером, сейчас еще продакшн. Мне просто кажется под мое приложение сварм зайдет. Я не планирую в ближайшее время скейлится на сотню серверов и сотни нод. Пока один сервак, одно сервеное приложение, три клиента под разные задачи... Просто кубер крутой, спору нет. Но чет прям оверинжинеринг какой-то под мою задачу.
Никита
чем просто докер не нравится?
Игорь
Может базы данных переедут на отдельный сервак, но года через пол-год. Небольшой задел. И то если вырастут. В основном Монго дб, ибо много оперативы жрет
Rainbow
ansible это красивая обертка над парочкой docker run
inqfen
Ансибл это логичная и идемподентная обёртка, я бы сказал
Mikalai
inqfen
Так и его можно без сварма делать
Rainbow
Скейлинг на одной ноде)
tasks: - name: run replicas docker_container image: ... name: "app{{item}}" with_sequence: start=1 end=4
inqfen
И вообще кроме нод жс зачем скейлить что-то
inqfen
А нода богомерзка
Игорь
Rainbow
все, на что нужно zerodowntime
Rainbow
даж на php
Игорь
golang
python, go для хипстеров)) шучу
Rainbow
дайте мой смузи
Mikalai
tasks: - name: run replicas docker_container image: ... name: "app{{item}}" with_sequence: start=1 end=4
Вот не работал с ansible, но что если у нас теперь одна реплика падает?)
Игорь
Ансибл это логичная и идемподентная обёртка, я бы сказал
А есть ссылочки или что-то на туториалы, как деплоить докер через ансибл грамотно?
inqfen
А если она рестартуется вечно, то она и с свормом будет это делать
Rainbow
restart_policy: always
это опция docker run
inqfen
Про это полно всего
Игорь
Гугл?
Да гугил, что шлак один
Rainbow
А есть ссылочки или что-то на туториалы, как деплоить докер через ансибл грамотно?
нужно сначала простое попробовать, докер раскатать и тп.
Rainbow
https://habr.com/ru/company/express42/blog/254959/
Rainbow
я с этого вдохновился
Rainbow
дальше файлик закинуть, пакет установить и покатится
Rainbow
смысл ansible - не трогать сервер руками, только playbook
Rainbow
И через год не гадаешь, что за г?вно раскатано на сервере, есть playbook
Игорь
я с этого вдохновился
По ансибл я уже на ютубе часа 4 накатал туториалов, но там все про голый деплой на чистые сервера. Без завязки на докер
Rainbow
дальше дока по модулю, там все просто
Rainbow
docker_network ещё и тп
Игорь
Rainbow
- name: Start 4 load-balanced containers docker_container: name: "container{{ item }}" recreate: yes image: someuser/anotherappimage command: sleep 1d with_sequence: count=4 тот пример с replicas
Rainbow
сверху нужно service discovery... но можно без него, если traefik использовать
Rainbow
docker run --network host -d --name traefik -v /var/run/docker.sock:/var/run/docker.sock traefik traefik --api --docker docker run -d --name demo --label traefik.frontend.rule=Host:mysite.ru emilevauge/whoami curl -H 'Host: mysite.ru' http://localhost:80 я уже приводил пример. Проще не сделаешь ни с чем. letsencrypt бонусом
Rainbow
* на месте whoami ваше приложение или приложения
inqfen
И тот же traefik обновлять ансиблом
Rainbow
traefik это контейнер
inqfen
Лейблы при деплое в смысле
Rainbow
ну да
inqfen
И никаких забот
Rainbow
- name: Start 4 load-balanced containers docker_container: name: "container{{ item }}" recreate: yes image: someuser/anotherappimage command: sleep 1d labels: - traefik.frontend.rule=Host:mysite.com with_sequence: count=4
inqfen
В общем keep it simple, stupid
inqfen
Это тому господину, который сворм хочет пилить
inqfen
Потом не придётся удивляться, хули он кривой, хули сеть глючит, хули с ингресса не на все контейнеры уходит
inqfen
В общем как-то так
inqfen
И IaC опять же
Rainbow
если нужно раскатать контейнеры на пару серверов - то добавить consul. traefik будет брать адреса контейнеров оттуда и все продолжит работать.
Rainbow
https://docs.ansible.com/ansible/latest/modules/consul_module.html
Rainbow
При использовании этих модулей будет ругаться, что нет пакетов. Это нужно pip поставить и pip пакет consul/docker
Rainbow
Ставить через ansible
Rainbow
- name: Install pip apt: name: python-pip - name: Install pip docker pip: name: docker