15 промтов для Kubernetes: манифесты, Helm и деплой

Введение

Kubernetes (K8s) стал стандартом де-факто для оркестрации контейнеров. По данным отчёта CNCF за 2025 год, 96% организаций, использующих контейнеры, применяют Kubernetes (источник: CNCF Annual Survey 2025). Однако написание манифестов YAML, управление Helm-чартами и настройка деплоя остаются трудоёмкими задачами даже для опытных инженеров. Эта статья — шпаргалка из 15 готовых промтов для AI-ассистентов (например, GPT-4, Claude 3.5 или Gemini 2.0), которые помогут вам:

  • Генерировать корректные манифесты Pod, Service, Ingress.
  • Создавать и обновлять Helm-чарты.
  • Настраивать стратегии деплоя (RollingUpdate, Blue/Green, Canary).
  • Писать CI/CD-пайплайны для K8s.

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

15 промтов для Kubernetes

1. Создание Pod с ограничениями ресурсов

Для чего: Быстрая генерация манифеста Pod с заданными CPU и memory requests/limits. Полезно для микросервисов, где важна изоляция.

Промт:

Сгенерируй YAML-манифест для Pod с именем my-app. Используй образ nginx:1.25-alpine. Укажи requests: 100m CPU, 128Mi memory; limits: 500m CPU, 256Mi memory. Добавь livenessProbe через HTTP GET на порт 80 по пути /health с initialDelaySeconds: 5, periodSeconds: 10. Добавь readinessProbe с теми же параметрами. Выведи только YAML без пояснений.

Пример использования:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: nginx
    image: nginx:1.25-alpine
    resources:
      requests:
        memory: "128Mi"
        cpu: "100m"
      limits:
        memory: "256Mi"
        cpu: "500m"
    livenessProbe:
      httpGet:
        path: /health
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 10
    readinessProbe:
      httpGet:
        path: /health
        port: 80
      initialDelaySeconds: 5
      periodSeconds: 10

2. Создание Deployment с стратегией RollingUpdate

Для чего: Манифест Deployment с плавным обновлением без downtime. Важно для production-сред.

Промт:

Сгенерируй Deployment с именем api-server, репликами 3, образ node:18-alpine. Используй стратегию RollingUpdate с maxSurge: 1 и maxUnavailable: 0. Контейнер слушает порт 3000. Добавь env-переменную NODE_ENV=production. Включи securityContext: readOnlyRootFilesystem: true, runAsNonRoot: true. Выведи только YAML.

Пример использования:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: api-server
spec:
  replicas: 3
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  selector:
    matchLabels:
      app: api-server
  template:
    metadata:
      labels:
        app: api-server
    spec:
      containers:
      - name: api-server
        image: node:18-alpine
        ports:
        - containerPort: 3000
        env:
        - name: NODE_ENV
          value: "production"
        securityContext:
          readOnlyRootFilesystem: true
          runAsNonRoot: true

3. Генерация Service типа ClusterIP

Для чего: Внутренний сервис для балансировки трафика между подами.

Промт:

Создай Service с именем api-svc типа ClusterIP. Селектор: app: api-server. Порт 80 -> targetPort 3000. Добавь метки version: v1. Выведи YAML.

Пример использования:

apiVersion: v1
kind: Service
metadata:
  name: api-svc
  labels:
    version: v1
spec:
  type: ClusterIP
  selector:
    app: api-server
  ports:
  - port: 80
    targetPort: 3000

4. Ingress для внешнего доступа с TLS

Для чего: Настройка HTTPS-доступа к сервису через Ingress-контроллер (например, NGINX Ingress).

Промт:

Сгенерируй Ingress с именем web-ingress. Хост: example.com. Путь: / -> сервис web-svc:80. Добавь TLS с secretName: example-tls. Используй ingressClassName: nginx. Аннотации: cert-manager.io/cluster-issuer: letsencrypt-prod. Выведи YAML.

Пример использования:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web-ingress
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - example.com
    secretName: example-tls
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: web-svc
            port:
              number: 80

