Anonymous
у меня IoT проект с 1 сервером и n клиентами. Флоту клиентов swarm уже прописан...
Artem
ну задача выше я так понимаю нужна для локальной разработки?
Anonymous
и CI и разработка, но для начала - да, чтобы внося изменения в код знать что вся система end-to-end не разваливается (юнит-тесты это, естественно, не покажут)
Anonymous
ну вот для начала: юнит-тесты сервера лежат в репозитории с сервером. юнит-тесты клиента лежат в репозитории клиента. а куда положить интеграционные? объединить репозитории? сделать третью репу с субмодулями и туда положить? оба репозитория контролирую я.
Anonymous
пожалуй, учитывая что обе репы - мои, проще объединить
Anonymous
по swarm + CI - у кого как этот процесс сейчас организован? или ни у кого никак? 😂
Artem
gitlab + gitlab-ci
Artem
раннер дергает shell скрипт которому передаются все параметры и переменные и он творит всю магию
Dmitriy
Gitlab CI: сборка проекта, докер образ, пуш образа, ssh exec к заказчику -> docker stack deploy
Anonymous
а jenkins чем хуже? я просто ни то ни то еще не настраивал, хочу понять на что время потратить разобраться
Artem
тем что у гитлаба ci из коробки
Dmitriy
у нас просто гитлаб как гит репозиторий используется
Dmitriy
ну и грех не пользоваться доступным и бесплатным CI
Artem
ну и да, если гитлаб как репозиторий это удобно юзать нативный ci
Artem
плюс в гитлабе же из коробюки сейчас и приватный докер регистри
Artem
удобно имаджи деливерить
Anonymous
и гитлаб на своих серверах гоняете или бесплатный gitlab.com?
Artem
на своих
Artem
он там с полпинка запускается одним скриптом
Artem
ну и установкой с их родной репы
Anonymous
c CI направление движения понятно, спасибо! по локальной разработке: - чтоб не билдить контейнеры надо сделать тома с кодом, - контейнер с тестовой логикой... как он работает хоть примерно? у кого-то настроены интеграционные тесты swarm на девелоперской машине?
Anonymous
не, руби
RE
вопрос помониторингу докера с помощью Прометея - запустил контейнер с прометеем и простеньким конфигом для теста: - job_name: 'prometheus' scrape_configs: static_configs: - targets: ['localhost:9090','192.168.100.1:9090'] второй IP уже потом добавил для проверки - это сам хост с контейнером. в общем в вебморде для ендпоинта этого state == Down для обоих таргетов. c очень странной ошибкой для localhost: Get http://192.168.100.33:9090/metrics: dial tcp 192.168.100.33:9090: getsockopt: no route to host что это за IP я не пойму - в сети его нет а для второго таргета тоже самое: Get http://192.168.100.1:9090/metrics: dial tcp 192.168.100.1:9090: getsockopt: no route to host хотя их самого контейнера команда wget -O- localhost:9090/metrics - выдает все метрики а для /prometheus # wget -O- 192.168.100.1:9090/metrics Connecting to 192.168.100.1:9090 (192.168.100.1:9090) wget: can't connect to remote host (192.168.100.1): No route to host хотя пинг на этот ip есть
RE
поменял таргет с localhost на 127.0.0.1 - заработало и статус стал UP. но вот почему для самого IP не работает - непонятно. хотя пинг же есть.
Artem
потому что проброс порта вешается не на этот айпи
Artem
либо локалхост либо интерфейс докера
Artem
172.х.х.х
RE
эм.. а почему это так происходит и что проверить чтобы убедиться чт это именно так?
Artem
ну попробуй в компоузе изменить ports: - 9090:9090 на ports: - 192.168.100.1:9090:9090
RE
так у меня нету компоуз файла. я просто делаю doсker run
Artem
ну значит в нем
Artem
-p параметр
RE
а точно
RE
то есть ICMP проходит нормально, а обращение на порт - уже надо фиксить..
Artem
так icmp и будет ходить
Artem
форварда нет если не указать конкретно тот адрес
Artem
т.е. если ты снаружи будет стучаться или с другого хоста он его найдет, а изнутри надо колдовать с маршрутами
Artem
а чем плох локалхост?
Artem
в конфигах то можно любые имена таргетов задавать
RE
да я просто уже добавил ip для проверки так как локалхост же не работает
RE
я ж говорю - там вообще странная ошибка появляется - какойто левый ip в тексте ошибки. вроде из моей сети, но его нет
Artem
грепни конфиги примонтированные в прометеус
Artem
может где-то не то указал
RE
там 5 строчек в конфиге yml тестовый запуск же
RE
ладно. похоже проблема не стандартная)
RE
-p параметр
не нифига: docker run -d -p 192.168.100.1:9090:9090 - точно также /prometheus # wget -O- 192.168.100.1:9090/metrics Connecting to 192.168.100.1:9090 (192.168.100.1:9090) wget: can't connect to remote host (192.168.100.1): No route to host
Artem
так стоп
Artem
это же внещний проброс, для обращения извне
Artem
тоже самое изнутри на localhost не работает?
RE
как раз wget на локалхост работает изнутри контейнера - отдает кучу текста. но при этом сам прометей localhost не отрабатывает. только если 127.0.0.1 указано в конфиге - тогда показывает UP
RE
/prometheus # wget -O- localhost:9090/metrics Connecting to localhost:9090 (127.0.0.1:9090) # HELP go_gc_duration_seconds A summary of the GC invocation durations. # TYPE go_gc_duration_seconds summary go_gc_duration_seconds{quantile="0"} 3.4806e-05 ......... .......
RE
то есть налицо какаято проблема с резолвингом.. подставить 127 вместо локалхост в конфиг - я в гугле подсказку эту вычитал
RE
prometheus Endpoint State Labels Last Scrape Error http://127.0.0.1:9090/metrics UP instance="127.0.0.1:9090" 1.162s ago
Artem
в чем проблема оставить localhost?
Artem
это же просто таргет на самого себя
Artem
у меня он так и отображается
RE
да епонский бог)))
RE
мне не особо важно - локалхост или 127. я просто столкнулся с проблемой что локалхост не работает. и начал копать
Artem
RE
вот что при локалхост
RE
prometheus Endpoint State Labels Last Scrape Error http://localhost:9090/metrics DOWN instance="localhost:9090" 5.121s ago Get http://localhost:9090/metrics: dial tcp 192.168.100.133:9090: getsockopt: no route to host
RE
что это за ip - 100.133 - вообще не пойму
RE
сетка не моя, админов надо дергать видимо.. но явно какаято шляпа
RE
да. у тебя на скрине все ok а у меня - по другому. не работает если localhost указан в конфиге. только если 127.0.0.1
RE
хотя это одно и тоже..
Artem
внутри контейнера прометея в /etc/hosts что?
Artem
чую там какую то левую запись
RE
/prometheus # cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.3 2928bfec3bce
RE
сам контейнер из офф репозитория.
Artem
да это понятно, хостс при поднятии генерится
RE
]# docker images | grep prom prom/prometheus latest 4da113bb6ae3 2 months ago 74.5MB
Artem
а на хосте в хостс есть что-то с этим айпи?
RE
неа
RE
этот ип вообще даже не пингается
Artem
iptables-save | grep 100.133 тоже нече не выдает?
RE
пусто
Artem
тогда это какой то НЁХ)
RE
-nL тоже