Найти в Дзене
Linux | Network | DevOps

DevOps-собес без сюрпризов: 100 вопросов с разбором

В этой статье — 100 реальных и нетривиальных вопросов с собеседований DevOps-специалистов: от контейнеризации и CI/CD до сетей, безопасности и отказоустойчивости. Каждый вопрос сопровождается подробным разбором, примерами и объяснением, что именно от тебя ждут. Начни подготовку как профессионал — разбор начинается. Погнали! Обсудить эту статью можно в Телеграм канале: https://t.me/linautonet DevOps объединяет процессы разработки и эксплуатации, что позволяет
сократить цикл поставки и повысить качество продукта. Основные плюсы: – **Скорость вывода на рынок:** частые малые релизы сокращают время
между разработкой и развертыванием, что обеспечивает быструю обратную
связь и адаптацию к требованиям рынка. – **Сотрудничество:** общее владение кодом и инфраструктурой ликвидирует барьеры между командами и упрощает коммуникацию. – **Надёжность и масштабируемость:** автоматизация тестирования и
развертываний снижает количество ошибок и обеспечивает повторяемость
инфраструктуры. Использован
Оглавление

В этой статье — 100 реальных и нетривиальных вопросов с собеседований DevOps-специалистов: от контейнеризации и CI/CD до сетей, безопасности и отказоустойчивости.

Каждый вопрос сопровождается подробным разбором, примерами и объяснением, что именно от тебя ждут.

Начни подготовку как профессионал — разбор начинается. Погнали!

Обсудить эту статью можно в Телеграм канале: https://t.me/linautonet

1. Каковы основные преимущества внедрения DevOps?

DevOps объединяет процессы разработки и эксплуатации, что позволяет
сократить цикл поставки и повысить качество продукта. Основные плюсы:

– **Скорость вывода на рынок:** частые малые релизы сокращают время
между разработкой и развертыванием, что обеспечивает быструю обратную
связь и адаптацию к требованиям рынка.

– **Сотрудничество:** общее владение кодом и инфраструктурой ликвидирует барьеры между командами и упрощает коммуникацию.

– **Надёжность и масштабируемость:** автоматизация тестирования и
развертываний снижает количество ошибок и обеспечивает повторяемость
инфраструктуры. Использование облака позволяет масштабировать сервисы по
мере роста нагрузки.

– **Экономия:** инфраструктура как код и автоматизация уменьшают
операционные расходы за счёт эффективности и предотвращения человеческих
ошибок.

– **Безопасность:** практики DevSecOps и раннее внедрение тестов безопасности помогают предотвращать уязвимости.

2. Что такое концепция Shift‑Left и почему она важна?

Концепция *Shift‑Left* предполагает перенос ключевых задач (проверки,
тестирования, обеспечения безопасности) на более ранние стадии
жизненного цикла разработки. Вместо того чтобы выявлять ошибки ближе к
релизу, DevOps призывает начинать тестирование, автоматизацию
развертываний и анализ безопасности с момента появления первых строк
кода. Это позволяет быстрее обнаруживать дефекты и дешевле их
исправлять, снижает риск глобальных проблем в конце проекта и
способствует качеству продукта】.

3. Что такое пост‑мортем‑митинги и зачем они нужны?

*Пост‑мортем* (англ. post‑mortem) — это разбор инцидента после его
устранения. На таких встречах команда анализирует причины отказа, шаги
по восстановлению и вырабатывает меры, которые помогут избежать подобных
инцидентов в будущем. Смысл в том, чтобы сделать процесс обучения на
ошибках прозрачным: нет поиска виновных, есть анализ системных причин и
выработка улучшений.

4. Что такое pair programming и какие у него преимущества?

*Парное программирование* — это метод разработки, при котором два
инженера работают за одним компьютером. Один выступает **водителем**
(driver) и печатает код, другой — **наблюдателем** (observer),
анализирует действия и предлагает улучшения. Периодически роли меняются.
Этот подход повышает качество кода, снижает количество ошибок и
улучшает обмен знаниями в команде.

5. Объясните эффект dogpile (cache stampede) и как его избежать.

