Etki
там тоже все выливается в ENV-переменные
Dmitry
тогда шикарно - буду пихать в переменные среды
Etki
либо в файлы - тут уже как удобнее
Dmitry
супер, @takama , @etkee спасибо за инфу! буду кодить тогда с использованием docker-compose последний вопрос: для связки API ендпоинтов используете nginx? например, есть 2 сервиса, которые доступны из внешнего мира по адресам: 1) /api/users 2) /api/tasks и чтобы сделать единую точку входа для клиентов (example.com/api/...), то тут нужен nginx по идее, верно? кстати, конфиг nginx в этом случае тоже будет выглядеть необычно - т.к. он не знает четких IP, на какие сервисы перенаправлять запросы или nginx тоже будет перенаправлять запросы на кластерные IP?
Etki
супер, @takama , @etkee спасибо за инфу! буду кодить тогда с использованием docker-compose последний вопрос: для связки API ендпоинтов используете nginx? например, есть 2 сервиса, которые доступны из внешнего мира по адресам: 1) /api/users 2) /api/tasks и чтобы сделать единую точку входа для клиентов (example.com/api/...), то тут нужен nginx по идее, верно? кстати, конфиг nginx в этом случае тоже будет выглядеть необычно - т.к. он не знает четких IP, на какие сервисы перенаправлять запросы или nginx тоже будет перенаправлять запросы на кластерные IP?
Конкретно у нас в проектах есть апи-прослойка, которая смотрит наружу и занимается только дерганьем остальных сервисов. Т.е. пришел запрос - прослойка отправляет токен на верификацию в менеджер пользователей, в случае успеха начинает оббивать другие сервисы, и, если нужно, мерджить сущности. У прослойки свой собственный API, который и является API всего приложения. Сама прослойка в кубе в таком случае была бы обычным сервисом, который смотрел бы наружу прямо или за nginx'ом/аналогом.
Igor
Мы для всего внешнего используем HAProxy
Igor
HAProxy нам дает и балансировку и High Availability и Failover
Dmitry
понял вариант с кастомным сервисом, который принимает запросы из внешнего мира и перенаправляет все во внутренние сервисы звучит очень разумно - плский с бубном вокруг конфигов nginx'а отваливаются
Dmitry
Мы для всего внешнего используем HAProxy
а как HAProxy узнает на какие внутренние сервисы переводить запросы?
Dmitry
там ведь тоже конфиг, как у nginx'а, с фиксированными айпишниками
Etki
и хапрокси, и nginx умеют резолвить днс-записи, и, таким образом, попадать на айпишники сервиса
Etki
В самом крайнем случае можно попробовать подцепить в pod confd или аналог и заставить его пересобирать конфигурацию конечного сервиса. Там те еще костыли получатся, но работать должно.
Igor
Каждый сервис может также легко реплициоваться, главное чтобы удовлетворял всем факторам. HAProxy настраивается по ACL - в которых куча всяких условий может быть отражена. Но в вашем случае скорее всего нужно будет либо применять еще nginx - либо как-то также заводить провайдера со своим API
Dmitry
а кто будет обновлять днс записи?) например: по внутреннему адресу 192.168.22.22 был доступен сервис и nginx туда корректно перенапрвлял по DNS записи: "service_users: 192.168.22.22" но сервис отвалился и рестартанул уже по адресу 192.168.22.23, а DNS запись осталась прежней получается тут должен быть кластерный IP с "умным балансировщиком", который сам обновляет DNS записи
Igor
За такими вещами HAProxy и следит с помощью health check, если сервис отвалился, он исключается из балансировки, пока не будет снова доступен
Igor
в случае с HAProxy Kubernetes и DNS не обязательны :)
Etki
а кто будет обновлять днс записи?) например: по внутреннему адресу 192.168.22.22 был доступен сервис и nginx туда корректно перенапрвлял по DNS записи: "service_users: 192.168.22.22" но сервис отвалился и рестартанул уже по адресу 192.168.22.23, а DNS запись осталась прежней получается тут должен быть кластерный IP с "умным балансировщиком", который сам обновляет DNS записи
И nginx, и haproxy в конфиге позволяют указать время повторного резолва dns, т.е. это не один раз задал и все. Единственный косяк - nginx'у нужно зарезолвить dns при старте, иначе он не поднимется. Kube-dns или что там внутри кубернетеса заботится уже о том, чтобы dns-запись содержала актуальные айпишники, будь то один виртуальный айпи на сервис или куча айпишников сервиса в случае headless-сервиса
Dmitry
HAProxy то все равно должен ходить к etcd узнавать, какие сервисы не умерли а каждый сервис должен сообщать о себе в etcd, что он живой, верно?)
Etki
HAProxy то все равно должен ходить к etcd узнавать, какие сервисы не умерли а каждый сервис должен сообщать о себе в etcd, что он живой, верно?)
хапрокси не ходит напрямую в etcd, насколько понимаю. если куб увидел, что сервис упал, он его выкинет из пула здоровых инстансов сервиса. упасть он может либо физически (просто процесс завершился), либо по настроенному тобой хелсчеку
Igor
Да, health check могут буть любого типа, в Haproxy настраивается как опрашивать каждый сервис
Igor
там можно просто проверят жив ли сервис по TCP, можно по HTTP опрос делать, да еще сравнивать результат - вариантов масса
Dmitry
да, но когда поднялась новая реплика какого-то сервиса, то окружающая среда и HAProxy как-то должны узнать, что есть новая реплика и можно на нее слать запросы
Dmitry
я думал ввод нового сервиса в среду делается через etcd
Igor
Конечно, с помощью health check от HAProxy он определяет, что сервис жив и снова его включает в балансировку
Etki
да, но когда поднялась новая реплика какого-то сервиса, то окружающая среда и HAProxy как-то должны узнать, что есть новая реплика и можно на нее слать запросы
зарезолвит днс еще через 10 секунд. если сервис не headless, то kube-dns обновит записи, соответствующие виртуальному айпи, там все на уровне iptables, и haproxy даже не заметит, что произошло
Igor
Похоже тут начали говорить уже о разных вещах :)
Dmitry
зарезолвит днс еще через 10 секунд. если сервис не headless, то kube-dns обновит записи, соответствующие виртуальному айпи, там все на уровне iptables, и haproxy даже не заметит, что произошло
да, в кубернете я видел на видео, что там все это уже реализовано) я думаю, как это сделать так, чтобы было отвязано от кубертнета, но в то же самое время можно было легко встроить контейнеры в среду, где есть кубернет)
Igor
Если хотите получить High Alailability и Failover не в контейнерах - то HAProxy достаточно одного. Если речь о контейнерах, то там полный набор включая Kubernetes, ETCD и HAProxy (Ingres)
Etki
кубернетес у тебя на продакшен и стейджинге, на рабочей машине у тебя просто не будут падать сервисы, делаешь им статический днс любыми способами и все
Dmitry
понял, спасибо!) пойду запилю демку
Alexander
▫️Какой у вас проект или где работаете? Selectel ▫️В чём вы специалист? Системное администрирование, CI/CD ▫️Чем можете быть интересны или полезны сообществу? ▫️Чем интересно сообщество вам? Только-только окунулся в k8s и словил много непонятностей ▫️Откуда вы? spb ▫️Как узнали про группу? @dkostenko #whois
Anonymous
А чем OpenStack отличается от кубернетес или месос?
Anonymous
лол
Anonymous
там не только виртуалки, грубо говоря
Anonymous
днс, файлопомойка и всё такое
Anonymous
Ну и?
Anonymous
А месос и куб?
Anonymous
а это оркестрация виртуалок и контейнеров
Anonymous
(хотя я не уверен, что в месос есть виртуалки)
Anonymous
Небольшая разница вроде? Опенстак вроде не готов в продакшкн и половины фич нету
Anonymous
лол
Anonymous
ракспейс, наса, ред хат, куча более мелких провайдеров
Anonymous
ну и половины каких фич? которые не являются целевыми для опенстэка?
Anonymous
это ведь не средство оркестрации
Anonymous
хер с пальцем сравниваешь, грубо говоря
Igor
IAAS - OpenStack, PAAS - Deis, etc Kubernetes - Container Management System
Igor
Любая IAAS, PAAS может содержать и интрегрировать Container Management System
Igor
Если Kubernetes, то можно посмотреть в сторону OpenShift
Igor
https://www.openshift.org/
Anonymous
Все равно не понятно чем отличаются
Igor
Инфраструктура -> Платформа -> Оркестрация
Igor
отличаются иерархией
Igor
Это как операционка -> сервер -> сервис
Anonymous
Но все эти платформы умеют запускать виртуалки
Igor
Витруалки и контейнеры они сквозь пространство и время :)
Igor
И в контексте и вне контекста
Igor
а тут разве сравнивают vm и контейнеры? :)
Igor
Mesos умеет управлять и виртуалками и контейнерами
Anonymous
Ладно. Месос от Опенстака чем отличается?
Anonymous
Ну это ты так думаешь
Igor
Месос - средство оркестрации, Опенстэк - инфраструктура
Sergey
гуглим на слова IAAS PAAS CAAS и всякие там асы
Sergey
и что к чеиу относиться
Sergey
какие задачи решает
Sergey
да некоторые вещи могут пересекаться
Anonymous
Опенстак тоже оркестрация тогда как и месос)
Igor
Опенстэк - инфраструктура, то есть все что угодно вместе взятое :)
Sergey
не кормите троля
Igor
Ну в общем да, лучше идти по пути просвящения, посмотреть пару видео по теме, потом уже более интересные вопросы задавать.
Anonymous
Ну если вы не знаете так и скажите. На простой вопрос ответить не можете. А описания я читал
Sergey
Вам ответили
Sergey
Думать за Вас никто тут не будет
Anonymous
Ты ничего не ответил. Значит профан
Sergey
Где?
Sergey
Сергей, [16 окт. 2016 г., 16:19]: гуглим на слова IAAS PAAS CAAS и всякие там асы и что к чеиу относиться какие задачи решает да некоторые вещи могут пересекаться
Anonymous
Лол. Это что ответ? Я тоже могу сказать иди гугли пацан
Anonymous
Сергей иди гугли
Sergey
А вы для начала не пробовали себе поднять тестовые кластера и посмотреть что они делают, ну на уровне, если тупость Вам не позволяет понять по прочитаному кадая система делает