Это зависит только от вас, как вы хотите это сделать.В общем, мы создаем отдельные кластеры k8s для работы и постановки (и т. Д.).И ваш Jenkins должен быть развернут в другом кластере в зависимости от вашего конвейера.Если вам нужен настоящий CI / CD, тогда достаточно одного конвейера, который будет развернут в обоих кластерах (или средах).
В большинстве случаев предприятия не хотят, чтобы CI работала (по очевидным причинам).,Им требуется ручное тестирование в средах контроля качества перед его развертыванием в prod.
Поскольку k8s основан на контейнерах, развертывание одного и того же образа в разных средах действительно очень просто.Вы просто создаете свое приложение для весенней загрузки один раз, а затем при необходимости развертываете его в разных средах.
Простой конвейер:
- Код нажал и сборка запущена.
- Сборка с модульными тестами.
- Создайте образ докера и отправьте его в реестр.
- Запустите kubectl / helm / etc, чтобы развернуть новый образ сборки в STAGING
- Проверьте, еслиРазвертывание прошло успешно
Если вы хотите развернуть то же самое в prod, продолжите конвейер с помощью (здесь вы также можете остановиться для QA https://jenkins.io/doc/pipeline/steps/pipeline-input-step/):
Запустите kubectl / helm / etc, чтобы развернуть образ новой сборки в PRODUCTION Проверьте, было ли развертывание успешным
Если вашему QA требуется больше времени, тогда вы также можетесоздайте другое задание Jenkins и запустите его вручную (даже с помощью QA могут это вызвать)
Если вы QA и PM - технари, то они также могут объединять ветви или закрывать PR, что может автоматически запускать jenkins и запускать prodразвертывания.
РЕДАКТИРОВАТЬ (ответ на комментарий): вы выполняете вызовы REST для API k8s.Даже kubectl apply -f foo.yaml
сделает этот вызов покоя.Неважно, откуда вы делаете этот вызов - учитывая, что ваш kubectl настроен правильно и может общаться с сервером k8s.Вы можете настроить несколько кластеров для kubectl и использовать kubectl --context <staging-cluster> apply -f foo.yaml
.Вы можете выбрать имя контекста из переменной enen jenkins или другого механизма.