@kubernetes_ru

Страница 259 из 958
Paul
03.09.2017
18:40:22
коллеги, а может мне кто-то внятно объяснить, для чего нужен helm?

Magistr
03.09.2017
18:43:36
коллеги, а может мне кто-то внятно объяснить, для чего нужен helm?
можешь считать пакетным менеджером его + немного сахара

Paul
03.09.2017
18:44:12
не очень понимаю, что имеется ввиду под пакетным менеджером. Образы то я все равно из registry беру

Magistr
03.09.2017
18:45:51
а конфигурации к образам и настройки ?

Google
Paul
03.09.2017
18:46:11
внутри yml файлов?

Magistr
03.09.2017
18:46:17
ага

Paul
03.09.2017
18:46:59
просто я не очень понимаю, зачем тут helm. Один раз этот yaml написал - постоянно используешь. Что дает helm?

Алексей
03.09.2017
18:48:50
хм. тоесть если я хочу первый раз сделать что то для кубера мне надо делать это либо в helm либо нет ?

Paul
03.09.2017
18:52:45
ну вот у меня есть yml, который описывает все, что мне необходимо для развертывания - тома, сервисы, ingress-ы. Это, грубо говоря, один файл. Я пытаюсь понять, зачем нужен helm, а то я пока как-то не въезжаю

Magistr
03.09.2017
18:57:02
хм в таком случая я хз, подождем более опытных товарищей

Алексей
03.09.2017
18:57:07
https://github.com/kubernetes/helm/pull/965/files

видимо

Paul
03.09.2017
18:58:13
просто я правда не понимаю, что именно он делает. Все же в yml описано. Но при этом все пользуются и хвалят. Вот я и думаю - может я не догоняю чего?

Алексей
03.09.2017
18:59:30
https://deis.com/blog/2015/why-kubernetes-needs-helm/

вот еще

но я пока не в теме просто прохожий

Google
Igor
04.09.2017
08:00:58
Для разворачивания сервисов в среде Kubernetes нужен инструмент, который должен делать следующие задачи: 1. Деплоить в кластер подготовленные манифесты 2. Отслеживать результат деплоймента и сообщать о неудачах 3. Откатывать релизы 4. Желательно иметь возможность создавать шаблоны манифестов, чтобы уменьшить влияние чел. фактора и копипасты 5. Желательно умение и знания про типы деплоймента (blue/green, rolling, canary) 6. История релизов Всё это или часть можно организовать разными способами: 1. Kubectl + свой велосипед 2. Helm 3. Terraform 4. Что-то еще Свой велосипед конечно "лучше всего", но он как каша/суп из топора. Простота этого подхода лишь обманчива. Вместе с ростом потребностей и кол-ва сервисов в кластере будут расти требования к релиз-менеджеру. И в случае велосипеда в итоге будет реализован аналогичный Helm'у инструмент. Возможно он будет лучше (свой же велосипед всегда лучше). Но на него будет потрачен серьёзный ресурс. Каша не становится бесплатной, даже если она из топора.

[Anonymous]
04.09.2017
08:21:43
Может кому полезно будет.

Let Eat
04.09.2017
09:10:05
они не смогли в nginx, только из за предвзятости к русскоязычной комьюнити
справедливости ради, circuit breaker и кудрявый лоадбалансинг nginx не умеет

но не понятно именно поднимать новый кластер еткд поверх кубера или таки писать в существующий.
не надо писать в существующий, так как: - он слишком важен и нужен. кривое приложение зафлудит и весь кубер ляжет - в нем лежат секреты и вообще все. доступ туда означает, что можешь запускать любые поды на любых нодах в любых количествах, а так же читать то что неположерно (если у вас RBAC)

Let Eat
04.09.2017
09:20:34
это умеет openresty например
для http может что-то и созрело, в stream модуле (голый TCP) там вечные косяки были еще год назад