*Dogpile effect* (или «каштановый шторм/штампед») возникает, когда
множество клиентов одновременно обращаются к кешу с истекшим ключом. Все
процессы начинают генерировать данные заново, создавая всплеск
нагрузки. Чтобы этого избежать:

1. **Semaphore Lock:** перед обновлением кеша процессы пытаются
установить блокировку; только один процесс генерирует новые данные,
остальные ждут результат.

2. **Cache Aside:** устанавливать случайные значения времени жизни, чтобы сроки истечения ключей различались.

3. **Warm cache:** заранее прогревать ключи в фоне.

6. Какие хуки Git срабатывают при push?

Git предоставляет серверные хуки для контроля входящих изменений:

– **pre‑receive:** выполняется на сервере до приёма пакета; можно
отклонить push, если не соблюдены условия (например, проверка линтеров).

– **update:** срабатывает для каждой обновляемой ветки и может использоваться для тонкой проверки прав или согласованности.

– **post‑receive:** выполняется после принятия изменений; удобно
использовать для отправки уведомлений, триггеров CI/CD или обновления
служебных данных.

7. Что такое канареечный релиз и как его реализовать?

*Канареечный релиз* — это стратегия постепенного развёртывания, при
которой новая версия приложения сначала выкатывается небольшой группе
пользователей. Если не обнаружено критических ошибок, трафик постепенно
увеличивается. Реализовать его можно так:

1. Разделить трафик через балансировщик (например, Ingress Controller в Kubernetes) на две версии — старую и новую.

2. Настроить маршруты так, чтобы, скажем, 5 % запросов шли на новую версию. Постепенно увеличивать долю до 100 %.

3. Мониторить метрики и логи, чтобы при возникновении ошибок быстро откатиться.

8. Сравните on‑premises и cloud решения для DevOps инфраструктуры.

**On‑premises** (собственные сервера) дают полный контроль над
инфраструктурой и могут быть выгодны при постоянной и предсказуемой
нагрузке. Однако требуют значительных капиталовложений и ресурсов на
поддержку.

**Облачные решения** предоставляют гибкость, масштабируемость и
возможность платить только за используемые ресурсы. Они освобождают
команду от задач по обслуживанию физического железа и позволяют быстро
реагировать на изменения нагрузки. Недостатком может быть зависимость от
поставщика и потенциально более высокая стоимость при длительной
круглосуточной нагрузк.

9. Как обеспечить минимальное время простоя при развёртывании высоконагруженного сайта?

Для сокращения простоя используют ряд практик:

– **Staging / тестовая среда:** сначала проверять сборку и релиз в окружении, максимально близком к продуктивному.

– **Blue‑Green Deployments:** одновременно поддерживать две
идентичные версии приложения и переключать трафик между ними; это
позволяет мгновенно откатиться и снизить риск.

– **Rolling обновления:** последовательно обновлять инстансы приложения, сохраняя доступность сервиса.

– **Canary Releases:** выкатывать обновление на небольшую часть пользователей.

– **Автоматические тесты:** включать интеграционные и нагрузочные тесты в CI/CD, чтобы снизить вероятность критических ошибок.

10. Как работает обратный прокси‑кеш (reverse proxy) и как он помогает масштабируемости?

Обратный прокси (Nginx, HAProxy, Varnish) располагается между
клиентами и приложением. Он принимает запросы, анализирует URL и
заголовки, может кешировать ответы и распределять трафик по множеству
бэкендов. Если запрашиваемый ресурс уже есть в кеше, прокси отдаёт его
без обращения к приложению, разгружая серверы. Правильно настроенный кеш
позволяет выдерживать всплески трафика и улучшает время отклика.

11. Что такое Infrastructure as Code (IaC) и почему это важно?

*Infrastructure as Code* — подход, при котором инфраструктура
(серверы, сети, балансировщики, базы данных) описывается в виде файлов
конфигурации. Вместо ручного создания ресурсов через веб‑консоль,
разработчик описывает желаемое состояние системы, а инструменты
(Terraform, CloudFormation, Pulumi) приводят инфраструктуру к этому
состоянию. IaC позволяет:

– Получить воспроизводимое, версионируемое окружение.

– Упростить масштабирование и миграции.

– Автоматизировать развёртывание, исключая человеческий фактор.

12. В чем разница между Continuous Integration, Continuous Delivery и Continuous Deployment?

Continuous Integration (CI) — процесс частой интеграции кода с
автоматическими тестами. Continuous Delivery (CD) добавляет
автоматизацию упаковки и делает артефакты готовыми к развёртыванию.
Continuous Deployment расширяет CD и включает автоматическое
развёртывание на прод без ручного вмешательства.

13. Опишите архитектуру Kubernetes.

Kubernetes состоит из control plane (API server, scheduler,
controller manager, etcd) и worker nodes (kubelet, kube-proxy, container
runtime). Control plane управляет состоянием кластера, nodes запускают
pods.

14. Что такое Helm и как он упрощает деплой приложений в Kubernetes?

Helm — менеджер пакетов для Kubernetes. Он объединяет манифесты в
charts и поддерживает параметры, позволяя быстро устанавливать и
обновлять приложения.

15. Что такое rolling update и rollback в Kubernetes?

Rolling update обновляет pods постепенно, сохраняя доступность.
Rollback откатывает deployment до предыдущей версии в случае ошибок.

16. Terraform и Ansible: в чем различия и когда что выбирать?

Terraform предназначен для создания и изменения инфраструктуры как
кода (идемпотентность). Ansible — для конфигурации и управления уже
созданными серверами. Их часто используют вместе.

17. Пример Jenkins pipeline для сборки и деплоя контейнеризированного приложения.

В Jenkins declarative pipeline вы описываете этапы: checkout, build, test, package и deploy:

groovy
pipeline {
agent any
stages {
stage('Checkout') {
steps { git 'https://github.com/user/repo.git' }
}
stage('Build') {
steps { sh 'docker build -t myapp:latest .' }
}
stage('Test') {
steps { sh 'docker run --rm myapp:latest pytest' }
}
stage('Push') {
steps { sh 'docker push myapp:latest' }
}
stage('Deploy') {
steps { sh './deploy.sh' }
}
}
}

18. Что такое GitOps и чем он отличается от традиционного CI/CD?

GitOps хранит состояние инфраструктуры в Git и использует агенты для
синхронизации, в отличие от обычного CI/CD, где сервер пушит изменения.
Это обеспечивает контроль версий и откат.

19. Как работают балансировщики нагрузки и какие алгоритмы распределения используются?

Балансировщик распределяет трафик между серверами, используя
алгоритмы round robin, least connections, IP hash и другие, для
обеспечения отказоустойчивости.

20. Как настроить мониторинг с Prometheus и Grafana?

Настройте Prometheus для сбора метрик с exporters и подключите его к
Grafana для визуализации; дополнительно используйте alertmanager для
уведомлений.

21. Как реализовать высокую доступность базы данных?

Используйте репликацию (master/slave или multi-master), кластеры и автоматический failover.

22. Что такое blue/green деплой и как его настроить?

Создайте две идентичные среды. Новую версию разворачивайте в green,
тестируйте, затем переключите трафик; при откате вернитесь к blue.

23. Для чего нужны Consul или etcd?

Это распределённые хранилища для service discovery, конфигураций и координации (leader election).

24. Как организовать централизованный логирование в микросервисной архитектуре?

Используйте стек ELK или EFK: собирайте логи через Beats/Fluentd, отправляйте их в Elasticsearch и анализируйте в Kibana.

25. Как работают секреты в Kubernetes и какие есть best practices по их защите?

Secrets хранят конфиденциальные данные в etcd. Best practices:
шифруйте etcd, используйте сторонние менеджеры (Vault), ограничивайте
доступ RBAC и регулярно обновляйте секреты.

26. Объясните паттерн «Circuit Breaker».

Circuit Breaker отключает вызовы к зависимому сервису при множестве
ошибок, предотвращая каскадные сбои; после таймаута проверяет его
доступность.

27. Что такое immutable infrastructure и чем она полезна?

