
Sergey
08.01.2017
12:15:15
у меня просто похожая схема с Ceph вместо infinit.sh вполне работает.

Алексей
08.01.2017
12:16:24
А ломает потому что либо abandonware либо infinit

Sergey
08.01.2017
12:17:32
А ломает потому что либо abandonware либо infinit
сомнительно.
все возможности от докера, которые появились со старта проекта, вполне отключаемые.
можно отключить их сеть и использовать свои плагины.
можно отключить их swarm и использовать свои оркестраторы.
точно так же можно будет отключить их сторадж, вангую.
есть, правда, серьезное подозрение, что infinit.sh до взрослого стораджа еще лет пять развиваться.
ceph все-таки не идиоты пишут и он не зря непростой получается.

Google

Phil
08.01.2017
12:19:28

Sergey
08.01.2017
12:19:59

Phil
08.01.2017
12:22:14

Sergey
08.01.2017
12:22:24
где-то есть постмортем, чтобы увидеть, где именно было их "сдуру"?

Phil
08.01.2017
12:24:38
я хз. но я не слышал, чтобы цеф ктото в здравом уме рекомендовал в прод

Sergey
08.01.2017
12:25:12
https://cds.cern.ch/record/2015206/files/CephScaleTestMarch2015.pdf например, полтора года назад.

GNU/Docker
08.01.2017
16:46:12
journalctl

Denis
09.01.2017
11:23:47
Хочу деплоить каждый бранч на отдельный сабдомен.
Сейчас есть мультиконтейнерное приложение, все это деплоится на aws Elastic Beanstalk.
Можно конечно создавать Elastic Beanstalk enviroment на каждый бранч, но это ОЧЕНЬ долго. Может кто делал подобное?

Vyatcheslav
09.01.2017
11:32:49
берешь Jenkins, берешь docker compose, готово

Denis
09.01.2017
11:34:33
jenkins + registry это все есть. Как разворачивать то?

Vyatcheslav
09.01.2017
11:35:13
у вас docker-compose.yml тоже в репозитории?

Google

Vyatcheslav
09.01.2017
11:35:33
или вы как-то иначе все деплоите?
лучше деплоить так же, как вы это делаете на прод, чтобы флоу сам тестить заодно

Denis
09.01.2017
11:37:17
Elastic Beanstalk во первых не работает с docker-compose, ему нужен свой конфинг. Но суть в том, что на один энваремент задеплоить можно только одно мультиконтейнерное приложение, и на каждый бранч разворачивать энваремент совсем дело. Вот и ищу другие способы

Vyatcheslav
09.01.2017
11:40:01
хм, понятно. Не знал про Beanstalk. У нас для разработки у нас выделенный сервак, мы там просто Jenkins подняли и в Job'е на баше просто прописали все необходимое для поднятия
без docker-compose, но с ним вышло бы так же (разве что префикс потребовался бы для веток)

Denis
09.01.2017
11:42:08
получается, на каждую ветку свой docker-compose, потом все дело деплоится на сервере и подставляется домен, грубо говоря на одном сервере много версий приложения крутится, правильно понимаю?


Vyatcheslav
09.01.2017
11:45:13
примерно так, да. В docker-compose можно переменные окружения передавать, которые можно заюзать в самом docker-compose.yml ( https://docs.docker.com/compose/environment-variables/ ). Возможно, с ними получится 1 docker-compose.yml иметь на все ветки. Но имхо лучше этот файл закинуть в какой-нибудь репозиторий, чтобы разработчики могли для своей ветки изолированно добавлять/удалять сервисы
тут еще есть такая проблема. К примеру, у нас 3 образа. У них дофига версий. Как понять, какие версии для этих образов поднимать. Мы у себя такой вопрос конвенциями решили. Конкретно в этом случае можно:
1. теги именовать так же как ветки
2. решить, какой тег будет по умолчанию
3. когда деплоим ветку XXX, поднимаем контейнеры с тегом XXX, либо дефолтные
Как сделать 3 пункт в docker-compose.yml я хз. Возможно, перед всей этой петрушкой проверять, есть ли контейнер A с тегом XXX. Если нет - то тегировать дефолтный. Тогда 2 пункт не нужен.
Получается несколько кустарно, но должно работать :) Возможно, кто-то из присутствующих по-лучше способ придумал


Denis
09.01.2017
11:52:07
А как порты выдаете приложениям?

Vyatcheslav
09.01.2017
11:55:02
вручную не задаем. Но при поднятии контейнера указываем —label hostname=${SUBDOMAIN}.xxx.yyy как там внутри разруливается, я хз. Настраивал кто-то другой

Aleksey
09.01.2017
11:55:05
делаем именно так для прогонов стейджинг

Vyatcheslav
09.01.2017
11:56:04
да, кстати. Consul - отличный вариант, пользовался им. Единственная проблема, с которой столкнулся - если несколько тачек и несколько консул-агентов, то сервис надо убивать там, где он поднимался

Aleksey
09.01.2017
11:56:43

Vyatcheslav
09.01.2017
11:56:51
в консуле, кстати, можно и конфиги хранить. Очень удобно получается в связке с consul-template :) Но это уже другая тема
у меня такая была проблема - делал REST запрос по их API, чтобы дерегистрировать сервис, так вот выяснилось, что нужно знать, к какому агенту обращаться

Denis
09.01.2017
12:00:23
Спасибо за информацию, посмотрю на consul

