
Дмитрий
28.05.2018
08:02:20
где легачи, какие файлы, какие переменные на каком этапе, всё в кучу)

Dmitriy
28.05.2018
08:02:22

Harry
28.05.2018
08:02:36
Коллеги, добрый день. Есть такой архитектурный вопрос. Изучаю микросервисы, пытаюсь понять, как их правильно организовать. Стек простой: golang+cockroachdb. Итого у меня есть три варианта:
1) Контейнер приложения и контейнер базы лежат в одном поде внутри стейтфул-сета.
2) приложение и база в разных подах, база в стейтфул-сете, у базы отдельно есть балансировщик.
3) базу вообще вынести из кубов.
Как организовать все кошерно/феншуйно?

Alex Milushev
28.05.2018
08:02:37

Google

Alex Milushev
28.05.2018
08:03:15

Sergey
28.05.2018
08:04:10

Dmitriy
28.05.2018
08:04:42

Harry
28.05.2018
08:06:04
А задача какая?
Задача - каталог каких-либо итемов, другие приложения разные запросы к нему делают и получают данные

Alex Milushev
28.05.2018
08:06:19

Harry
28.05.2018
08:06:38
Тут проблема не в задаче а в правильности размещения приложений.

Dmitriy
28.05.2018
08:06:43
Ок. Опишу более детально.
Есть около 40 сервисов (часть своих, часть легаси). У каждого из них есть свои конфиги (свои можно переписать на ENV, но это будет долго).
Сейчас есть сервис хранения и раздачи конфигов. При подъеме сервиса дергаем курлом конфиг и поднимаемся.
Вроде все отлично, но меня смущает безопасность и сама идеология.
Хотелось бы отказаться от этого сервиса с конфигами и хранить их как-то более правильно.

Andor
28.05.2018
08:07:56
Етцд/консул
Вместо курла
Не?

Anton
28.05.2018
08:09:17
чем будет отличаться от прошлого новаторского подхода с сервисом хранения и раздачи конфигов? =)
опять запускаешь что то, что непонятно как конфигурируется и неизвестно какое состояние имеет

Google

Dmitriy
28.05.2018
08:10:31
Вот
Конфигмап выглядит куда лучше. Хотя я пока и не до конца понимаю

Andor
28.05.2018
08:12:59
Ваще если конфиг никогда во время жизни приложения не меняется, то конфигмапы ок

Anton
28.05.2018
08:25:22
Почему непонятно и неизвестно?
потому что конфиг это внешняя сущность получается. не ясно состояние конфига, он зависит от времени запуска или от момента перечитывания конфига.
я хз как такие динамические варианты с конфигурированием ПО решаются.
железный вариант - изменился конфиг - ты или ролллинг апдейт сделал, или форсил релод приложения. и ты видишь в состоянии аппа какой у него конфиг

Alex Milushev
28.05.2018
08:27:34

Дмитрий
28.05.2018
08:27:59
Конфигмап выглядит куда лучше. Хотя я пока и не до конца понимаю
Я вот не понял, если у тебя всё запскается через ansible, и ты в нём максимально используешь enventory, то почему бы тебе не генерить на лету yaml файл из темплейта посредством envsubst и транслировать его напрямую в kubectl create/apply -f - ?
Зачем ещё конфигматы городить?

Alex Milushev
28.05.2018
08:28:18
Если только при старте или явном релоаде то зачем приседать и тащить еще одну зависимость.

Dmitriy
28.05.2018
08:28:51

Alex Milushev
28.05.2018
08:29:34
А чем не нравится текущий подход, ну не считая, что это велосипед?

Dmitriy
28.05.2018
08:29:39

Konstantin
28.05.2018
08:29:42
Резюмирую: "env legacy, потому что в нашем случае конфиг статический"

Дмитрий
28.05.2018
08:30:07

Dmitriy
28.05.2018
08:30:21

Alex Milushev
28.05.2018
08:30:35
А что смущает?

Дмитрий
28.05.2018
08:30:39
на нём можно тоже самое сделать

Dmitriy
28.05.2018
08:31:10
В проде пока нет куба. Строю в деве и хочу сделать более-менее правильно.
А что смущает?
Безопасность (относительная простота доступа к конфигам).
Ладно. Спасибо всем за дискуссию. Довольно не мало вариантов накидали. Буду думать и читать. :)

Google

Harry
28.05.2018
09:23:52

Maksim
28.05.2018
09:24:29

Дмитрий
28.05.2018
09:26:50
Если не планируется увеличивать количество узлов базы в зависимости от нагрузки, я бы вообще не держал базу в кубе.

Harry
28.05.2018
09:28:57
Ну тут минус в том, что накатываться апдейт долго будет, т.к. базу на новый под сливать надо. Но тогда приложение может обращаться к базе через локалхост, не ходя в сеть