Это практика, при которой серверы не изменяются после запуска; новые
версии разворачиваются на новых экземплярах, что исключает дрейф
конфигураций.

28. Что такое Chaos Engineering?

Ввод искусственных сбоев (отказ нод, задержки), чтобы протестировать устойчивость системы и найти слабые места.

29. Как обеспечить соответствие требованиям по безопасности и комплаенсу?

Применяйте DevSecOps: SAST/DAST, управление зависимостями, RBAC, аудит логов, использование сертификатов (SOC2, ISO).

30. Что такое SLO, SLI и error budget?

SLI — показатель качества, SLO — цель по этому показателю, error
budget — допустимый объём ошибок. Они помогают балансировать между
стабильностью и скоростью развития.

31. В чем преимущества и сложности микросервисной архитектуры для DevOps?

Плюсы: независимость компонентов и масштабируемость. Минусы:
усложнённое управление конфигурациями, мониторингом, сетевыми
взаимодействиями.

32. Опишите модель OSI и её роль в диагностике сетевых проблем.

Модель OSI разделяет сеть на 7 уровней (физический, канальный,
сетевой, транспортный, сеансовый, представления, прикладной), что
помогает системно искать и устранять проблемы.

33. Что такое service mesh и приведите примеры.

Service mesh — инфраструктурный слой для управления межсервисным
взаимодействием с помощью sidecar‑proxy; примеры: Istio, Linkerd.

34. Как правильно использовать rebase и merge в Git?

Rebase делает историю линейной и подходит для обновления
feature‑ветки, merge сохраняет историю и используется для объединения
веток. Выбирайте rebase для локальных веток, merge — для публичных.

35. Как работают механизмы автоскейлинга (AWS ASG, Kubernetes HPA)?

ASG масштабирует EC2‑инстансы на основе метрик, HPA — количество
pod’ов. Оба используют пороги и policies для автоматического
масштабирования.

36. Расскажите о HashiCorp Vault и как он управляет секретами.

Vault хранит, шифрует и выдаёт секреты, поддерживает динамическую генерацию и ротацию, а также интеграцию с аутентификацией.

37. Что такое disaster recovery и как разработать DR‑план?

DR‑план описывает, как восстановить сервис после катастрофы:
резервное копирование, репликация, failover, тестирование сценариев.

38. Какие уровни мониторинга вы знаете?

Инфраструктурный (CPU, RAM), приложенческий (ошибки, задержки), бизнес‑метрики (конверсии).

39. Что такое SonarQube и как он помогает в DevOps?

Платформа для статического анализа кода; помогает выявлять баги и уязвимости, измерять покрытие тестами.

40. Как вы сканируете контейнеры на наличие уязвимостей?

Используйте инструменты Trivy, Snyk, Clair, интегрируйте их в CI/CD для проверки образов на CVE.

41. Что такое KEDA и чем он отличается от HPA?

KEDA масштабирует pod’ы на основе событий (сообщений), может уменьшать до нуля; HPA — на основе нагрузки CPU/memory.

42. Поясните назначение eBPF и его использование в наблюдаемости.

eBPF позволяет выполнять программы в ядре Linux для мониторинга и
сетевой фильтрации; используется для трассировки syscalls, сетевого
трафика.

43. Что такое runbook и зачем он нужен?

Runbook содержит пошаговые инструкции для реагирования на инциденты, помогает дежурным быстро устранять проблемы.

44. Чем отличается A/B тестирование от канареечного релиза?

A/B тестирование сравнивает два варианта по метрикам, канареечный
релиз — плавно выкатывает новую версию на часть пользователей для
проверки стабильности.

45. Оркестрация контейнеров vs оркестрация сервисов — в чем разница?

Контейнерная оркестрация управляет контейнерами (Kubernetes),
сервисная — управляет более высокоуровневыми абстракциями (Swarm,
Nomad).

46. Что такое идемпотентность и зачем она нужна в конфигурационном управлении?

Идемпотентные операции дают одинаковый результат при повторном запуске, что позволяет безопасно применять playbooks.

47. Объясните разницу между push‑ и pull‑моделями развёртывания.