Vyatcheslav
09.01.2017
12:00:46
кажется, вспомнил ту проблему. Там были: docker-swarm + несколько тачек + docker-compose. При обновлении через docker-compose контейнер поднимался на другой тачке, а со старой не дерегистрировался. Сейчас мб пофиксили

Denis
09.01.2017
12:01:44
docker-swarm в связке с consul получается?

Vyatcheslav
09.01.2017
12:01:57
ну это чтобы на нескольких тачках работало )

Google

Vyatcheslav
09.01.2017
12:02:11
если машина одна - то docker-compose + consul должно подойти

Aleksey
09.01.2017
12:05:24

Vyatcheslav
09.01.2017
12:06:44
у них issue было в гитхабе, которое закрывалось и открывалось несколько раз :D там еще чел свою утилиту на go написал. Но если надо будет кому - могу поискать, как мы это у себя делали
чтобы запустил команду и вжух

Виталий
09.01.2017
12:46:21
чтобы запустил команду и вжух
Я недавно поднимал вопрос "как контейнеры деплоить на прод?" Мне дали вариант только по ssh, хотел бы ещё варианты услышать. Читал про swarm + consul и там какой-то ппц был (сложно). Как вы делаете?

Aleksey
09.01.2017
12:47:52
локально как запускаете?
но нужно будет настроить сертификаты

Виталий
09.01.2017
12:53:48
локально как запускаете?
Пока у меня мультконтейнерное приложение живущее на одном хосте и запускаемое через docker-compose.

Aleksey
09.01.2017
12:54:08
-H
Options:
-f, --file FILE Specify an alternate compose file (default: docker-compose.yml)
-p, --project-name NAME Specify an alternate project name (default: directory name)
--verbose Show more output
-v, --version Print version and exit
-H, --host HOST Daemon socket to connect to

Виталий
09.01.2017
12:54:23

Aleksey
09.01.2017
12:54:41
это хел для докер компоуза
прямо шелом в джобе дженкинса того же

Виталий
09.01.2017
12:57:58
Ок. Тогда подробнее как схема работает и что откуда и куда?:)
У меня gitlab ci. Через раннер не вариант или я не знаю как:)
Но вот допустим есть сервер ci и сервер прода с запущенной службой docker. Можно ли с сервера ci попросит службу docker на хосте прода подтянуть и перезапустить контейнеры нужные?
Через какие-то внутренные при докера...

Aleksey
09.01.2017
13:01:10
за гитлаб не скажу, но логика любого ci раннера - у него есть шел на каком либо серевре, коль так, юзеру у которого есть шел можно дать права управлять докером
в дженкинсе это просто шел команды, у гитлаба так понимаю свой подход через yml

Google

Aleksey
09.01.2017
13:02:28

Виталий
09.01.2017
13:11:03

Admin
ERROR: S client not available

Виталий
09.01.2017
13:11:58
во, в статье используется stackahoy для Deployment

Vyatcheslav
09.01.2017
13:37:38
у консула есть хелс-чеки, главное, чтобы приложение их поддерживало. ХЧ можно самому написать на чем угодно. Например, можно написать ХЧ на работу БД - типа коннектимся к БД и пытаемся выполнить SHOW TABLES или что-то в этом духе.
ну а дальше через консул и консул-теплейт можно удобно сделать blue-green deployment
типа - поднимаем копию сервисов, пишем в консул наименование цвета, по консул темплейт переключаем прокси


Виталий
09.01.2017
13:42:45
перед тем как этим пользоваться (ансибл, докер сварм, докер машина) надо понять как оно все работает и взаимодействует :)
но я узнал что есть такой путь
спасибо :)

Vyatcheslav
09.01.2017
13:45:54
на первом заходе можно думать как о черной коробке:
1. ansible - настройка машин (так же можно и деплой через него сделать)
2. docker-machine - установка докера и докер-сварма на тачках (можно сделать ансиблом, но docker-machine в разы проще)
3. docker-swarm - объединение нескольких docker server'ов в 1
4. docker-compose - поднятие приложения, состоящего из нескольких сервисов
а если будут какие-то специфичные требования/проблемы - копать уже в конкретную сторону

Виталий
09.01.2017
13:47:46
вот, такой список я себе сохраню. Коротко и понятно какой инструмент для чего. А подробнее можно почитать в доке.
Мне пока подойдет как замена SSH https://stackahoy.io/ но не уверен буду ли я переходить на него.

Игорь
09.01.2017
13:49:37

Vyatcheslav
09.01.2017
13:49:58
"работает - не трогай" :D
хорошее правило, кстати

Виталий
09.01.2017
13:50:12
ну вот и я о том же. Возможно этот сервис что-то упростит. Если нет, тогда нет :)

Google

Phil
09.01.2017
13:50:16

Виталий
09.01.2017
13:50:37
ну, так как пока не работает в продакшене то можно и потыкать палкой :)

Vyatcheslav
09.01.2017
13:50:50
хорошее. Каждый раз, когда я его нарушаю, возникают какие-то невероятные и тяжело гугливаемые проблемы
тратить время на исходники левого проекта как-то не очень

Phil
09.01.2017
13:51:16

Виталий
09.01.2017
13:51:16
плохое
надо золотую середину находить и взвешивать риски и профит

Pavel
09.01.2017
13:51:31
SSH это базовейший инструмент вообще, странно что ты о нем говоришь как о какой-то "подходящей тулзе для деплоя"

Phil
09.01.2017
13:51:35

Vyatcheslav
09.01.2017
13:52:01
ну у меня есть другое направление, в котором я копаю. Я не docker-сварщик :D
а тут уж пришлось разобраться )

Виталий
09.01.2017
13:52:36