Как настраивать Kubernetes для деплоя микросервисов
Что проверяют
От QA не ждут, что вы с нуля поднимете продовый кластер. Проверяют, понимаете ли вы, как сервис попадает на тестовый стенд, и сможете ли сами разобраться, почему он не поднялся. Следом часто спрашивают, где вы смотрите логи упавшего пода.
Как отвечать
Назовите минимальный набор объектов и зачем каждый нужен тестировщику:
- Deployment: число реплик и образ. Тег конкретный, по коммиту или версии, а не
latest, иначе непонятно, что именно вы тестируете; - Service и Ingress: стабильный адрес внутри кластера и вход снаружи. Для отладки хватает
kubectl port-forward svc/orders 8080:80; - ConfigMap и Secret: настройки окружения отдельно от образа. Secret хранится в base64, это кодирование, а не шифрование;
- probes:
readinessProbeрешает, пускать ли трафик на под,livenessProbeперезапускает зависший контейнер,startupProbeдаёт время медленному старту; - requests и limits: без них сервисы на стенде отнимают друг у друга ресурсы, а превышение лимита памяти заканчивается
OOMKilled.
Шаблоны обычно держат в Helm-чарте, различия стендов в файлах вроде values-stage.yaml, раскатка идёт из CI через helm upgrade --install или через Argo CD. Для тестирования удобен namespace на ветку: у каждого стенда своя база и данные, прогоны не мешают друг другу.
Диагностика: kubectl get pods, kubectl describe pod (события внизу покажут ImagePullBackOff или проваленную пробу), kubectl logs --previous для контейнера в CrashLoopBackOff, kubectl rollout status и kubectl rollout undo. Локально всё это пробуют в kind, k3d или minikube.
И скажите, что проверяет сам QA: что rolling update (по умолчанию maxSurge и maxUnavailable по 25%) проходит без потерянных запросов и что откат возвращает рабочую версию.
Где спотыкаются
Отвечают «это зона DevOps». Такой ответ снимает кандидата с вакансий, где стенды поднимают сами тестировщики.
Путают readiness и liveness. Проверка базы в liveness при медленной базе заставляет кластер перезапускать здоровые поды.
Не умеют читать события пода и сразу идут за помощью. Большинство причин падения видно в describe за минуту.