Size: a a a

2019 June 05

S

Sergey in DevOps Moscow
но опять же, вернувшись к нашей беседе, делать на хелме cd как-то черезжопность. Начиная от ебатни с тилером, заканчивая тем, что, что внутри продукта, все что, в 99% случаев надо при деплое, это поменять значения пары тройки переменных окружения
источник

S

Sergey in DevOps Moscow
я надеюсь у всех  окружения идентичные)
источник

S

Sergey in DevOps Moscow
а для этого подойдет любой маломальски рабочий вариант шаблонизации
источник

S

Sergey in DevOps Moscow
даже такой
for file in $(find .. -wholename "*/infra/k8s/prod/*")
do
   envsubst < $file | kubectl apply -f -
done
источник

S

Sergey in DevOps Moscow
это так, тупо пример подхода
источник

DZ

Dmitriy Zaytsev in DevOps Moscow
Andrey Aleksandrov
1. конечно, tiller. Которого, поидее, надо заводить несколько штук для нормального разграничения прав.

2. это куча дополнительных сущностей, которые, по факту, нахер не нужны. Это release, app version, revision и т.д. Мало того, что они не решают никакую проблему, так о них еще и куб ничего не знает. В итоге в хельм ты думаешь о релизе, а по факту в кластере у тебя деплоймент.

3. YAML-шаблонизация. Это прям полный атас. Вроде пишешь ты yaml, но надо думать о правилах go-шаблонизатора. В итоге добавлять какие-то либо условия в шаблон это лютая боль, потому что надо и правильные indent соблюсти, и сделать так чтобы читалось, но при этом и проходило правила гошного темлейтинга. И это прям боль, жесть и слезы. В итоге любой шаблон через пару итераций превращается в нечитабельное говно.

4. Хер изменишь готовый пакет. Вот взял я prometheus chart, а он рассчитан исключительно на работу по домену и там в ingress вшито поле host, а оно мне не надо, я хочу юзать IP от GCP и все. Но этого я сделать уже не смогу, потому что YAML-шаблонизируется, а не генерируется. Можно попытаться форкнуть чарт и добавить туда условие, которое позволит юзать ip, вместо домена, что будет довольно сложно, потому что в шаблоне и так много логики. Но даже если ты это сделаешь, ты превратишь в нечитабельное и сложноподдерживаемое говнище, которым, он, в общем-то, является и так, даже и без этого условия.

5. Необходимость размазывать параметры по разным чартам, чтобы их переопределять. В разных окружениях приложение должно запускаться с разными параметрами. Для этого, как правило, создается chart окружения, в котором все перезаписывается. Лежит он, ест-но, где-то в стороне. Получается, что он выходит из под ответственности команды, которая отвечает за сервис, потому что конфигурация теперь не у них.  А хочется чтобы команда, которая пилит сервис, у себя могла описать все необходимые параметры для всех окружений, полностью отвечать за настройку сервиса и определять где, что и как должно быть. Kapitan, например, эту проблему решает через описание в "пакете"  параметров для всех окружений, а сам пакет в репе с приложением. Все чудно, вся настройка в руках у команды, делает все что считает нужным и другим не мешает, ответственность не размазывается.

6. Нет единой точки правды. Где мне ее смотреть в helm? В чарте? Там нихрена не поймешь. В кубе? Он ничего не знает о сущностях хельма. В тиллере? В нем то что он применял, а не то что в кластере.
Во, давай предметно.
1. У тебя тут больше вопрос красоты ведь? Несколько тиллеров завести - это по 5-10 минут на каждый.
2. Хелм мыслит релизами, всё остальное не обязательно. Но да, я согласен. С другой стороны - у тебя всё равно сбоку какой-то релизный цикл есть - и их можно синхронизировать с хелмом.
3. У меня вообще другой опыт. Чтобы было понятно - у меня в поддержке около 200 чартов - и я вообще не вижу там боли и слёз. И тем более не вижу нечитабельного говна.
4. Просто форкаешь и делаешь под себя, не наследуя логику общего чарта. Как с ролями в ансибл - берешь роль, выкидываешь из неё всю common-логику.
5. Это вопрос только твоего процесса, тут сам хелм никак тебе ничего не запрещает и не требует.
6. Согласен, тут может быть сложно.
источник

DZ

Dmitriy Zaytsev in DevOps Moscow
Sergey
но опять же, вернувшись к нашей беседе, делать на хелме cd как-то черезжопность. Начиная от ебатни с тилером, заканчивая тем, что, что внутри продукта, все что, в 99% случаев надо при деплое, это поменять значения пары тройки переменных окружения
Я категорически не понимаю словосочетания "ебатня с тиллером"
источник

DZ

Dmitriy Zaytsev in DevOps Moscow
Попробуйте, не знаю, pacemaker поднять.
источник

p

ptchol in DevOps Moscow
Ща тиллер уберут все взвоют как же с ним было хорошо.
источник

p

ptchol in DevOps Moscow
Всплывут истории с деплоем чартов который может длится по 40 минут и 'это у нас процесс такой'
источник

МS

Михаил SinTeZoiD in DevOps Moscow
ptchol
да это всё на любителя.
да ну камон. в случае джинджы ты уже знаешь ее, это не про на любителя, а про скорость входа
источник

p

ptchol in DevOps Moscow
Михаил SinTeZoiD
да ну камон. в случае джинджы ты уже знаешь ее, это не про на любителя, а про скорость входа
Я не знаю и ненавижу ее
источник

S

Sergey in DevOps Moscow
Dmitriy Zaytsev
Попробуйте, не знаю, pacemaker поднять.
я могу тоже назвать тонну говна, который попробуй сконфигурируй.
с тилером проблемы другого характера, про разграничения прав уже говорили
источник

p

ptchol in DevOps Moscow
Мне одинаково противны ямл, жинжа, го темплейтс и хцл
источник

DZ

Dmitriy Zaytsev in DevOps Moscow
Я, возможно, нахожусь в состоянии смирения с хелмом. Но он простой как три копейки. Сложность некоторых публичных чартов - она от необходимости поддержки кучи параметров, кучи логики. В вашем микросервисе этого ведь нет
источник

p

ptchol in DevOps Moscow
Dmitriy Zaytsev
Я, возможно, нахожусь в состоянии смирения с хелмом. Но он простой как три копейки. Сложность некоторых публичных чартов - она от необходимости поддержки кучи параметров, кучи логики. В вашем микросервисе этого ведь нет
Стокгольмский синдром x)
источник

S

Sergey in DevOps Moscow
но никто не упоменает про то, что тиллер хранит все в конфигмапах, лишний мусор в etcd
источник

МS

Михаил SinTeZoiD in DevOps Moscow
Dmitriy Zaytsev
Так в этом и цель. Чтобы ты мог быстро стартовать. Никто не запрещает тебе пересобирать всё вручную под твои лучшие практики. Кто-то и докер-образы все свои держит, не используя образы от коммьюнити.
куда стартовать? на дно поскорее?
источник

S

Sergey in DevOps Moscow
при чем он туда пихает весь хелм чарт ввиде архива
источник

МS

Михаил SinTeZoiD in DevOps Moscow
ptchol
Я не знаю и ненавижу ее
ты же пишешь для ансибл или салт стек?
источник