Ответ
Для деплоя типичного Node.js приложения (например, веб-сервера) в Kubernetes создается набор манифестов. Вот основные объекты:
-
Deployment — управляет репликами контейнера с приложением. Важно настроить корректные
livenessиreadinessпробы.apiVersion: apps/v1 kind: Deployment metadata: name: nodejs-app spec: replicas: 2 selector: matchLabels: app: nodejs-api template: metadata: labels: app: nodejs-api spec: containers: - name: api image: myregistry/node-app:latest ports: - containerPort: 3000 env: - name: NODE_ENV value: "production" - name: DB_HOST valueFrom: secretKeyRef: name: app-secrets key: database-host livenessProbe: httpGet: path: /health port: 3000 initialDelaySeconds: 30 resources: requests: memory: "256Mi" cpu: "100m" -
Service — предоставляет доступ к подам приложения. Для внешнего веб-доступа часто используется тип
LoadBalancerили связкаClusterIP+Ingress.apiVersion: v1 kind: Service metadata: name: nodejs-service spec: selector: app: nodejs-api ports: - port: 80 targetPort: 3000 type: LoadBalancer -
ConfigMap & Secret — для хранения конфигурации (например, портов, флагов) и секретов (ключи API, строки подключения к БД).
-
HorizontalPodAutoscaler (HPA) — для автоматического масштабирования подов на основе нагрузки CPU, характерной для Node.js.
-
Ingress (опционально) — для маршрутизации трафика, управления SSL/TLS и виртуальными хостами, если сервисов несколько.