Size: a a a

Kubernetes — русскоговорящее сообщество

2020 September 21

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Алексей Смирнов
ну и даже если куча сервисов, в чем проблема то?
куча клея между репами, например выкатить нужно временное окружение для теста. Для этого надо собрать и за деплоить 20 сервисов определенных весрий. Каждый сервис в отдельной репе. Не представляю как это сделать в gtihub actions/gitlab без кучи костылей
источник

АС

Алексей Смирнов... in Kubernetes — русскоговорящее сообщество
)) была одна большая контора
и был там человек один, руководитель отдела тестирования
и захотел он тестировать все куском (штук 15 сервисов из разных реп)
и захотел он это по таскам с jira (создание окружения, сборка, деплои, тестирование, удаление окружения при закрытии тикета)
месяца за полтора запилил

в общем gitlab тот еще комбайн
собственно сделать это можно на чем угодно
источник

GG

George Gaál in Kubernetes — русскоговорящее сообщество
можно
источник

SM

Sergey Monakhov in Kubernetes — русскоговорящее сообщество
Dmitry Sergeev
куча клея между репами, например выкатить нужно временное окружение для теста. Для этого надо собрать и за деплоить 20 сервисов определенных весрий. Каждый сервис в отдельной репе. Не представляю как это сделать в gtihub actions/gitlab без кучи костылей
если все зависимые сервисы деплоятся хелмом, то генерим helmfile, запускаем
источник

L

Lucky SB in Kubernetes — русскоговорящее сообщество
Eduard Generalov
@LuckySB Добрый вечер.
--topology-manager-policy правильно в kubespray выставить через kubelet_node_custom_flags? Не вижу в шаблонах его.
kubernetes/node/templates/kubelet.env.v1beta1.j2
оно ?
источник

АС

Алексей Смирнов... in Kubernetes — русскоговорящее сообщество
ну давай самый тупой вариант реализации рассмотрим
по вебхуку любой ci собирать умеет

во всех проектах репах будем считать идет сборка контейнера по коммиту с тэгом комита
допустим я сделаю репу суперпупер
в ней сделаю пайплайн который пинает в остальных репах сборки (статус возвращает есно)
далее в нем я сделаю деплой окружения + контейнеров сервисов (версии пусть прям в yuml для простоты)
есно по окончании сборок
допустим дальше мы решим что брэнч в суперпупер репе это = создать окружение и тд
еще не забыть на удаление брэнча повесить хук на удаление окружения


продолжать?
источник

L

Lucky SB in Kubernetes — русскоговорящее сообщество
Eduard Generalov
@LuckySB Добрый вечер.
--topology-manager-policy правильно в kubespray выставить через kubelet_node_custom_flags? Не вижу в шаблонах его.
но кошернее юзать
kubernetes/node/templates/kubelet-config.v1beta1.yaml.j2:{{ kubelet_config_extra_args | to_nice_yaml(indent=2) }}

kubelet_config_extra_args, который в конфиг  попадает, ключи запуска у кублета депрекейтед.
источник

АС

Алексей Смирнов... in Kubernetes — русскоговорящее сообщество
единственная печаль по которой будут страдать тимсити и jenkins любители отсутствие gui, ну вернее он будет, но не такой как привыкли
источник

V

Vasily in Kubernetes — русскоговорящее сообщество
Алексей Смирнов
единственная печаль по которой будут страдать тимсити и jenkins любители отсутствие gui, ну вернее он будет, но не такой как привыкли
в jenkins это решается groovy либой, если уровень програмирования чуть выше мартышки
источник

АС

Алексей Смирнов... in Kubernetes — русскоговорящее сообщество
тут не только груви вообщето
тут еще api jenkins + куча прочего
в итого это конкретный проект который должны шарить все разработчики

в конкретном примере выше, там было 40 разрабов которые писали на go
до этого у них бэкенд был у кого java у кого плюсы у кого перл, в общем все не помню, но не суть
ты предлагаешь декларативно заставить 40 человек ознакомится с api jenkins и его логикой + подучить groovy хотябы до совсем junior?
час разработки усредненно 2тр * 40 = 80 тр

ну прочитать документацию jenkins + разобраться что это за хрень будем считать 4 часа, хоть это и сильно оптимистично
+ груви еще накинем столькоже
итого 80 * 8 = 640 тр

и да, так как люди ежедневно его конфигурять не будут, оно очень быстро выветрится из головы
и по факту каждый раз на правку чего в jenkins на groovy - 1 час из жизни разработчика оплаченного компанией

