Logan
не очень понимаю конечную цель
Logan
но теоретически можно выдать разрабам неймспейс и ограничить доступ через ABAC
Denis
Цель - автоматизация деплоя, автономность разработчиков и согласованность версий сервисов
Zon
Деплой ветки в неймспейс, туда применяется конфигурация из ветки. Но это пока теория, на на практике не дошло.
Zon
сикреты хранятся отдельно, в самом к8с, стандартными средствами подставляются в конфигурацию
Sn00part
можно все без кубернетеса сделать
Sn00part
зачем опять велосипед придумывать
Sn00part
нормально настроить дженкинс
Sn00part
или fabric8
Sn00part
или любой другой cicd
Sn00part
зачем разработчикам знать что то про кубернетис?
Denis
Затем, чтобы инфраструктуру тюнинговать
Sn00part
разработчикам?
Sn00part
это например как
Sn00part
они же не шарят
Sn00part
это работа админа или девопс
Denis
Значит никто ещё не делал деплой на поддомены feature-*.dev.blablabla.com + удаление их через Х дней отсутствия активности?
Sn00part
дженкинс все это делает
Sn00part
это должно решаться уровнем выше кубернетес
Sn00part
иначе разработчик на кошмарит такого, что век на разгребешь
Sn00part
ну либо у вас особенные разработчики
Sn00part
опиши пожалуйста, что значит тюнинговать окружение
Sn00part
может я просто неправильно понимаю
yolkov
мы делаем
yolkov
через хельм
Sn00part
хельм это менеджер пакетов. а остальное на чем реализовано?
Sn00part
грубо говоря, что вместо дженкинса и ему подобных
yolkov
CI конечно есть
yolkov
хельм может хорошо шаблонизировать для разных сред
yolkov
а дальше уже ваши фантазии на CI и конфигурации чартов
Sn00part
кубернетес это бекенд для CI, эти все задачи - задачи CI
Denis
Ок, ещё раз попробую) Может я просто неправильно как-то описал кейс.
Дано:
1. Есть набор реп, некоторые из них с одной веткой master, некоторые из них имеют ветки master, stage, develop. Некоторые ещё могут иметь ветки вида feature-425 (опционально).
2. Конфигурация K8s также в отдельной репе с ветками.
3. Некая абстрактная CI, которая может реагировать на git push.
Задача:
1. При деплое новой ветки, по заданным правилам разворачивать новый namespace и экземпляр сервисов. Правила включают имя поддомена и, опционально, - время жизни при отсутствии доступа (5 дней для feature-веток или бесконечно) и HTTP Basic Auth.
2. Например, если пушим в git ветку feature-425, то проверяем по каждой репе её наличие. Если есть - разворачиваем исходники оттуда, если нет - то из ветки develop.
3. Также можем запушить ветку feature-425 в репу с конфигурацией кубера (или удалить её из репы). В этом случае он обновит для заданного домена конфиг.
4. Выкатка в production будет заключаться в git merge веток develop => stage и затем stage => master для всех реп.
Sn00part
^^ ну вот бери дженкинс и настраивай) все это уже давно придумано и работает
Denis
Есть пруф-ссылки?)
yolkov
сами флоу придумываем, какие ссылки)
Sn00part
есть слайдов тонна, ссылки-то вряд-ли.
Sn00part
кубернетес тут вообще не причём, он тут как оркестратор виртуалок
Max
на груви dsl наверно можно закодить обернув git ... в try .. except а в целом кубернетес тут не при делах
Sn00part
настройка сервиса это докер файл обычный
yolkov
вот простой флоу
- в Ci клонируешь код, клонируешь конфигурации для куба, если будет конфигурации в виде хельм чарта, то твои параметры для разных сред записываешь в соответсвующие файлы
- Билдишь проект
- пушишь в регистри
- создаешь неймспейс например по номеру в трекере
- поднимаешь окружение
…
- тригеришься на удалении ветки из VCS и удаляешь неймспейс
Sn00part
сам кубернетес настраивать - ну это точно не разработчиков задача
Sn00part
ну или так, да
Sn00part
да и неймспейсы тут имхо лишнее совсем
yolkov
удобно
yolkov
только права выдавать полные приходится выдавать для CI, что не хотелось бы, хотя надо попробовать их динамически создавать если РБАК заюзать
Sn00part
namespace нужен когда больше десятка юзеров и нет договорённости по неймингу
Sn00part
а когда один cicd то неймспейс лишняя сущность
yolkov
неймспейсы удобны когда имеешь дело с многокомпонентными проектами и использованием одновременно несколько копий этого приложения
yolkov
либо придется дико шаблонизировать все, добавлять префиксы и т.п. чтобы сосуществовать в одном неймспейсе
Zon
Sn00part
ну то есть лень настроить дженкинс, настроим кубернетис)
yolkov
несогласен
Sn00part
ну плодить сущности без необходимости тоже идея так себе.
Sn00part
потом когда-нибудь придётся удалять домен 15 уровня
Zon
Дженкинсово дело настроить 1 неймспейс, а какой именно это будет неймспейс - зависит от ветки. Пихать всё в один не вижу смысла
yolkov
например в проекте, есть кластер редисов, мемкешей, можно будет создавать деплойменты и префиксировать его например по номеру таска.
а можно запрефиксировать только главное приложение(по которому заходим в приложение), а остальные имена будут дефолтные redis-cluster, memcache-cluster и т.п.
yolkov
конфиг для приложения тоже менять не придется
Sn00part
согласен, тут от ТЗ зависит многое
yolkov
а в твоем варианте его генерить придется
Zon
Менять неймспейс проще, чем конфиги
Sn00part
CI в опенстек например, работает без неймспейсов, а там больше ста компонентов
yolkov
@DenisIzmaylov на следующем митапе наши вроде хотели рассказать про хельм немного
Sn00part
всё разделение по логике на уровне дженкинса и его неймспейсов
Zon
100 компонентов * Х версий параллельно?
Sn00part
да
Sn00part
но у них ещё есть зуул некий
yolkov
да все можно. Но я про реальную ситуацию говорю, вот мы сели, попробовали просто пошаблонизировать наши конфиги для куба, охерели, попробовали хельм, стало лучше. А потом решили по нейспейсам поделить и стало еще лучше)
Sn00part
просто потом мало понятно становится, где чья ответственность и кто где что настраивает.
Sn00part
всё друг другу пишут тексты и CI неделю в коме
Sn00part
тикеты*
yolkov
ну не делай создание на каждый коммит, привяжись к трекеру, как в статус “ААА” перевели, создавай окружение
yolkov
у разрабочкиков есть локальный миникуб, где они так же свои чарты могут разворачивать для разработки
yolkov
ты в праве выбрать на что тригерить, а на что не нужно
yolkov
это больше организационный вопрос
yolkov
прелесть неймспейсов еще и в лимитировании ресурсов
Sn00part
а в проде тоже неймспейсы?
yolkov
ну там их не так много как в QA, деве
yolkov
по проектам или группе проектов
Sn00part
ну вот ещё одна будет проблема рано или поздно, CI зелёный, а в проде не пашет.
yolkov
у нас в любом случае окружение отличатся будет, в бою много сервисов работают вне куба, так что идентичности мы в любом случае не добъемся