- Home »

Как установить Jenkins в Kubernetes
Итак, сегодня разберём, как поднять Jenkins в Kubernetes — не просто ради галочки, а чтобы реально автоматизировать CI/CD, избавиться от лишнего ручного труда и не бояться, что твой Jenkins отвалится после очередного обновления ядра. Если ты уже ковырялся в серверах, но хочется чего-то более гибкого, масштабируемого и современного — добро пожаловать. Здесь будет всё: кратко о том, как это работает, пошаговая инструкция с командами, реальные кейсы, грабли и фишки. Погнали!
Как это работает?
- Jenkins — топовый инструмент для автоматизации сборки, тестирования и деплоя (CI/CD). Его можно запускать «по старинке» на голом сервере, но с Kubernetes появляется совсем другой уровень гибкости.
- Kubernetes — оркестратор контейнеров. Позволяет разворачивать приложения в виде контейнеров (например, в Docker), управлять масштабированием, обновлениями, отказоустойчивостью.
- Вместо того чтобы держать Jenkins на одном сервере, мы запускаем его как Pod в Kubernetes, а данные храним в PersistentVolume — чтобы не потерять настройки и плагины после рестартов.
- Всё это позволяет легко обновлять Jenkins, откатываться, масштабировать агентов, использовать Helm-чарты и не бояться «битых» апдейтов.
Пошаговая установка Jenkins в Kubernetes
- Подготовь кластер Kubernetes (можно на VPS или выделенном сервере — на твоё усмотрение). Минимум — 2 vCPU, 4GB RAM, 20GB disk. Если нет — ставим kind или minikube для тестов.
- Установи Helm — менеджер пакетов для Kubernetes:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
- Добавь репозиторий Jenkins Helm:
helm repo add jenkins https://charts.jenkins.io helm repo update
- Создай namespace (по желанию):
kubectl create namespace jenkins
- Установи Jenkins через Helm:
helm install jenkins jenkins/jenkins --namespace jenkins
- Проверь статус установки:
kubectl get all -n jenkins
- Получи пароль администратора:
kubectl exec --namespace jenkins -it svc/jenkins -c jenkins -- /bin/cat /run/secrets/chart-admin-password && echo
- Пробрось порт для доступа к Jenkins из браузера:
kubectl --namespace jenkins port-forward svc/jenkins 8080:8080
- Открой http://localhost:8080 и залогинься паролем из прошлого шага.
Практика: кейсы, схемы, грабли
Кейс | Что делать | Подводные камни | Рекомендации |
---|---|---|---|
Jenkins теряет плагины/настройки после рестарта | Настроить PersistentVolume | По умолчанию Helm-чарт создаёт PVC, но иногда надо подправить storageClass | Проверь values.yaml — укажи нужный storageClass, размер, тип диска |
Надо запускать билды в отдельных контейнерах | Использовать Kubernetes agents | Не все плагины поддерживают Kubernetes agents «из коробки» | Ставь Kubernetes plugin для Jenkins |
Секреты и токены в пайплайнах | Использовать Kubernetes Secrets | Jenkins может не видеть секреты, если неправильно настроены RBAC | Проверь serviceAccount и роли, можно использовать kubernetes-credentials-provider-plugin |
Обновление Jenkins | helm upgrade | Плагины могут отвалиться, если несовместимы с новой версией | Делай helm upgrade --dry-run сначала, читай changelog |
Похожие решения и альтернативы
- GitLab CI/CD — встроенный CI/CD в GitLab, тоже можно запускать в Kubernetes, но менее гибко для кастомных пайплайнов.
- Tekton — «нативный» Kubernetes CI/CD, но требует больше времени на освоение, меньше готовых плагинов.
- ArgoCD — больше про GitOps и деплой, а не про сборку и тесты.
- Jenkins — всё ещё самый гибкий и расширяемый, особенно если нужен кастом и legacy.
Сравнение Jenkins vs другие CI/CD
Платформа | Масштабируемость | Плагины | Интеграция с K8s | Время на освоение |
---|---|---|---|---|
Jenkins | Высокая (через агенты) | 1000+ | Да (через Helm, kubernetes-plugin) | Среднее |
GitLab CI | Средняя | Ограничено | Да (через runners) | Низкое |
Tekton | Высокая | Мало | Нативно | Высокое |
Фишки и нестандартные способы
- Можно запускать Jenkins master как Deployment, а агенты — как динамические Pods (Kubernetes plugin сам поднимает и убивает их).
- Jenkins легко интегрируется с HashiCorp Vault для хранения секретов — удобно для продакшна.
- Поддержка Blue/Green деплоя Jenkins — можно держать две версии и переключаться между ними через сервисы K8s.
- Jenkins можно использовать для оркестрации не только CI/CD, но и любых автоматизаций: например, ежедневный бэкап, синхронизация данных, автоматическое обновление контейнеров.
Новые возможности и автоматизация
- Быстрое масштабирование — под нагрузкой Jenkins может сам поднимать больше агентов, а когда билды закончились — гасить их.
- Автоматическое обновление Jenkins через
helm upgrade
— не надо руками копаться на сервере. - Можно интегрировать с Prometheus/Grafana для мониторинга билдов, очередей, ошибок.
- Легко тестировать новые плагины или версии Jenkins на отдельном namespace — не ломая продакшн.
Заключение и рекомендации
Jenkins в Kubernetes — это не «модно-молодёжно», а реально удобно и надёжно. Ты получаешь автоматизацию, масштабируемость, удобные обновления и меньше ручной работы. Используй Helm-чарты для быстрой установки, не забывай про PersistentVolume, следи за RBAC и секретами. Если нужен гибкий и мощный CI/CD — Jenkins в K8s пока лучший выбор, особенно если у тебя много кастома и старых пайплайнов. Для старта подойдёт даже VPS — бери тут, а если нужна мощь и продакшн — выделенный сервер.
Официальные ссылки для погружения: https://www.jenkins.io/doc/book/installing/kubernetes/, https://github.com/jenkinsci/helm-charts. Если есть вопросы — welcome в комменты!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.