DevOps-инженер: что нужно знать с нуля, ключевой стек (Docker, K8s, CI/CD) и вопросы на собеседовании
Подробный гид по профессии DevOps-инженера: основы Linux, контейнеризация в Docker, оркестрация в Kubernetes, CI/CD пайплайны, Infrastructure as Code и частые вопросы технических интервью.
DevOps — одна из самых высокооплачиваемых и востребованных специализаций в IT. Если разработчики создают продукт, а системные администраторы поддерживают «железо», то DevOps-инженер выстраивает культуру и автоматизированный конвейер доставки кода (CI/CD): от локального коммита программиста до мгновенного релиза в продакшн без простоя пользователей.
В этой статье мы разберем:
- Базовые компетенции, без которых в DevOps не берут даже джунов.
- Актуальный стек технологий.
- 5 глубоких вопросов с собеседований с подробными инженерными ответами.
Ключевой стек DevOps-инженера#
В индустрии закрепился джентльменский набор инструментов, вокруг которого строятся 90% вакансий:
| Направление | Стандарт де-факто | Альтернативы |
|---|---|---|
| ОС и среда | Linux (Ubuntu, Debian, RHEL) | Alpine (для компактных образов) |
| Контейнеризация | Docker | Podman, containerd |
| Оркестрация | Kubernetes (k8s) | Docker Swarm, Nomad |
| CI/CD | GitLab CI, GitHub Actions | Jenkins, ArgoCD (GitOps) |
| IaC (Инфраструктура как код) | Terraform, Ansible | OpenTofu, Pulumi |
| Наблюдаемость (Observability) | Prometheus + Grafana | VictoriaMetrics, Loki, ELK/OpenSearch |
Дорожная карта (Roadmap) обучения#
Пошаговый план развития DevOps-инженера
Фундамент: Linux и компьютерные сети
1-2 месяцаГлубокое понимание ядра Linux, управление процессами (systemd, сигналы), сетевой стек TCP/IP, маршрутизация, DNS и диагностика через tcpdump и ss.
Контейнеризация и Docker
3-4 неделиИзоляция процессов через cgroups и namespaces, multi-stage сборка компактных образов, безопасность и запуск без root-прав.
CI/CD автоматизация и доставка кода
3-4 неделиПостроение надежных конвейеров сборки, тестирования и деплоя в GitLab CI и GitHub Actions. Артефакты, кэш и секреты.
Оркестрация в Kubernetes (k8s)
2-3 месяцаАрхитектура Control Plane, Pods, Deployments, Services, сетевые плагины CNI, Ingress и Helm-чарты для управления манифестами.
IaC и наблюдаемость (Observability)
1-2 месяцаДекларативное описание инфраструктуры через Terraform / Ansible, сбор метрик в Prometheus и построение графиков в Grafana.
Топ-5 вопросов с собеседований по DevOps#
1. Чем контейнер Docker принципиально отличается от виртуальной машины?#
Этот вопрос проверяет, понимает ли кандидат устройство виртуализации на уровне ядра.
- Виртуальная машина (ВМ): Работает поверх гипервизора (KVM, ESXi). ВМ включает в себя собственное полноценное гостевое ядро ОС, драйверы и виртуализированное оборудование. Старт занимает минуты, потребляет гигабайты памяти на каждую ВМ.
- Контейнер: Это просто изолированный процесс в общей операционной системе хоста. Он делит общее ядро Linux с хостовой машиной. Изоляция обеспечивается двумя фичами ядра:
- Namespaces (Пространства имен): Изолируют видимость (PID, сеть NET, точки монтирования MNT, пользователей USER).
- Control Groups (cgroups): Ограничивают потребление ресурсов (например, не более 2 ядер CPU и 512 МБ памяти).
2. Что происходит под капотом при kubectl apply -f deployment.yaml?#
Классический вопрос на архитектуру управляющего слоя (Control Plane) Kubernetes:
kubectlвалидирует манифест и отправляет HTTP POST запрос вkube-apiserver.kube-apiserverаутентифицирует пользователя, проверяет права через RBAC, применяет Admission Webhooks и сохраняет декларативное состояние в распределенную базу данныхetcd.kube-controller-managerвидит через механизм Watch, что в etcd появился новый Deployment, и создает соответствующийReplicaSet.kube-schedulerзамечает непоселенные поды (nodeNameпустой), анализирует доступные ресурсы нод кластера (фильтрация и ранжирование) и назначает поду конкретную рабочую ноду.- Агент
kubeletна назначенной ноде видит задачу, обращается к Container Runtime (containerd) через интерфейс CRI и запускает контейнеры.
3. Стратегии деплоя: Rolling Update vs Blue-Green vs Canary#
| Стратегия | Как работает | Плюсы | Минусы |
|---|---|---|---|
| Rolling Update (дефолт в K8s) | Постепенная замена старых подов на новые по одному | 0 простоя, не требует двойных ресурсов | В кластере одновременно работают две версии API |
| Blue-Green | Разворачивается полностью новое окружение (Green) рядом со старым (Blue), после чего трафик на роутере переключается мгновенно | Мгновенный откат (Rollback) назад при баге | Требует x2 мощностей серверов |
| Canary (Канареечный) | На новую версию пускают только 5-10% реального трафика. При отсутствии ошибок трафик поднимают до 100% | Минимальный риск для пользователей | Сложнее настройка (нужен Service Mesh / Envoy) |
4. В чем разница между ENTRYPOINT и CMD в Dockerfile?#
ENTRYPOINT— задает неизменяемый исполняемый файл контейнера:DOCKERFILEENTRYPOINT ["nginx"]CMD— задает аргументы по умолчанию дляENTRYPOINT. Их можно легко переопределить при вызовеdocker run:Если запуститьDOCKERFILECMD ["-g", "daemon off;"]docker run my-nginx -v, тоCMDзаменится на-v, аENTRYPOINT(nginx) останется прежним.
5. Что такое GitOps и как устроен ArgoCD?#
GitOps — это подход к управлению инфраструктурой, где единственным источником правды (Single Source of Truth) для состояния кластера является репозиторий Git.
Вместо того чтобы CI-раннер выполнял kubectl apply с правами админа напрямую в кластер, агент ArgoCD, установленный внутри Kubernetes, непрерывно опрашивает Git-репозиторий. Если реальное состояние кластера отличается от декларации в Git, ArgoCD производит синхронизацию (Sync).
Резюме#
DevOps — это постоянный баланс между скоростью доставки фич и отказоустойчивостью инфраструктуры. Понимание Linux и контейнерной изоляции — фундамент для уверенного старта в профессии.
Прокачивай IT-скиллы с Capycodio
Не зубри теорию часами перед компьютером. Короткие 3-минутные интерактивные сессии прямо с телефона: по дороге, за кофе или перед сном.
Мы создаем интерактивный мобильный тренажер для разработчиков. Короткие сессии по 3-5 минут, чтобы держать базу и закрывать пробелы перед собеседованиями.