Logan
коллеги, а может мне кто-то внятно объяснить, для чего нужен helm?
Magistr
коллеги, а может мне кто-то внятно объяснить, для чего нужен helm?
можешь считать пакетным менеджером его + немного сахара
Logan
не очень понимаю, что имеется ввиду под пакетным менеджером. Образы то я все равно из registry беру
Magistr
а конфигурации к образам и настройки ?
Logan
внутри yml файлов?
Magistr
ага
Logan
просто я не очень понимаю, зачем тут helm. Один раз этот yaml написал - постоянно используешь. Что дает helm?
Aleksey
хм. тоесть если я хочу первый раз сделать что то для кубера мне надо делать это либо в helm либо нет ?
Logan
ну вот у меня есть yml, который описывает все, что мне необходимо для развертывания - тома, сервисы, ingress-ы. Это, грубо говоря, один файл. Я пытаюсь понять, зачем нужен helm, а то я пока как-то не въезжаю
Magistr
хм в таком случая я хз, подождем более опытных товарищей
Aleksey
https://github.com/kubernetes/helm/pull/965/files
Aleksey
видимо
Logan
просто я правда не понимаю, что именно он делает. Все же в yml описано. Но при этом все пользуются и хвалят. Вот я и думаю - может я не догоняю чего?
Aleksey
https://deis.com/blog/2015/why-kubernetes-needs-helm/
Aleksey
вот еще
Aleksey
но я пока не в теме просто прохожий
Igor
Для разворачивания сервисов в среде Kubernetes нужен инструмент, который должен делать следующие задачи: 1. Деплоить в кластер подготовленные манифесты 2. Отслеживать результат деплоймента и сообщать о неудачах 3. Откатывать релизы 4. Желательно иметь возможность создавать шаблоны манифестов, чтобы уменьшить влияние чел. фактора и копипасты 5. Желательно умение и знания про типы деплоймента (blue/green, rolling, canary) 6. История релизов Всё это или часть можно организовать разными способами: 1. Kubectl + свой велосипед 2. Helm 3. Terraform 4. Что-то еще Свой велосипед конечно "лучше всего", но он как каша/суп из топора. Простота этого подхода лишь обманчива. Вместе с ростом потребностей и кол-ва сервисов в кластере будут расти требования к релиз-менеджеру. И в случае велосипеда в итоге будет реализован аналогичный Helm'у инструмент. Возможно он будет лучше (свой же велосипед всегда лучше). Но на него будет потрачен серьёзный ресурс. Каша не становится бесплатной, даже если она из топора.
Anonymous
Может кому полезно будет.
G72K
они не смогли в nginx, только из за предвзятости к русскоязычной комьюнити
справедливости ради, circuit breaker и кудрявый лоадбалансинг nginx не умеет
G72K
но не понятно именно поднимать новый кластер еткд поверх кубера или таки писать в существующий.
не надо писать в существующий, так как: - он слишком важен и нужен. кривое приложение зафлудит и весь кубер ляжет - в нем лежат секреты и вообще все. доступ туда означает, что можешь запускать любые поды на любых нодах в любых количествах, а так же читать то что неположерно (если у вас RBAC)
G72K
это умеет openresty например
для http может что-то и созрело, в stream модуле (голый TCP) там вечные косяки были еще год назад
G72K
сегфолтилось, не помню что делали :(
Alexander
привет. а кто-нибудь подскажет, как в helm правильно работать с секретами? Например, чарт состоит из двух частей - сервиса и базы. При установке надо сгенерить пароль к базе. Но при обновлении пароль не надо менять. Вроде бы, можно объявить шаблон секрета как pre-install hook и в значение положить что-то типа {{ .Values.scopeMysqlPassword | default (randAlphaNum 16) | b64enc }} Но как быть, если надо секрет создать при обновлении чарта?
G72K
а никак. херачить job с bash script внутри
Alexander
ох ё, я этого и боялся :)
Knyage
Костылизация наше все :)
Alexander
helm же всегда дергает kubectl apply и никогда kubectl patch ?
G72K
helm же всегда дергает kubectl apply и никогда kubectl patch ?
если бы, оно никогда не дергает kubectl appl
G72K
при этом kubectl patch которые оно генерирует - кривые. в итоге у вас в кластере может быть не то, что в релизе :)
Alexander
хм... это интересно. а карта граблей где-то есть?
Alexander
в смысле - к чему готовиться?
Alexander
ага, спасибо
G72K
а ну еще вещи, которые вроде и не баги, но "ну как так-то??" очень даже. например dependencies не то, чем кажутся. все ямлы из всего дерева зависимостей просто рендерятся в огромный список и сортируются: сначала идут все configmaps, затем все secrets и т.д. потом оно все пачкой загужается в куб, дальше уж как карта ляжет. подтянули redis по зависиомостям и в обновлении хотите включить какую-то фишку, которое обновленное приложение использует и без нее жить не может7 готовьтся к краш рестартам ваших подов, т.к. и redis и выше приложение будут обновляться одновременно
G72K
короче их надпись крупными буквами "package manager for kubernetes" самый большой и наглый п%здеж
Alexander
альтернатив же пока не видно?
G72K
найдете - скажите
G72K
темплейтить ямлы и затем kubectl apply, оно хотя бы работает. единственная проблема - надо удалять то руками, что было переименовано/убрано .
Alexander
по поводу обновлений - елси бы в helm'е была втроенная переменная .Resources для доступа к текущему состоянию ресурсов, то мою бы задачу это решило. какой-нибудь стандартный контейнер с хелпером add_if_not_exists тоже решил бы. не попадались никакие наработки на эту тему?
G72K
ресурсы в tiller не отслеживаются, там все на уровне текста ямла
Роман
Есть под с пхп и, когда он первый раз стартует, выполняется прогрев кэша. Занимает сей процесс около 40 секунд и в этот момент пользователь видит 504 при заходе на сайт. Даже, если у меня несколько реплик пхп, всё равно часть пользователей получит 504. Речь идёт о моменте, когда я деплою новую версию приложения в кластер. Как-нибудь можно настроить, чтобы запросы шли на старые поды определённое время, и только потом начинали идти на новые (а старые удалялись)?
IURII
proxy_next_upstream в nginx не подойдёт?
Роман
proxy_next_upstream в nginx не подойдёт?
Upstream один. А уже на уровне dns round-robin идёт выбор места назначения.
Роман
Судя по документации, должно быть насколько апстримов прописано в конфиге nginx?
Alexander
readiness probe должны помочь
Роман
readiness probe должны помочь
Да. Вроде оно. Спасибо.
bebebe
попробуйте задеплоить таким макаром spinnaker
Knyage
у меня такой вопрос. Есть 2 кластера, 1 "продовый", второй пока стоит пустой. Находятся в разных ДЦ. Как лучше сделать (и можно ли вообще) резервирование, чтобы в случае падения (читай, пропал сетевой доступ) к первому, второй кластер поднял все поды, чтобы на первом? По идее, этот вопрос должен решаться федерализацией? Но как я понял из доки, при федерализации идет синхронизация и все поды\сервисы запускаются одновременно на двух кластерах, только как тогда продумать маршрутизацию, я что-то не осилил :( Может кто занимался этим вопросом, подскажет как "правильнее" продумать схему?)
Denis
Если датацентры недалеко то там есть такая штука (https://kubernetes.io/docs/admin/multiple-zones/)
Роман
надо фейлить readiness probe, пока кеши не прогреются
А как настроить удаление старых подов только тогда, когда новые ответят, что живы и работают?
Etki
deployment + maxSurge / maxUnavailable?
Vadim
Всем привет. А на своих железных серверах поднимать k8s лучше на какой ОС ? Может CoreOS ? или без разницы ?
Maksim
Ну и зависит от личных предпочтений каждого
Роман
deployment + maxSurge / maxUnavailable?
Я придерживаюсь политики, что можно создать один лишний под и максимально недоступно - ноль. А тут получается, что новый под в состоянии running, но ещё не отвечает, так как прогревается кэш, readinessProbe решит проблему round-robin: на эти новые поды не будет отправляться трафик, но от удаления старых, когда новые ещё не работают, он не спасёт.
Роман
maxUnavailable считается по количеству ready
То есть, если readinessProbe успешно, то только тогда произойдёт удаление?
G72K
должно быть так
Aleksey
господа, а как выглядит шаблонизация конфигов приложения в кубере ?
G72K
configmap volume
G72K
можно и в переменные окружения отдельные ключи из configmap записывать, кому как удобнее
Aleksey
тоест ьфактически контейнер сам отвечает за создания своего конфига ?
G72K
кто за что отвечает , это не технический вопрос, а огранизационный :)
Aleksey
я просто сейчас сравниваю с номадом
Aleksey
там есть template
Aleksey
он берет шаблон и отрендерви кладет в нужное место
Aleksey
а в кубере ?
Denis
а недалеко это сколько? )
Чисто дедуктивно. В доке приводится в пример Amazon AZ в одном регионе. Погуглил среднее время пинга между AZ. медиана = 2ms, 90p = 30 ms, 99 = 47ms
Denis
вот настолько далеко :)
G72K
я просто сейчас сравниваю с номадом
у номада темлпейт кудрявее. в мире куба этим занимаются либо самописные костыли, либо helm
G72K
штук вроде динамической подгрузки и обновления из vault/consul нет вообще