Кто и как описывает процесс деплоя (развертывания)?

«Кто и как описывает процесс деплоя (развертывания)?» — вопрос из категории Архитектура и DevOps-практики, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Описание деплоя — это совместная работа, зафиксированная в коде. Разработчики описывают что разворачивать (образ приложения, переменные среды), а DevOps/Platform-инженеры описывают как и куда (инфраструктуру, политики безопасности). Всё хранится в Git.

Конкретные артефакты и кто их пишет:

  1. Манифесты Kubernetes (k8s/) — пишет разработчик, владелец сервиса.

    # k8s/deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: api-service
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: api
      template:
        spec:
          containers:
          - name: api
            image: my-registry/api:latest # Образ, который собрал CI
            env:
            - name: DB_URL
              valueFrom:
                secretKeyRef:
                  name: app-secrets
                  key: database-url
  2. Инфраструктура как код (Terraform в infra/) — пишет Platform-команда.

    # infra/main.tf
    resource "aws_eks_cluster" "main" {
      name     = "production-cluster"
      role_arn = aws_iam_role.cluster.arn
      vpc_config {
        subnet_ids = var.private_subnet_ids
      }
    }
  3. Определение пайплайна CI/CD (.gitlab-ci.yml, .github/workflows/) — шаблон создаёт Platform-команда, конкретные шаги (например, npm run build) добавляет разработчик.

  4. Конфигурация Helm Chart (Chart.yaml, values.yaml) — часто совместное творчество. Platform-команда создаёт базовый чарт с настройками безопасности (SecurityContext, ресурсные лимиты), а разработчик добавляет в values.yaml специфичные для сервиса параметры.

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