Я пытаюсь реализовать конвейер CI / CD для моего развертывания микросервиса, создаваемого в Spring Boot. Я пытаюсь использовать свой репозиторий SVN, Kubernetes и Jenkins для реализации конвейера. Когда я изучаю развертывание с использованием Kubernetes и Jenkins, я нашел учебные пособия и множество видеороликов для развертывания как в тестовой, так и в производственной среде путем создания и определения в Jenkinsfile. А также добавление сценария оболочки в конфигурацию Jenkins.
Спутанность сознания
Здесь у меня возникло сомнение, что при развертывании в тестовой среде, как мы можем развернуть то же самое в среде prod после завершения надлежащего тестирования? Мне нужно добавить отдельный сценарий оболочки для продукта? Или мы выполняем серийное развертывание, используя один скрипт как для теста, так и для продакшена?

Как вы хотите это сделать, полностью зависит от вас. В общем, мы создаем отдельные кластеры k8s для prod и staging (и т. д.). И ваш Jenkins необходимо развернуть в другом кластере в зависимости от вашего конвейера. Если вам нужен настоящий CI / CD, тогда достаточно одного конвейера, который будет развернут в обоих кластерах (или средах).
В большинстве случаев компании не хотят использовать CI в производственной среде (по очевидным причинам). Им нужно ручное тестирование сред QA перед их развертыванием в продукте.
Поскольку k8s основан на контейнерах, развернуть один и тот же образ в разных окружениях очень просто. Вы просто создаете свое весеннее загрузочное приложение один раз, а затем развертываете его в разных окружениях по мере необходимости.
Простой конвейер:
Если вы хотите развернуть то же самое в prod, продолжите конвейер с (вы можете сделать паузу здесь для QA, а также https://jenkins.io/doc/pipeline/steps/pipeline-input-step/):
Если вашему QA требуется больше времени, вы также можете создать другое задание Jenkins и запустить его вручную (даже QA enggs может вызвать это)
Если вы QA и PM - технические специалисты, они также могут объединять ветки или закрывать PR, что может автоматически запускать jenkins и запускать развертывание продуктов.
РЕДАКТИРОВАТЬ (ответ на комментарий):
Вы выполняете REST-вызовы API k8s. Даже kubectl apply -f foo.yaml сделает этот призыв к отдыху. Неважно, откуда вы делаете этот вызов - учитывая, что ваш kubectl настроен правильно и может взаимодействовать с сервером k8s. Вы можете настроить несколько кластеров для kubectl и использовать kubectl --context <staging-cluster> apply -f foo.yaml. Вы можете выбрать имя контекста из переменной env jenkins или другого механизма.
ОК. Спасибо за ответ, господин Амрит Бера. Позвольте мне уточнить, могу ли я использовать один и тот же кластер (3 главных и 9 рабочих машин / кластер высокой доступности) как для тестирования, так и для производства? . И я планирую установить jenkins в одном узле своего кластера. Итак, возможно ли развертывание в другом кластере? Поскольку я устанавливаю Jenkins в свой первый кластер. Итак, как я могу развернуться в другом кластере? Не могли бы вы прояснить мои недоразумения?
Мы работаем над проектом с открытым исходным кодом под названием Дженкинс Икс, который является предлагаемым подпроектом фонда Jenkins, направленным на автоматизацию CI / CD в Kubernetes с использованием Jenkins и GitOps для продвижения.
Когда вы вносите изменения в основную ветку, Jenkins X создает новый семантически версионный дистрибутив вашего приложения (pom.xml, jar, образ докера, диаграмму управления). Затем конвейер автоматизирует создание запросов на извлечение для продвижения вашего приложения во всех средах через GitOps.
Вот демонстрация того, как автоматизировать CI / CD с несколькими средами в Kubernetes с помощью GitOps для продвижения между средами и средами предварительного просмотра при запросах на извлечение - с использованием приложений Spring Boot и nodejs (но мы поддерживаем множество языков + фреймворки).
Можете ли вы добавить шелл-код, на который вы ссылаетесь?