Let Eat
04.09.2017
09:44:54
сегфолтилось, не помню что делали :(

Alexander
04.09.2017
10:03:31
привет. а кто-нибудь подскажет, как в helm правильно работать с секретами? Например, чарт состоит из двух частей - сервиса и базы. При установке надо сгенерить пароль к базе. Но при обновлении пароль не надо менять. Вроде бы, можно объявить шаблон секрета как pre-install hook и в значение положить что-то типа {{ .Values.scopeMysqlPassword | default (randAlphaNum 16) | b64enc }} Но как быть, если надо секрет создать при обновлении чарта?

Let Eat
04.09.2017
10:05:53
а никак. херачить job с bash script внутри

Alexander
04.09.2017
10:06:21
ох ё, я этого и боялся :)

Mikhail
04.09.2017
10:08:42
Костылизация наше все :)

Alexander
04.09.2017
10:13:15
helm же всегда дергает kubectl apply и никогда kubectl patch ?

Let Eat
04.09.2017
10:15:31
helm же всегда дергает kubectl apply и никогда kubectl patch ?
если бы, оно никогда не дергает kubectl appl

при этом kubectl patch которые оно генерирует - кривые. в итоге у вас в кластере может быть не то, что в релизе :)

Alexander
04.09.2017
10:17:40
хм... это интересно. а карта граблей где-то есть?

в смысле - к чему готовиться?

Alexander
04.09.2017
10:22:03
ага, спасибо

Let Eat
04.09.2017
10:22:34
а ну еще вещи, которые вроде и не баги, но "ну как так-то??" очень даже. например dependencies не то, чем кажутся. все ямлы из всего дерева зависимостей просто рендерятся в огромный список и сортируются: сначала идут все configmaps, затем все secrets и т.д. потом оно все пачкой загужается в куб, дальше уж как карта ляжет. подтянули redis по зависиомостям и в обновлении хотите включить какую-то фишку, которое обновленное приложение использует и без нее жить не может7 готовьтся к краш рестартам ваших подов, т.к. и redis и выше приложение будут обновляться одновременно

Google
Let Eat
04.09.2017
10:24:22
короче их надпись крупными буквами "package manager for kubernetes" самый большой и наглый п%здеж

Alexander
04.09.2017
10:24:58
альтернатив же пока не видно?

Let Eat
04.09.2017
10:25:09
найдете - скажите

темплейтить ямлы и затем kubectl apply, оно хотя бы работает. единственная проблема - надо удалять то руками, что было переименовано/убрано .

Alexander
04.09.2017
10:27:27
по поводу обновлений - елси бы в helm'е была втроенная переменная .Resources для доступа к текущему состоянию ресурсов, то мою бы задачу это решило. какой-нибудь стандартный контейнер с хелпером add_if_not_exists тоже решил бы. не попадались никакие наработки на эту тему?

Let Eat
04.09.2017
10:28:30
ресурсы в tiller не отслеживаются, там все на уровне текста ямла

Роман
04.09.2017
11:07:11
Есть под с пхп и, когда он первый раз стартует, выполняется прогрев кэша. Занимает сей процесс около 40 секунд и в этот момент пользователь видит 504 при заходе на сайт. Даже, если у меня несколько реплик пхп, всё равно часть пользователей получит 504. Речь идёт о моменте, когда я деплою новую версию приложения в кластер. Как-нибудь можно настроить, чтобы запросы шли на старые поды определённое время, и только потом начинали идти на новые (а старые удалялись)?

YURA
04.09.2017
11:12:19
proxy_next_upstream в nginx не подойдёт?

Роман
04.09.2017
11:17:09
proxy_next_upstream в nginx не подойдёт?
Upstream один. А уже на уровне dns round-robin идёт выбор места назначения.

Судя по документации, должно быть насколько апстримов прописано в конфиге nginx?

Alexander
04.09.2017
11:20:05
readiness probe должны помочь

Роман
04.09.2017
11:33:53
readiness probe должны помочь
Да. Вроде оно. Спасибо.

Aleksandra
04.09.2017
12:59:57
bebebe
04.09.2017
13:23:54
попробуйте задеплоить таким макаром spinnaker