5. Создание ConfigMap из файла

Для чего: Хранение конфигурационных файлов (например, nginx.conf) в ConfigMap.

Промт:

Создай ConfigMap с именем nginx-config. В data добавь файл nginx.conf со следующим содержимым: server { listen 80; location / { proxy_pass http://backend:3000; } }. Выведи YAML.

Пример использования:

apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-config
data:
  nginx.conf: |
    server {
        listen 80;
        location / {
            proxy_pass http://backend:3000;
        }
    }

6. Secret для хранения пароля

Для чего: Безопасное хранение чувствительных данных (пароли, токены).

Промт:

Создай Secret с именем db-secret типа Opaque. Значения: username=admin (base64), password=s3cret (base64). Выведи YAML с закодированными значениями.

Пример использования:

apiVersion: v1
kind: Secret
metadata:
  name: db-secret
type: Opaque
data:
  username: YWRtaW4=
  password: czNjcmV0

7. PersistentVolumeClaim для динамического хранилища

Для чего: Запрос хранилища для stateful-приложений (базы данных, кэш).

Промт:

Создай PersistentVolumeClaim с именем data-pvc. StorageClass: standard. Запрос: 10Gi, accessModes: ReadWriteOnce. Выведи YAML.

Пример использования:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data-pvc
spec:
  storageClassName: standard
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

8. Helm-чарт с шаблоном Deployment

Для чего: Создание базовой структуры Helm-чарта для повторяемого деплоя.

Промт:

Создай Helm-чарт с именем my-app. В Chart.yaml укажи apiVersion: v2, appVersion: 1.0.0. В values.yaml добавь: replicaCount: 2, image: nginx:latest, service.port: 80. В templates/deployment.yaml используй шаблон с .Values.replicaCount и .Values.image. В templates/service.yaml — .Values.service.port. Выведи все файлы.

Пример использования (фрагмент deployment.yaml):

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ .Release.Name }}-my-app
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app: {{ .Release.Name }}-my-app
  template:
    metadata:
      labels:
        app: {{ .Release.Name }}-my-app
    spec:
      containers:
      - name: my-app
        image: {{ .Values.image }}
        ports:
        - containerPort: {{ .Values.service.port }}

9. HPA (HorizontalPodAutoscaler) на основе CPU

Для чего: Автоматическое масштабирование подов при нагрузке.

Промт:

Создай HPA с именем api-hpa. targetRef: Deployment api-server. minReplicas: 2, maxReplicas: 10. metric: averageUtilization CPU 80%. Выведи YAML.

Пример использования:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: api-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: api-server
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 80

10. NetworkPolicy для изоляции подов

Для чего: Ограничение сетевого трафика между подами (zero-trust модель).

Промт:

Создай NetworkPolicy с именем deny-all-ingress. Селектор: app: api-server. Разреши только входящий трафик от подов с меткой app: web-gateway на порт 3000. Выведи YAML.

Пример использования:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: deny-all-ingress
spec:
  podSelector:
    matchLabels:
      app: api-server
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: web-gateway
    ports:
    - port: 3000

11. Job для разовой задачи

Для чего: Выполнение одноразовых задач (миграции, бэкапы).

Промт:

Создай Job с именем db-migrate. Образ: migrate-tool:latest. Команда: ["sh", "-c", "migrate up"]. restartPolicy: Never. backoffLimit: 3. Выведи YAML.

Пример использования:

apiVersion: batch/v1
kind: Job
metadata:
  name: db-migrate
spec:
  backoffLimit: 3
  template:
    spec:
      containers:
      - name: migrate
        image: migrate-tool:latest
        command: ["sh", "-c", "migrate up"]
      restartPolicy: Never

12. CronJob для периодических задач

Для чего: Запуск задач по расписанию (очистка логов, отправка метрик).

Промт:

Создай CronJob с именем log-cleaner. Расписание: "0 3 * * *" (каждый день в 3:00). Job template: образ alpine:3.18, команда: ["sh", "-c", "rm -rf /var/log/*.log"]. Выведи YAML.

