Pull to refresh

Comments 7

Хороший концепт и я его применяю с самого начала, как я стал использовать Kubernetes. И на фоне этого я не очень вижу как можно применять helm, а я так хотел.
Так одно другого не исключает.

Допустим, у вас приложение, состоящее из двух бэков + базы.
И у вас Docker и Helm Chart лежат прямо с кодом, который они обсуждивают — у каждого из двух бэков свой набор.
Вы сделали изменение в брэнче одного из бэков. Он улетел в ориджин. Оттуда хуком пнулся Дженкинс, тот увидел новый брэнч, сгенерировал под него джобу (multibranch) и запустил pipeline. Один из шагов — деплоймент.
Допустим, Helm не используется. Деплоймент пойдет напрямую через apply deployment.yml в k8s. В таком случае получается, что деплоймент только одного бэка. То есть у вас прилетит бэк1 новый, а бэк2 будет стоять старый. Вместе они работать не рассчитаны, так как находятся на разных версиях.
А теперь тот же сценарий, но с Helm.
Вы ставите бэк1 через helm upgrade. Он по зависимостям вытягивает правильную версию базы (да может даже у вас там прибавилось еще других зависимостей даже) и правильную версию парного бэка2.

Другими словами, Helm дает вам консистентность на уровне всего приложения. И Git это никак не отменяет. Они даже никак не связаны. Вы, конечно, могли изначально в Jenkinfile захардкодить это поведение, но боюсь, это не так элегентно и гибко.

Где-то можно скачать HelloWorld-проект, в котором это всё добро внедрили?

Такого репозитория я не видел. Пока есть getting started документация от flux: https://github.com/weaveworks/flux/blob/master/site/get-started.md. Но там нет конфигов для развёртывания самого куба.


А было бы круто прям с нуля сделать git clone, start.sh и уже готовый куб поднялся где-то в AWS, остаётся только коммиты пушить для изменений.

Попробуйте JenkinsX, там все так и устроено.
Rancher тоже делает подобное, правда более упрощенно. В новой версии из коробки будет istio и, возможно, канареечные деплойменты.

А любая проблема выглядит как черный ящик, забыли добавить вы)

«GitOps is the best thing since configuration as code. Git changed how we collaborate, but declarative configuration is the key to dealing with infrastructure at scale, and sets the stage for the next generation of management tools.»

Kelsey Hightower, Aug 21, 2019.
Sign up to leave a comment.