Mikhail
04.09.2017
13:30:39
у меня такой вопрос. Есть 2 кластера, 1 "продовый", второй пока стоит пустой. Находятся в разных ДЦ. Как лучше сделать (и можно ли вообще) резервирование, чтобы в случае падения (читай, пропал сетевой доступ) к первому, второй кластер поднял все поды, чтобы на первом? По идее, этот вопрос должен решаться федерализацией? Но как я понял из доки, при федерализации идет синхронизация и все поды\сервисы запускаются одновременно на двух кластерах, только как тогда продумать маршрутизацию, я что-то не осилил :( Может кто занимался этим вопросом, подскажет как "правильнее" продумать схему?)

Denis
04.09.2017
13:33:12
Если датацентры недалеко то там есть такая штука (https://kubernetes.io/docs/admin/multiple-zones/)

Роман
04.09.2017
13:52:33
надо фейлить readiness probe, пока кеши не прогреются
А как настроить удаление старых подов только тогда, когда новые ответят, что живы и работают?

Google
Fike
04.09.2017
13:53:40
deployment + maxSurge / maxUnavailable?

Vadim
04.09.2017
13:54:08
Всем привет. А на своих железных серверах поднимать k8s лучше на какой ОС ? Может CoreOS ? или без разницы ?

Maksim
04.09.2017
14:03:50
Ну и зависит от личных предпочтений каждого

Роман
04.09.2017
14:10:09
deployment + maxSurge / maxUnavailable?
Я придерживаюсь политики, что можно создать один лишний под и максимально недоступно - ноль. А тут получается, что новый под в состоянии running, но ещё не отвечает, так как прогревается кэш, readinessProbe решит проблему round-robin: на эти новые поды не будет отправляться трафик, но от удаления старых, когда новые ещё не работают, он не спасёт.

Admin
ERROR: S client not available

Роман
04.09.2017
14:11:36
maxUnavailable считается по количеству ready
То есть, если readinessProbe успешно, то только тогда произойдёт удаление?

Let Eat
04.09.2017
14:12:30
должно быть так

Алексей
04.09.2017
14:13:45
господа, а как выглядит шаблонизация конфигов приложения в кубере ?

Let Eat
04.09.2017
14:14:21
configmap volume

можно и в переменные окружения отдельные ключи из configmap записывать, кому как удобнее

Алексей
04.09.2017
14:16:18
тоест ьфактически контейнер сам отвечает за создания своего конфига ?

Let Eat
04.09.2017
14:17:16
кто за что отвечает , это не технический вопрос, а огранизационный :)

Алексей
04.09.2017
14:17:44
я просто сейчас сравниваю с номадом

там есть template

он берет шаблон и отрендерви кладет в нужное место

а в кубере ?

Google
Denis
04.09.2017
14:18:19
а недалеко это сколько? )
Чисто дедуктивно. В доке приводится в пример Amazon AZ в одном регионе. Погуглил среднее время пинга между AZ. медиана = 2ms, 90p = 30 ms, 99 = 47ms

вот настолько далеко :)

Let Eat
04.09.2017
14:19:25
я просто сейчас сравниваю с номадом
у номада темлпейт кудрявее. в мире куба этим занимаются либо самописные костыли, либо helm

штук вроде динамической подгрузки и обновления из vault/consul нет вообще

Алексей
04.09.2017
14:20:16
ага. а как тогда решается вопрос изменился ключ в etcd HUP ни сервис ?

Let Eat
04.09.2017
14:21:01
самое близкое - научить сервис делать релоад по запросу на какой-нибудь админский порт. тогда можно рядом крутить sidecar container, который смотрит за etcd и делает curl на 127.0.0.1

ну или использовать s6-overlay чтобы крытить несколько процессов в одном контейнере, тогда они сигналы друг другу смогу слать

Алексей
04.09.2017
14:23:36
нее. процессы уже декомпозированы

Let Eat
04.09.2017
14:23:48
всегда можно добавить еще

если само приложение не умеет следить за etcd, всегда кто-то должен делать это за него

Алексей
04.09.2017
14:25:09
ну врятли можно научить nginx следить за etcd

bebebe
04.09.2017
14:25:29
можно, но не нужно

Let Eat
04.09.2017
14:26:21
Алексей
04.09.2017
14:26:22
а прикручивание чего то типа confd ?

ага

Страница 259 из 958