Развертывание Kubernetes с использованием Helm и Jenkins для приложений на основе микросервисов - PullRequest
0 голосов
/ 14 января 2020

Мы разрабатываем веб-приложение, в котором есть несколько микросервисов в одном репозитории.

Для нашего существующего монолитного c приложения мы разворачиваем наше приложение в Kubernetes, используя Helm и Jenkins. Когда речь идет о микро-услугах, мы пытаемся определить наши стратегии CI / CD Pipeline. Ниже приведены неясные вопросы:

  • Для монолитного c приложения у меня есть один Dockerfile, один Jenkinsfile и один Helm Chart. Для этапа построения я строю образ (ы), используя следующую команду.

    docker.build("registry/myrepo/image:${env.BUILD_NUMBER}"
    
  • Для приложения monolithi c у меня есть одна диаграмма с несколькими values.yaml, например values.dev. yaml, values.prod.yaml, который я настроил для нескольких сред.

Итак, наши вопросы:

1.Как мы должны собрать и собрать sh несколько контейнеров для нескольких Dockerfiles в Jenkinsfile для микросервисов? В настоящее время у каждого микросервиса есть свои собственные файлы Docker в своих root.

2. Возможно ли, чтобы Дженкинс выделил guish микро-сервисов, которые мы хотели бы развернуть? Я имею в виду, что иногда, возможно, мы вносили некоторые изменения только для конкретной службы c, и мы хотели бы развернуть эти изменения. Так стоит ли нам организовывать независимый конвейер или есть какой-то способ обработки этого же конвейера?

3. Как нам организовать нашу схему Хелма для развертывания микросервисов Kubernetes? Должны ли мы создавать несколько диаграмм для каждого сервиса или создавать несколько шаблонов, которые ссылаются только на один values.yaml?

Ответы [ 2 ]

2 голосов
/ 14 января 2020

Похоже, что вы почти у цели.

  1. Наличие отдельных конвейеров для микро-сервисов, это позволит создавать, проверять и развертывать docker образы в реестре docker. Есть отдельный конвейер для проверки и развертывания всего стека с помощью helm.
  2. Я предполагаю, что вы будете использовать git события для определения изменений? Когда в микросервисе происходят изменения, я предполагаю, что они будут зафиксированы в одном репозитории. Это вызовет событие git, с помощью которого вы можете запустить конвейер соответствующего микросервиса.
  3. Поскольку руль представляет весь стек вашего приложения, я бы предложил иметь его в виде единой диаграммы. Если сложность микросервиса возрастает, разделите его на подкарты.

Несколько графиков могут стать будущим уровнем зрелости, когда группы, связанные с каждым микросервисом, могут развертывать обновления независимо, не влияя на доступность всего стека. .

0 голосов
/ 14 января 2020
  1. Отдельное задание в jenkins для каждого микросервиса.
  2. Отдельное задание для развертывания всего приложения с использованием диаграммы Хелма
...