Logan
коллеги, а может мне кто-то внятно объяснить, для чего нужен helm?
Magistr
Logan
не очень понимаю, что имеется ввиду под пакетным менеджером. Образы то я все равно из registry беру
Magistr
а конфигурации к образам и настройки ?
Logan
внутри yml файлов?
Magistr
ага
Logan
просто я не очень понимаю, зачем тут helm. Один раз этот yaml написал - постоянно используешь. Что дает helm?
Aleksey
хм. тоесть если я хочу первый раз сделать что то для кубера мне надо делать это либо в helm либо нет ?
Magistr
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
но я пока не в теме просто прохожий
Anonymous
Может кому полезно будет.
bebebe
bebebe
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
G72K
при этом kubectl patch которые оно генерирует - кривые. в итоге у вас в кластере может быть не то, что в релизе :)
Alexander
хм... это интересно. а карта граблей где-то есть?
Alexander
в смысле - к чему готовиться?
G72K
базовые вещи поломаны: релиз может "усыновить" ресурсы которые уже были, в итоге сам релиз фэйлится и пользователь скажем решает его удалить. оно удаляет и то, что реально не было установлено :) или скажем оно забывает про любые ресурсы, в которых явно прописан namespace. ну или самый ад: upgrade after failure, оно делает совсем не то, что кажется - там внутри идет генерация патча на каждый апгрейд, при этом база для патча - последний релиз, неважно зафэйлин он был или нет. в итоге скажем в релизе изменили A, B при этом B сломало релиз, пользователь делает B' и ожидает получить в кубе и A и B', а получает только B' :)
^^
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 не подойдёт?
Роман
Судя по документации, должно быть насколько апстримов прописано в конфиге nginx?
Alexander
readiness probe должны помочь
Роман
Anton
G72K
Aleksandra
G72K
bebebe
попробуйте задеплоить таким макаром spinnaker
Knyage
у меня такой вопрос.
Есть 2 кластера, 1 "продовый", второй пока стоит пустой. Находятся в разных ДЦ.
Как лучше сделать (и можно ли вообще) резервирование, чтобы в случае падения (читай, пропал сетевой доступ) к первому, второй кластер поднял все поды, чтобы на первом?
По идее, этот вопрос должен решаться федерализацией? Но как я понял из доки, при федерализации идет синхронизация и все поды\сервисы запускаются одновременно на двух кластерах, только как тогда продумать маршрутизацию, я что-то не осилил :(
Может кто занимался этим вопросом, подскажет как "правильнее" продумать схему?)
Denis
Если датацентры недалеко то там есть такая штука (https://kubernetes.io/docs/admin/multiple-zones/)
Etki
deployment + maxSurge / maxUnavailable?
Vadim
Всем привет. А на своих железных серверах поднимать k8s лучше на какой ОС ? Может CoreOS ? или без разницы ?
Maksim
Maksim
Ну и зависит от личных предпочтений каждого
Роман
deployment + maxSurge / maxUnavailable?
Я придерживаюсь политики, что можно создать один лишний под и максимально недоступно - ноль. А тут получается, что новый под в состоянии running, но ещё не отвечает, так как прогревается кэш, readinessProbe решит проблему round-robin: на эти новые поды не будет отправляться трафик, но от удаления старых, когда новые ещё не работают, он не спасёт.
G72K
G72K
должно быть так
Aleksey
господа, а как выглядит шаблонизация конфигов приложения в кубере ?
G72K
configmap volume
G72K
можно и в переменные окружения отдельные ключи из configmap записывать, кому как удобнее
Knyage
Aleksey
Aleksey
тоест ьфактически контейнер сам отвечает за создания своего конфига ?
G72K
кто за что отвечает , это не технический вопрос, а огранизационный :)
Aleksey
я просто сейчас сравниваю с номадом
Aleksey
там есть template
Aleksey
он берет шаблон и отрендерви кладет в нужное место
Aleksey
а в кубере ?
Denis
а недалеко это сколько? )
Чисто дедуктивно. В доке приводится в пример Amazon AZ в одном регионе. Погуглил среднее время пинга между AZ. медиана = 2ms, 90p = 30 ms, 99 = 47ms
Denis
вот настолько далеко :)
G72K
штук вроде динамической подгрузки и обновления из vault/consul нет вообще