Sergey
сощдали вы тыщу сервисов - получили тыщу кластерIP
Sergey
с правилами в айпитеблс
Sergey
плюс к нему srv запись привязывается в skydns
Sergey
я лично жду istio пока созреет
Anatoliy
Блин, ну вроде все подключил, дженкинс вроде кубер видит. Но пр ипопытке собрать проект: "ERROR: Node is not a Kubernetes node: "
Я так понимаю с нодой кубера он все же не подружился( Сталкивался кто?
Anatoliy
Гугл на эту ошибку вообще молчит. Только исходники показывает и всё
Anatoliy
Хотя судя по всему там нода не с кубером свзана, это имя ноды которео в node('') указывается. Вижу что даже контейнер пошел создаваться. Но судя по всему опять как-то не так(
Уже 7 подов создалось и ни один норм не завершился. щас еще и вырубать их придется кажется...
Anatoliy
А может кто посоветовать что надо сделать что бы поды в которых всё собиралось потом удалялись?
Anonymous
ну самое первое, это нужно собрать имедж. Для этого в репозиторий с проектом(сервисом) можно положить Dockerfile, Makefile, т.е. все необходимое для сборки. На этом же этапе можно делать и тесты, вплоть до интеграционных. Т.е. подняли необходимые сайд-контейнеры, развернули структуру базы, прогнали тесты, если все ок - тогда собранный имедж уже пушим в реджистри. (вариантов много, от своего до docherhub и bintray). Собирать тоже можно любым CI, хоть дженкинсом, хоть travis-ci. Здесь имхо, главное чтобы сборка была описана в Makefile, тогда переход между любой системой CI достаточно безболезнен.
После того как у нас где то есть имедж в реджистри, его можно деплоить в различные среды. Здесь как удобно, кто-то использует helm, для самых простых кейсов и kubectl напрямую подойдет. У меня исторически используется ansible, поэтому в репозитории лежат темплейты сервисов.
деплой через ансибл - это просто вызов плейбука в духе
ansible-playbook -i environments/dev echoserver.yml
Но если вы малознакомы с ансиблом, я бы посоветовал начать просто с plain kubectl манифестов, дабы не забивать мозг лишним.
Почему вы берете именно мейкфайл? Почему бы не написать просто shell скрипт? В моем понимании мейкфайл нужен когда у вас предусмотрено много разных действий и между ними существуют зависимости
Anatoliy
Anonymous
Воркеры то можно и в кубере поднять
Anonymous
Не проблема
Alex
Alex
и да плагин не использует кубер как среду сборки. он просто позволяет работать с подами над kubectl нативней с точки зрения дженкинса. чисто груви, никакого баша
Serega
нет проблем 😉 мне тоже нравится собирать дженкинсом в докере. Но есть предположение что у автора вопроса пока что каша в понимании всей цепочки. Поэтому мой вопрос был в том, нужно ли это именно ему.
Alex
Anton
заметил в helm chart в prometheus интересный контейнер в деплойменте https://github.com/jimmidyson/configmap-reload
который релодит prometheus когда изменяется конфигмап вызовом url.
я так понимаю pid namespace в pod не шарится и нет возможности отправлять сигнал из одного контейнера в другой. так хотелось бы просто релодить приложение при изменении конфигурации, вместо того чтобы тригерить rollout update.
Anton
какие есть костыли для обхода? если приложение ждет сигнал для релода конфигурации
Serega
я в джобу выкатки прома добавил просто вызов курл для релоада прома
Vadim
Всем привет. А что сделать чтобы в deis (при bare metal инсталяции) deis-router получил внешний ip ? У меня пока так:
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
deis deis-router LoadBalancer 10.110.160.169 <pending> 80:30219/TCP,443:32497/TCP,2222:32246/TCP,9090:30516/TCP 56d
Serega
CI, автоматизация и т.д. начинаются тогда, когда вы понимаете что конкретно вам нужно сделать.
Anton
я в джобу выкатки прома добавил просто вызов курл для релоада прома
нашелся такой проект, по inotify отслеживает что логи ротировались и отправлет сигнал процессу
https://github.com/occrp/watchful-nginx
на nginx & logrotate в разных контейнерах ориентирован.
но идею можно адаптировать и для отслеживания состояния конфигов и релода.
общий pid namespace пригодился бы.
Anatoliy
Anatoliy
А что конкретно нужно - я понимаю. И даже примерно понимаю что зачем и почему. Но как сделать некоторые из необходимых шагов - тут да, путаница
Serega
Anton
как стригерить rollout update понятно
Anton
хотелось бы иметь возможность срелодить свой сервис если что то поменялось
Shamil
Anatoliy
Anatoliy
я не прав?
Shamil
Все верно.
Михаил
А что мешает деплоить helm`ом?
Shamil
Давай попробуем метод Сократа
Shamil
@Visteras что ты хочешь делать дженкинсом?
Shamil
@Visteras что по-твоему "Собирать проект"
Anatoliy
1) берем из репы сам проект
2) тянем зависимости
3) выполняем(в моем случае go build -i -o ... )
4) перетягиваем полученный файл в другую директорию
и там уже его надо дальше упаковывать в образ докером и пушить в реджистри
G72K
Anatoliy
@youngbluesman выше написал
Anton
ага, нагуглил все решенные тикеты. с 1.13+ можно включать
Anton
G72K
Anton
хочу по изменению конфига сигнал процессу в другой контейнер отправить
Михаил
Shamil
G72K
Shamil
То есть ты написал вначале 2) тестирование 3) пушим в реджистри, а сейчас сразу после сборки хочешь пушить. Куда?
G72K
Недавно сломали "ручной" rollback (когда просто деплоим предыдущую версию) заразы, при этом чиня фундаментальный баг дебильной заплаткой. И баг не починили и rollback сломали.
Shamil
Да, там у тебя еще есть только go build... а контейнер ты будешь собирать?
G72K
Зато 100500 ответов позакрывали, мол все починено. Я сдался и херачу helm template | kubectl apply -f - —prune
G72K
Anton
лан, сам посмотрю =)
Serega
Anton
Shamil
Anatoliy
Sergei
Михаил
Shamil
Shamil
Запускает билд go
Shamil
Дальше запускает Dockerfile так?
Shamil
То есть docker build
Anatoliy
Дальше запускает Dockerfile так?
да, но как его запустить я пока не понял. думаю надо слинковать как-то докер на хосте и докер в контейнере в котором это будет происходить
Shamil
Нет докера в контейнере.
Shamil
То есть ты не можешь понять, как запускать docker build
Anatoliy
Как запускать докер билд мне понятно, мне не понятно как сделать что бы он взялся в контейнере
Shamil
Где, мол, он будет контейнер для билда поднимать, в этом твой вопрос?
Anatoliy
и аналогично с деплоем кубера, там нужен будет kubectl и config. и я не понимаю как его пихнуть в контейнер
Ivan
собери контейнер для билда и деплоя
Ivan
или устанавливай каждый раз
Shamil
Не надо ничего никуда пихать, все уже запихнули до тебя смотри docker-build-step
Anatoliy
Хорошо, спасибо гляну, на это пока не натыкался