Push: CI/CD сервер отправляет изменения на серверы. Pull (GitOps): агенты считывают изменения из репозитория и применяют их.

48. Что такое прогрессивный delivery (progressive delivery)?

Совокупность стратегий постепенного развертывания (canary, blue/green, A/B), снижающих риски релиза.

49. Как выполнить миграцию базы данных без простоя?

Нужно поддерживать совместимость старой и новой схем: добавлять поля,
потом мигрировать данные и только затем удалять старые поля.
Используйте инструменты Liquibase и gh-ost.

50. Как спроектировать CI/CD, включающий тесты, сканы безопасности и утверждения?

Разбейте пайплайн на этапы: build, test, security scan, manual approval, deploy. Используйте SonarQube, Trivy, Snyk.

51. Приведите пример Dockerfile с multi‑stage build.

Dockerfile
# Stage 1
FROM golang:1.20-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
# Stage 2
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
ENTRYPOINT ["./myapp"]

52. Напишите манифест Kubernetes Deployment с переменными из ConfigMap и Secret.

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
spec:
replicas: 3
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
spec:
containers:
- name: myapp
image: myapp:latest
env:
- name: APP_ENV
valueFrom:
configMapKeyRef:
name: myapp-config
key: env
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: myapp-secret
key: password

53. Напишите простой declarative pipeline для Jenkins.

groovy
pipeline {
agent any
stages {
stage('Build') { steps { sh 'make build' } }
stage('Test') { steps { sh 'make test' } }
stage('Deploy') { steps { sh './deploy.sh' } }
}
}

54. Напишите Terraform код для создания EC2 и security group.

