← Назад к вопросам

Как запускал новые коды в Kubernetes?

2.3 Middle🔥 201 комментариев
#DevOps и инфраструктура

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Как запускал новые коды в Kubernetes?

В современной разработке Kubernetes (K8s) стал стандартом для оркестрации контейнеризированных приложений. За 10+ лет работы я применял различные стратегии развертывания, и вот мой опыт.

Подготовка приложения

Первый этап — подготовить приложение к запуску в Kubernetes:

  1. Dockerization — создание Dockerfile для Node.js приложения
  2. Health checks — реализация livenessProbe и readinessProbe для отслеживания состояния контейнера
  3. Graceful shutdown — корректная обработка SIGTERM для завершения текущих запросов

Kubernetes Manifest файлы

Создаю YAML-манифесты для определения Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nodejs-app
  namespace: production
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nodejs-app
  template:
    metadata:
      labels:
        app: nodejs-app
    spec:
      containers:
      - name: nodejs-app
        image: myregistry.azurecr.io/nodejs-app:v1.2.3
        ports:
        - containerPort: 3000
        env:
        - name: NODE_ENV
          value: production
        - name: DATABASE_URL
          valueFrom:
            secretKeyRef:
              name: db-secret
              key: url
        livenessProbe:
          httpGet:
            path: /health
            port: 3000
          initialDelaySeconds: 10
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /ready
            port: 3000
          initialDelaySeconds: 5
          periodSeconds: 5
        resources:
          requests:
            memory: 256Mi
            cpu: 100m
          limits:
            memory: 512Mi
            cpu: 500m

CI/CD Pipeline

Обычно использую GitHub Actions или GitLab CI для автоматизации развертывания. Workflow включает сборку Docker образа, push в registry и обновление Deployment в кластере.

Стратегии развертывания

  • Rolling Update (по умолчанию) — поэтапная замена старых подов на новые, обеспечивает zero-downtime
  • Blue-Green Deployment — запуск полной копии приложения, переключение трафика после проверки
  • Canary Release — постепенный запуск новой версии на небольшой части трафика для раннего обнаружения проблем

Мониторинг и откат

Использую Prometheus + Grafana для метрик, ELK Stack для логирования. Быстрый откат в случае проблем: kubectl rollout undo deployment/nodejs-app

Best Practices

  • Секреты и конфигурация — использую ConfigMap и Secrets, не хардкодишь в образе
  • Версионирование образов — semantic versioning для контроля версий
  • Resource requests/limits — правильное выделение ресурсов для масштабирования
  • Service Discovery — использование DNS имен Kubernetes для коммуникации между сервисами

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

Как запускал новые коды в Kubernetes? | PrepBro