vs тот же дрон|gitlab где yuml с последовательностью команд на баше ну или на питоне, ну или еще на чем

зп человека заточенного под jenkins 100 - 200 к (хз если честно)
в итого возвращаемся к схеме описанной выше, человек заточенный под jenkins
источник

АС

Алексей Смирнов... in Kubernetes — русскоговорящее сообщество
у меня был опыт внедрения кубера в реальной конторе с нуля, ну и не однократный
технически это делается за неделю (с манифестами)
на практике это от 3 до 6 месяцев, ибо люди
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Алексей Смирнов
тут не только груви вообщето
тут еще api jenkins + куча прочего
в итого это конкретный проект который должны шарить все разработчики

в конкретном примере выше, там было 40 разрабов которые писали на go
до этого у них бэкенд был у кого java у кого плюсы у кого перл, в общем все не помню, но не суть
ты предлагаешь декларативно заставить 40 человек ознакомится с api jenkins и его логикой + подучить groovy хотябы до совсем junior?
час разработки усредненно 2тр * 40 = 80 тр

ну прочитать документацию jenkins + разобраться что это за хрень будем считать 4 часа, хоть это и сильно оптимистично
+ груви еще накинем столькоже
итого 80 * 8 = 640 тр

и да, так как люди ежедневно его конфигурять не будут, оно очень быстро выветрится из головы
и по факту каждый раз на правку чего в jenkins на groovy - 1 час из жизни разработчика оплаченного компанией

vs тот же дрон|gitlab где yuml с последовательностью команд на баше ну или на питоне, ну или еще на чем

зп человека заточенного под jenkins 100 - 200 к (хз если честно)
в итого возвращаемся к схеме описанной выше, человек заточенный под jenkins
в jenkins ты либо используешь groovy и работаешь нативно с другими джобами/объектами CI Либо используешь последовательность команд на баше и делаешь это через API как и в gitlab/dron. Тут отличий не вижу, только в том, что в Jenkins ты можешь рулить объектами CI а не только вызовы API из баша дергать
источник

EG

Eduard Generalov in Kubernetes — русскоговорящее сообщество
Lucky SB
но кошернее юзать
kubernetes/node/templates/kubelet-config.v1beta1.yaml.j2:{{ kubelet_config_extra_args | to_nice_yaml(indent=2) }}

kubelet_config_extra_args, который в конфиг  попадает, ключи запуска у кублета депрекейтед.
не вижу ключа, который можно добавить в KubeletConfiguration
источник

EG

Eduard Generalov in Kubernetes — русскоговорящее сообщество
Везде в доке только аргументы запуска
источник

АС

Алексей Смирнов... in Kubernetes — русскоговорящее сообщество
объекты...
в общем нравится вперед
источник

L

Lucky SB in Kubernetes — русскоговорящее сообщество
Eduard Generalov
не вижу ключа, который можно добавить в KubeletConfiguration
источник

DS

Dmitry Sergeev in Kubernetes — русскоговорящее сообщество
Алексей Смирнов
объекты...
в общем нравится вперед
да я не топлю ни за что, просто аргумент был не состоятелен (дергать баш jenkins умеет не хуже gitlab/drone)
источник

EP

Eugene Petrovich in Kubernetes — русскоговорящее сообщество
Dmitry Sergeev
ну так IaC же, хочешь поменять конфигурацию, меняй в гите свои JJB/Jcasc.
build with parameters из declarative pipeline - не надо чтобы джоба конфигуряла сама себя. Должно быть одно место  (single source of truth) а ты делаешь их два.
Да вот все из одного места. Весь пайплайн с git parameters через jcasc одним файлом заезжет. Все описано одним declarative pipeline. Проще некуда. Или как то иначе надо джобу описывать что б параметризация сразу была без первого запуска. Jenkinsfile в репах отсутствует.
источник

L

Lucky SB in Kubernetes — русскоговорящее сообщество
Eduard Generalov
не вижу ключа, который можно добавить в KubeletConfiguration
TopologyManagerPolicy string json:"topologyManagerPolicy,omitempty"
 // qosReserved is a set of resource name to percentage pairs that specify
 // the minimum percentage of a resource reserved for exclusive use by the
 // guaranteed QoS tier.
 // Currently supported resources: "memory"
 // Requires the QOSReserved feature gate to be enabled.
 // Dynamic Kubelet Config (beta): This field should not be updated without a full node
 // reboot. It is safest to keep this value the same as the local config.
 // Default: nil
 // +optional
источник

EG

Eduard Generalov in Kubernetes — русскоговорящее сообщество
Спасибо, влил, запускаю
источник