hcl
provider "aws" {
region = "us-east-1"
}
resource "aws_security_group" "web_sg" {
name = "web_sg"
description = "Allow HTTP"
ingress {
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t3.micro"
security_groups = [aws_security_group.web_sg.name]
tags = { Name = "webserver" }
}

55. Напишите Ansible playbook для установки Nginx.

yaml
- hosts: web
become: yes
tasks:
- name: Install Nginx
apt:
name: nginx
state: present
update_cache: yes
- name: Start Nginx
service:
name: nginx
state: started
enabled: true

56. Как отладить утечку памяти в микросервисе в контейнере?

Используйте профилировщики (pprof, memory_profiler) для анализа
потребления памяти, снимайте heap dumps и анализируйте их (Gperftools).
Ограничьте память контейнера, чтобы выявить утечки.

57. Опишите event‑driven архитектуру и использование брокеров сообщений (Kafka, RabbitMQ).

Компоненты обмениваются событиями через брокеры; Kafka хранит поток
событий, RabbitMQ поддерживает разные схемы маршрутизации. Такое
взаимодействие снижает связанность и повышает масштабируемость.

58. Что такое network policies в Kubernetes?

NetworkPolicy задаёт правила межподового трафика, позволяя ограничивать входящие/исходящие соединения по labels и namespace.

59. Как реализовать blue/green деплой в AWS Elastic Beanstalk?

Создайте две среды (blue и green), разверните новую версию,
протестируйте её, переключите DNS или CNAME на green, при ошибке
откатитесь.

60. Что такое stateful и stateless сервисы? Как Kubernetes работает с ними?

Stateless не хранят состояние — их легко масштабировать; stateful
сохраняют данные, для них используется StatefulSet и persistent volumes.

61. Как оптимизировать время запуска Docker контейнеров?

Используйте лёгкие базовые образы, сокращайте слои, применяйте multi-stage, удаляйте кеши и лишние зависимости.

62. Чем отличаются config map и secret в Kubernetes?

ConfigMap хранит неконфиденциальные данные, Secret — чувствительные (шифруются).

63. Что такое Function as a Service (FaaS) и его плюсы?

FaaS запускает функции по событиям без управления серверами; платите за время выполнения, быстро масштабируется.

64. Сравните monorepo и multirepo. Какие Git практики подходят для каждого?

Monorepo — один репозиторий для всех сервисов, multirepo — отдельный
для каждого. Для monorepo подойдёт trunk-based development, для
multirepo — GitFlow.

65. Как управлять патчами и обновлениями в большой инфраструктуре?

Используйте системы управления конфигурациями (Ansible, Puppet),
автоматическое тестирование и развёртывание патчей в staging перед
продом.

66. Как выполнить обновление схемы базы данных без простоя?

Добавляйте новые поля, мигрируйте данные, затем удаляйте старые поля. Используйте инструменты онлайн-миграции.

67. Как разработать стратегию нагрузочного тестирования?

Определите цели и сценарии, используйте инструменты JMeter, Locust,
Gradual Ramp-Up, анализируйте метрики и исправляйте узкие места.

68. Как реализовать отказоустойчивость между регионами?

Используйте репликацию данных, геораспределённый DNS, автоматический failover и настройку кросс-регионального маршрутизации.

69. Что такое serverless архитектура и влияние на DevOps?

Serverless переносит ответственность за инфраструктуру на провайдера, DevOps фокусируются на CI/CD и мониторинге функций.

70. Почему важен continuous profiling и как его реализовать?

Позволяет отслеживать использование ресурсов в реальном времени и находить узкие места; реализуется с помощью Parca, Pyroscope.

71. Как feature flags помогают в прогрессивном развёртывании?

Позволяют включать функции для части пользователей, постепенно расширяя охват, и быстро отключать при проблемах.

72. Что такое Spinnaker?

Платформа continuous delivery для мультиоблачных развертываний, поддерживает канареечные и blue/green релизы.

73. В чем отличие между DevOps и SRE?

DevOps — культура сотрудничества, SRE — практическая реализация обеспечения надёжности, основанная на измеримых целях (SLO).

74. Что такое containerd и чем он отличается от Docker Engine?

containerd — низкоуровневый runtime для контейнеров, Docker Engine
включает его и предоставляет больше возможностей (build). Kubernetes
использует containerd напрямую.

75. Что такое логический и метрик‑основанный автоскейлинг?

Metric‑based масштабирует по показателям CPU/RAM, event‑based (логический) — по событиям (например, сообщениям в очереди).

76. Как управлять и ротировать секреты в Kubernetes с cert-manager?

cert-manager автоматизирует выпуск TLS сертификатов, а для ротации секретов используйте Vault, Secrets Store CSI.

77. Что такое динамическая конфигурация?

Изменение настроек приложения без перезапуска, используя централизованные конфиг‑серверы (Consul, Spring Cloud Config).

78. Чем отличается горизонтальное и вертикальное масштабирование?

Горизонтальное — добавление экземпляров, вертикальное — увеличение ресурсов одного; первое улучшает отказоустойчивость.

79. Что такое CAP‑теорема?

CAP утверждает, что система не может одновременно обеспечивать
консистентность, доступность и устойчивость к разделениям сети; можно
выбрать только два.

80. Как внедрить ChatOps в процесс деплоя?

Интегрируйте ботов (Hubot) в чат (Slack), чтобы запускать команды деплоя и видеть результаты прямо в чате.

81. Что такое drift окружения и как его предотвратить?

Дрейф — несоответствие реальной инфраструктуры описанию IaC.
Предотвращается регулярным применением IaC и мониторингом изменений.

82. Сравните blue/green, canary и rolling обновления.

Blue/green — две среды, canary — постепенное увеличение трафика,
rolling — постепенная замена pod’ов; у каждого свой сценарий применения.

83. Что такое shift‑right и как оно связано с наблюдаемостью?

Shift‑right — акцент на тестирование и наблюдаемость в продакшене, использование метрик и логов для улучшения качества.

84. Как работать с пулами соединений к базе в микросервисах?

Настройте размер пула, избегайте его исчерпания, используйте инструмент мониторинга (pgbouncer).

85. Что такое Git LFS и когда его использовать?

Git LFS хранит большие файлы вне репозитория; используйте его для моделей, медиа, чтобы избежать роста репозитория.

86. Как создать самоисцеляющуюся инфраструктуру?

Настройте автоматику перезапуска (k8s controller), мониторинг, и используйте инфраструктуру как код для восстановления ресурсов.

87. Что такое Policy as Code? Приведите пример OPA.

Policy as Code описывает политики в коде; OPA использует язык Rego
для написания правил, например, запрет контейнеров с root пользователем.

88. Как обеспечить безопасность контейнеров (seccomp, rootless)?

Ограничивайте системные вызовы seccomp, используйте rootless режимы, AppArmor/SELinux и капабелити.

89. Как смоделировать продукционную нагрузку для тестирования?

Используйте инструменты (JMeter, Locust), записывайте реальные запросы, создавайте сценарии и постепенно увеличивайте нагрузку.

90. Что такое SLA и как его измерять?

SLA — соглашение о доступности сервиса; измеряется uptime, время восстановления, время отклика.

91. Чем отличаются Liveness и Readiness probes в Kubernetes?

Liveness проверяет, живо ли приложение; Readiness — готово ли оно
принимать трафик. Пока readiness не проходит, pod не добавляется в
сервис.

92. Как сканировать репозитории на наличие секретов?

Используйте Gitleaks, TruffleHog, GitGuardian в CI/CD для поиска ключей и паролей.

93. Что такое сайдкар контейнер и примеры его использования?

Сайдкар — дополнительный контейнер в pod: например, Fluentd для логирования или Envoy для service mesh.

94. Приведите пример использования hook’ов в Helm.

Hooks выполняют действия до/после установки. Например, pre-install Job для миграции БД.

95. Что такое GitHub Actions и как они соотносятся с Jenkins?

GitHub Actions — встроенный CI/CD в GitHub, позволяет запускать
workflows по событиям; Jenkins требует самостоятельного хостинга и даёт
больше гибкости.

96. Как создавать multi-arch контейнеры?

Используйте Docker Buildx и QEMU для сборки разных архитектур, затем объедините их манифестом (docker manifest).

97. Объясните различие между наблюдаемостью, мониторингом и логированием.

Мониторинг собирает метрики, логирование хранит события,
наблюдаемость объединяет метрики, логи и трассировки для понимания
системы.

98. Как интегрировать DORA метрики в DevOps дашборд?

Собирайте данные о частоте релизов, времени восстановления, времени
изменения и проценте неудачных релизов из CI/CD и систем мониторинга;
отображайте в Grafana.

99. Какие сложности возникают при работе с мультикластерными Kubernetes, и как их решать?

Проблемы: сетевое соединение, синхронизация конфигураций,
безопасность. Решения: federation, ArgoCD/Rancher, сервис‑mesh,
глобальный DNS.

100. Когда лучше использовать CMD, а когда ENTRYPOINT в Docker?

Эти два параметра могут запутать, но их применение зависит от того, как вы хотите запустить контейнер.

1️⃣ ENTRYPOINT — основная команда контейнера

Если вам нужно задать команду, которая всегда будет выполняться при запуске контейнера, используйте ENTRYPOINT.

Он задает команду, которая является обязательной для запуска
контейнера, и её нельзя переопределить (без указания дополнительных
аргументов).

Пример:

ENTRYPOINT [“python”, “app.py”]

В этом случае контейнер всегда будет запускать python app.py

2️⃣ CMD — параметры по умолчанию

CMD — это параметры, которые могут быть переданы командной строкой при запуске контейнера.

Если CMD используется в Dockerfile, но команда не была указана при
запуске контейнера, то используется команда из CMD. Он также может быть
переопределен во время запуска.

Пример:

CMD [“python”, “app.py”]

Но если вы хотите передать другие параметры, например:

docker run my_image python other_app.py

То CMD будет переопределен.

3️⃣ Комбинированное использование

Вы также можете использовать оба параметра вместе, когда хотите
задать основную команду через ENTRYPOINT, а CMD использовать для
указания параметров по умолчанию.

Пример:

ENTRYPOINT [“python”]

CMD [“app.py”]

Используйте ENTRYPOINT, если хотите, чтобы контейнер всегда выполнял одну конкретную команду.

Используйте CMD, если хотите задать параметры по умолчанию, которые можно переопределить при запуске контейнера.

Используйте оба вместе, чтобы задать команду с возможностью замены параметров.

Обсудить эту статью можно в Телеграм канале: https://t.me/linautonet