GitLab CI/CD для Kubernetes: как настроить pipeline без ручного деплоя
GitLab CI/CD для Kubernetes должен не просто собирать image и запускать deploy. Нормальный pipeline фиксирует путь от commit до production: сборка, проверки, registry, deploy, approvals, rollback и post-release smoke.
Когда пора настраивать CI/CD заново
Часто pipeline вроде бы есть, но production-релиз всё равно держится на ручных командах: кто-то локально пересобирает image, вручную меняет tag, запускает kubectl apply или помнит порядок действий только в голове.
В такой схеме GitLab CI становится не системой доставки, а журналом частично автоматизированных действий. Настройка CI/CD должна убрать неясность: что собирается, где хранится, кто может выкатить и как откатиться.
1. Структура GitLab CI/CD pipeline
Хороший pipeline читается как маршрут изменения. Команда должна видеть, какие stages обязательны, где собирается Docker image, какие проверки блокируют релиз и где начинается deploy в Kubernetes.
2. Deploy в Kubernetes: Helm, kubectl или Argo CD
В Kubernetes опасно смешивать все способы доставки одновременно. Если часть релизов идёт через Helm, часть через kubectl, часть через Argo CD, а часть вручную, команда быстро теряет понимание реального состояния.
Нужно выбрать основной путь и явно описать исключения. Для GitLab CI это обычно Helm/kubectl deploy или GitOps-модель через Argo CD. В обоих случаях важны namespaces, service accounts, image tags, approvals и smoke-проверки.
3. Secrets, variables и security-проверки
CI/CD часто становится местом, где незаметно копятся production-секреты. Если variables не protected/masked, runners имеют лишние права, а service accounts не ограничены, один pipeline может стать точкой компрометации всего контура.
4. Rollback и post-release checks
Автоматический deploy без rollback — это ускорение аварии. Перед production-релизом должно быть понятно, как вернуть предыдущую версию, кто принимает решение и какие проверки показывают, что релиз действительно успешен.
Что должно быть на выходе
Результат настройки GitLab CI/CD — не большой YAML, а спокойный повторяемый релиз. Команда понимает, как изменение попадает в production, где оно проверяется, как ограничены права и что делать при проблеме.
FAQ
Можно ли настроить GitLab CI/CD для Kubernetes с нуля?
Да. Обычно начинаем с маршрута изменения: build, tests, image, registry, deploy, smoke checks и rollback. Затем настраиваем runners, variables, protected environments и Kubernetes service accounts.
Что лучше для deploy в Kubernetes: Helm или Argo CD?
Helm проще как прямой deploy из pipeline. Argo CD лучше подходит, когда нужна GitOps-модель, история desired state и отдельный контроль синхронизации. Выбор зависит от зрелости команды и текущей инфраструктуры.
Как безопасно хранить kubeconfig и secrets в GitLab CI?
Минимум — protected/masked variables и service account с ограниченными правами. Лучше — внешний secret store, короткоживущие credentials и отдельные права для staging и production.
Нужен ли rollback в CI/CD pipeline?
Да. Rollback должен быть описан и проверен до аварии. Для Kubernetes это может быть Helm rollback, возврат GitOps-состояния, предыдущий image tag или другой заранее согласованный сценарий.