Вопросы по DevOps: CI/CD, IaC, облака
Пайплайны, стратегии деплоя, GitOps, Terraform и Ansible, облака, секреты, nginx, DNS и TLS, базы в эксплуатации и безопасность поставки. Закрывает DevOps-секцию собеса: и теорию, и разбор конфигов, и скрипты эксплуатации.
Проверьте себя: тест по DevOps
20 вопросов, 10 минут, уровень junior, middle или senior
Культура и практики DevOps
CALMS, метрики DORA, SRE и DevOps, trunk-based разработка, ветвление и релизный цикл.
Урок: Культура DevOps за 6 минут 6 минCI: пайплайны и артефакты
GitHub Actions и GitLab CI, стадии и джобы, кеш против артефактов, раннеры, матрицы, версии и реестры.
Урок: CI-пайплайны и артефакты за 7 минут 7 мин- Какие сервисы пересобрать в монорепо
- Следующая версия по Conventional Commits
- Собрать один раз
- Кеш или артефакт в CI
- concurrency в GitHub Actions
- Ключ кеша зависимостей
- Conventional Commits
- Как ускорить пайплайн
Ещё 14 вопросов и задач
- GitHub Actions: отмена устаревших запусков
- GitHub Actions: раннер и зависимость джоб
- GitLab CI: артефакты со сроком жизни
- Почему не деплоить latest
- needs в GitLab CI
- npm ci против npm install
- Порядок шагов пайплайна
- Фиксация сторонних actions
- Код-ревью: workflow GitHub Actions
- Код-ревью: .gitlab-ci.yml
- Self-hosted раннер и публичный репозиторий
- Semantic Versioning
- Секреты и безопасность пайплайна
- Расскажите про свой пайплайн
Стратегии деплоя
Recreate, rolling, blue-green, canary, feature flags, откат и совместимость версий при выкатке.
Урок: Стратегии деплоя за 7 минут 7 мин- Решение по канарейке из логов
- Blue-green и база данных
- Blue-green против canary
- Канарейка на малом трафике
- Expand / contract
- Graceful shutdown при деплое
- Четыре стратегии деплоя
- Зачем feature flags
Ещё 12 вопросов и задач
- kubectl: статус и откат выкатки
- Rolling update: считаем поды
- maxUnavailable: 0
- Шаги blue-green выкатки
- Переименование колонки без простоя
- Readiness probe и rolling
- Когда уместен Recreate
- Код-ревью: Deployment для безопасной выкатки
- Две версии во время rolling
- Что не откатит rollout undo
- Спроектируйте канареечный релиз
- Как выкатить без простоя
GitOps и ArgoCD
Pull-модель, Application и sync, дрейф и self-heal, app of apps, окружения и продвижение релиза.
Урок: GitOps и ArgoCD за 6 минут 6 минTerraform и IaC
Провайдеры и ресурсы, state и блокировки, plan и apply, модули, import, drift и работа в команде.
Урок: Terraform и IaC за 8 минут 8 мин- Стоп-кран для destroy в плане
- count против for_each
- Что такое drift
- lifecycle в Terraform
- Команды работы со state
- Цикл работы Terraform
- for_each по множеству
- Блок moved
Ещё 14 вопросов и задач
- Terraform: план в файл и применение
- Забыть ресурс, не удаляя его
- Как взять под управление существующий ресурс
- Значки в плане Terraform
- Переименовать ресурс без пересоздания
- Что значит -/+ в плане
- Изменение инфраструктуры в команде
- Удалённый state и блокировка
- Код-ревью: Terraform для прода
- sensitive и state
- Распил большого state
- Как организовать Terraform в команде
- Зачем Terraform state
- Workspaces или каталоги
Ansible
Инвентарь, плейбуки, роли, идемпотентность, handlers, переменные и их приоритет, Vault.
Урок: Ansible за 6 минут 6 мин- Как Ansible подключается к хостам
- Хосты группы из INI-инвентаря
- Сухой прогон
- Динамический инвентарь
- Идемпотентность
- Структура роли
- Уведомить handler
- Запуск плейбука на части хостов
Ещё 12 вопросов и задач
- Зашифровать файл с секретами
- Когда выполняется handler
- Идемпотентность shell
- Обновление одного хоста в rolling-плейбуке
- Код-ревью: плейбук деплоя
- Rolling-обновление в Ansible
- Обновить 50 серверов без простоя
- Что такое идемпотентность
- Безопасная выкладка конфига
- Приоритет переменных
- ansible-vault
- Ansible или Terraform
Облака
VPC и подсети, IAM, вычисления, объектное хранилище, managed-сервисы, российские облака и стоимость.
Урок: Облака для DevOps за 8 минут 8 мин- Персональные данные и облако в РФ
- Калькулятор CIDR
- Откуда неожиданный счёт
- IaaS, PaaS, SaaS
- OIDC для CI
- Сеть веб-приложения в облаке
- Считаем адреса в CIDR
- Маленькие подсети
Ещё 12 вопросов и задач
- Managed-база против своей
- Хранилище и задача
- Зоны доступности
- Доступ приложения к бакету без ключей
- Путь запроса до приложения в облаке
- Выход в интернет из приватной подсети
- Stateful группы безопасности
- Модель разделённой ответственности
- Как снизить счёт за облако
- Сеть для веб-сервиса в облаке
- Прерываемые ВМ
- Какое хранилище выбрать
Секреты и Vault
Где нельзя хранить секреты, Vault, динамические секреты, ротация, секреты в CI и Kubernetes.
Урок: Секреты и Vault за 6 минут 6 минБалансировка и nginx
L4 и L7, алгоритмы балансировки, reverse proxy, upstream и health checks, таймауты, лимиты и логи.
Урок: Балансировка и nginx за 8 минут 8 мин- Код 499 в логах
- 502 или 504
- Доля 5xx по эндпоинтам
- Перцентили времени ответа
- Ротация логов своими руками
- Пиковая минута по логу
- Топ IP по access.log
- Алгоритмы балансировки
Ещё 17 вопросов и задач
- request_time и upstream_response_time
- Таймауты proxy в nginx
- nginx: заголовки для бэкенда
- nginx: лимит запросов
- nginx: upstream с балансировкой
- Health checks в открытом nginx
- keepalive к upstream
- L4 и L7 балансировка
- Когда least_conn
- Безопасная правка конфига nginx
- Слеш в proxy_pass
- Применить новый конфиг nginx
- Повтор POST на другой бэкенд
- Код-ревью: конфиг nginx перед API
- Пользователи видят 502
- Балансировка для высоконагруженного API
- Реальный IP клиента
DNS, TLS и прокси
Записи и TTL, резолвинг, сертификаты и цепочка, Let's Encrypt, mTLS, прямой и обратный прокси.
Урок: DNS, TLS и прокси за 8 минут 8 мин- Резолвинг по файлу зоны
- CNAME на вершине зоны
- Записи DNS
- dig: нужные флаги
- Запись DNS и задача
- Новая запись не видна
- Путь DNS-запроса
- Рекурсивный и авторитативный
Ещё 14 вопросов и задач
- «Сайт не открывается» у части пользователей
- TTL перед переездом
- Прямой и обратный прокси
- Сроки сертификатов по файлам
- Проверить сертификат сервера
- Рукопожатие TLS 1.3
- openssl: дата истечения из файла
- Работает в браузере, не работает в curl
- Что такое mTLS
- Рукопожатие TLS 1.3 по шагам
- Код-ревью: TLS в nginx
- Зачем SNI
- Сертификаты для 300 доменов
- Wildcard-сертификат Let's Encrypt
Базы данных в эксплуатации
Бэкапы и PITR, проверка восстановления, репликация, failover, пулы соединений, миграции без простоя.
Урок: Базы данных в эксплуатации за 8 минут 8 мин- Асинхронная реплика и потеря данных
- Где хранить бэкапы
- Как понять, что бэкап рабочий
- Ротация бэкапов: дневные и месячные
- Правило 3-2-1
- Логический и физический бэкап
- Безопасные миграции PostgreSQL
- Внешний ключ без долгой блокировки
Ещё 12 вопросов и задач
- Индекс без блокировки записи
- pg_dump и pg_restore
- Индекс на горячей таблице
- Очередь блокировок
- Восстановление PostgreSQL на момент времени
- Режимы PgBouncer
- Восстановление на момент времени
- Код-ревью: миграция на горячей таблице
- RPO и RTO
- Стратегия бэкапов PostgreSQL
- Обновление PostgreSQL на новую мажорную версию
- Split-brain
Безопасность цепочки поставки
Зависимости и lock-файлы, SBOM, сканирование, подпись образов, SLSA и защита пайплайна.
Урок: Безопасность цепочки поставки за 7 минут 7 мин- Проверить базовые образы в Dockerfile
- Keyless-подпись в Sigstore
- curl | bash в пайплайне
- Сканер нашёл 300 CVE
- Dependency confusion
- Тег или digest
- Известные атаки на цепочку поставки
- Защита цепочки поставки по слоям
Ещё 12 вопросов и задач
- SBOM: форматы и инструменты
- cosign: подписать и проверить
- Trivy: падать на критических
- Инструменты безопасности поставки
- Путь артефакта с проверками
- Код-ревью: Dockerfile с точки зрения поставки
- Зачем SBOM
- Что такое SLSA
- Новая критическая уязвимость
- Защищённый путь от коммита до прода
- Подпись без проверки
- Атака на цепочку поставки