Andrey
28.05.2018
09:31:57
Ребят, на сколько я знаю, кол-во серверов etcd изменить не выйдет, верно? Хотелось бы добавить мастеров в других локациях… А переносить текущие, тоже не очень весело

Andrey
28.05.2018
09:32:30

Anton
28.05.2018
09:32:46
по документации etcd добавляешь ноды

Дмитрий
28.05.2018
09:32:59
etcd разве умеет в мультимастер?

Anton
28.05.2018
09:32:59
только вот зачем их в другие локации уносить?

Дмитрий
28.05.2018
09:33:28
что значит добавить мастеров?

Andrey
28.05.2018
09:33:34

Дмитрий
28.05.2018
09:33:46

Andrey
28.05.2018
09:34:08

Andrey
28.05.2018
09:34:43

Andrey
28.05.2018
09:37:38

Andrey
28.05.2018
09:39:21
Спасибо за инфу. Ну dev обновил, с ним всё ок было.

Andrey
28.05.2018
09:40:35
Вообще, лично я планирую уходить от kubespray в сторону своего ансибловелосипеда. Кубспрей тот еще черный ящик, особенно при обновлениях, имхо.

Andrey
28.05.2018
09:41:42
Кстати, раз уж зашел разговор: а ни у кого метрики ноды не задваиваются при использовании prom operator? В прометеусе по два раза экспортеры дискаверятся

Google

Дмитрий
28.05.2018
09:42:10
сейчас через kubeadm кластер весьма просто разворачивается, зачем какой-то kuberspray?
Это раньше приходилось городить плэйбуки которые раскидывают бинари, конфиги, все эти дела.

Andrey
28.05.2018
09:43:31
И еще момент, никто не извращался так: нужно поднять еще один кластер монги, есть мысль добавить worker ноды и на них не через куб поставить монгу. Профит - легко подключить к мониторингу, минусы …?

Dmitry
28.05.2018
09:43:46
kubeadm уже умеет мультимастер поднимать?

Дмитрий
28.05.2018
09:44:41

Andrey
28.05.2018
09:44:47

Дмитрий
28.05.2018
09:44:51
если не ошибаюсь
Кто пользовался docker swarm? На каких юз кейсах он предпочтительнее чем Kubernetes?

Konstantin
28.05.2018
09:58:08

Дмитрий
28.05.2018
09:58:28

Рустам
28.05.2018
09:58:50

Дмитрий
28.05.2018
09:59:07

Konstantin
28.05.2018
09:59:22

Рустам
28.05.2018
09:59:45

Konstantin
28.05.2018
10:00:01
ого, я там забанен чтоли)) спасибо

Victor
28.05.2018
10:05:33

Fike
28.05.2018
10:09:52
Коллеги, добрый день. Есть такой архитектурный вопрос. Изучаю микросервисы, пытаюсь понять, как их правильно организовать. Стек простой: golang+cockroachdb. Итого у меня есть три варианта:
1) Контейнер приложения и контейнер базы лежат в одном поде внутри стейтфул-сета.
2) приложение и база в разных подах, база в стейтфул-сете, у базы отдельно есть балансировщик.
3) базу вообще вынести из кубов.
Как организовать все кошерно/феншуйно?
Если у вас приложение висит вместе с базой, то вы не отмасштабировать отдельно их не сможете, ни разнести на разные ноды. Остальные два варианта debatable, классически верным считается держать базу отдельно (потому что иначе вы либо все равно ее привязываете к конкретным нодам, либо она у вас висит с сетевым диском, и там могут быть совсем интересные непредвиденные случаи), но это убивает половину ценности наличия кубера.

Andrey
28.05.2018
10:57:23
господа а что configmap чтобы обновить надо delete/create? более вменяемых способов нет?

Victor
28.05.2018
11:02:04

Google

Mikhail
28.05.2018
11:05:57
Имеется в виду ситуация, когда deployment потребляет конфиг, конфиг меняется, а deployment (точнее, поды) нужно передёргивать руками

Vlad
28.05.2018
11:30:35

Sergey
28.05.2018
11:31:24

Andor
28.05.2018
12:30:06
А хельм магический апи кубера использует?

Anton
28.05.2018
12:43:57
кажется только обычный вариант ?

Dmitriy
28.05.2018
13:04:02

Михаил
28.05.2018
13:04:52

Andrey
28.05.2018
13:10:33
а можно ли прикрутить s3 bucket как shared storage?

Andrey
28.05.2018
13:11:08
minio?

Paul
28.05.2018
13:11:32
хотя извращенцы находились

Andrey
28.05.2018
13:14:36
а что посоветуете?

Paul
28.05.2018
13:15:07
BMR?
если да - ceph или локальное хранилище
если нет - используйте решение вашего провайдера (Amazon EBS/Google storage)

Andrey
28.05.2018
13:18:41
cпасибо