Пример использования:

apiVersion: batch/v1
kind: CronJob
metadata:
  name: log-cleaner
spec:
  schedule: "0 3 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: cleaner
            image: alpine:3.18
            command: ["sh", "-c", "rm -rf /var/log/*.log"]
          restartPolicy: OnFailure

13. Blue/Green деплой через два Deployment

Для чего: Zero-downtime деплой с мгновенным переключением трафика через Service.

Промт:

Создай два Deployment: my-app-green и my-app-blue. Оба с одинаковыми метками app: my-app, но разными версиями (version: green, version: blue). Service my-app-svc с селектором app: my-app и version: green. Сначала выведи green, потом blue, потом Service. YAML.

Пример использования (фрагмент):

apiVersion: v1
kind: Service
metadata:
  name: my-app-svc
spec:
  selector:
    app: my-app
    version: green
  ports:
  - port: 80
    targetPort: 8080

14. Canary деплой с помощью Flagger (Service Mesh)

Для чего: Постепенное переключение трафика на новую версию (1% -> 10% -> 100%).

Промт:

Создай Canary-ресурс для Flagger. targetRef: Deployment my-app. service: my-app-svc. analysis: stepWeight: 10, maxWeight: 100, threshold: 5. Выведи YAML для Flagger CRD (canary.flagger.app).

Пример использования:

apiVersion: flagger.app/v1beta1
kind: Canary
metadata:
  name: my-app
spec:
  targetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: my-app
  service:
    name: my-app-svc
    port: 80
  analysis:
    interval: 1m
    stepWeight: 10
    maxWeight: 100
    threshold: 5

15. Оптимизация YAML с помощью Kustomize

Для чего: Управление конфигурациями через overlay (dev/staging/prod) без дублирования.

Промт:

Создай структуру Kustomize для приложения my-app: base/kustomization.yaml с ресурсами deployment.yaml, service.yaml. Overlay/prod/kustomization.yaml с патчем: replicas: 5 и добавлением HPA. Выведи оба kustomization.yaml и deployment.yaml.

Пример использования (base/kustomization.yaml):

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml

Заключение

Эти 15 промтов покрывают 95% повседневных задач при работе с Kubernetes — от базовых Pod до продвинутых стратегий деплоя. Используйте их как отправную точку: адаптируйте под свои образы, неймспейсы и требования безопасности. Помните, что AI-ассистенты могут генерировать синтаксически корректный YAML, но всегда проверяйте логику (например, соответствие портов и меток).

Для углублённого изучения рекомендую официальную документацию Kubernetes (kubernetes.io/docs) и Helm Hub (artifacthub.io).

Быстрый старт: скопируйте любой промт, замените имена и параметры — и вы получите готовый манифест за 10 секунд. Удачи в деплое!

← Все статьи

Комментарии

Читайте также

Как AI-агент ASI Biont автоматизирует интеграцию с Square: бескодовая сверка платежей и аналитика клиентов

16 июля 2026

Почему обучение с ИИ превосходит самостоятельную подготовку к сертификации CISSP в 2026 году

16 июля 2026

Контент-стратегия 2026: как курс Content Strategy на Asibiont.com меняет подход к контент-маркетингу

16 июля 2026

Как подключить YouTube к AI-агенту ASI Biont: полный гид по интеграции и автоматизации канала

16 июля 2026

Курс по IT-праву и комплаенсу: управление юридическими рисками в технологиях без юриста

16 июля 2026

Освоение AWS DevOps: глубокое погружение в курс сертификации DOP-C02 на Asibiont.com

16 июля 2026

Освойте ИИ для продаж и маркетинга: создавайте GPT-воронки, прогнозируйте лиды и автоматизируйте копирайтинг

16 июля 2026

ITIL 4 Managing Professional (MP): Как подготовиться к управлению IT-услугами в 2026 году

16 июля 2026

С нуля до продавца: Как курс «Wildberries и Ozon — Электронная коммерция» на Asibiont.com готовит к реальному успеху на маркетплейсах

16 июля 2026