10 промтов для Kubernetes: манифесты, Helm, деплой — шпаргалка для инженера
Kubernetes (или просто k8s) стал стандартом для оркестрации контейнеров. По данным CNCF Annual Survey 2025, 96% организаций, использующих контейнеры, применяют Kubernetes в production — это на 5% больше, чем годом ранее. Но даже опытные инженеры тратят часы на написание манифестов, отладку Helm-чартов и настройку деплоя. Я собрал 10 промтов, которые помогут автоматизировать рутину: от создания Pod до кастомизации Helm. Каждый промт можно скопировать, вставить в ChatGPT или аналогичную LLM и получить готовый YAML-файл. В статье — только проверенные подходы, основанные на официальной документации Kubernetes (kubernetes.io/docs) и Helm (helm.sh/docs).
Введение: зачем промты для Kubernetes?
Представьте: вам нужно развернуть микросервис с ConfigMap, Secret, HPA и Ingress. Ручное написание 200 строк YAML — это 30 минут работы и гарантированная опечатка в indent или apiVersion. Промты (от англ. prompt — подсказка) — это инструкции для LLM, которые генерируют корректный код. Они экономят время и снижают число ошибок. По опросу Stack Overflow 2025, 44% разработчиков используют AI-ассистентов для генерации конфигураций, и Kubernetes — одна из топ-3 категорий. В этой подборке — промты для 10 типовых задач, от простых Pod до сложных Helm-чартов с зависимостями.
1. Создание Pod с ресурсами и health check
Задача: Сгенерировать минимальный Pod с nginx, запросами CPU/RAM и liveness probe.
Промт:
Создай YAML-манифест для Pod в Kubernetes, который запускает контейнер nginx:1.25. Укажи: requests: cpu=100m, memory=128Mi; limits: cpu=200m, memory=256Mi; livenessProbe: HTTP GET на порт 80, путь /healthz, initialDelaySeconds=5, periodSeconds=10. Добавь label app: my-nginx.
Пример использования:
Скопируйте промт в чат с LLM. Вы получите YAML вроде:
apiVersion: v1
kind: Pod
metadata:
name: my-nginx
labels:
app: my-nginx
spec:
containers:
- name: nginx
image: nginx:1.25
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "200m"
memory: "256Mi"
livenessProbe:
httpGet:
path: /healthz
port: 80
initialDelaySeconds: 5
periodSeconds: 10
Этот манифест можно сразу применить через kubectl apply -f pod.yaml.
2. Deployment с rolling update и стратегией
Задача: Создать Deployment для приложения с тремя репликами, rolling update и readiness probe.
Промт:
Напиши YAML для Deployment в Kubernetes с именем app-frontend, 3 репликами, контейнером image: myapp:1.0, порт 8080. Укажи стратегию rollingUpdate: maxSurge=1, maxUnavailable=0. Добавь readinessProbe: HTTP GET /ready, port 8080, initialDelaySeconds=3, periodSeconds=5. Включи livenessProbe: TCP socket на порт 8080.
Пример использования:
Полученный YAML содержит все поля для production-ready деплоя. После применения kubectl rollout status deployment app-frontend вы увидите, как Pods обновляются по одному.
3. Service (ClusterIP и NodePort)
Задача: Сгенерировать Service двух типов: ClusterIP для внутреннего трафика и NodePort для внешнего доступа.
Промт:
Создай YAML для Service типа ClusterIP, который выбирает Pods с label app: my-app, порт 80 -> targetPort 8080. Также создай второй Service типа NodePort с тем же selector, порт 30080 -> targetPort 8080.
Пример использования:
Вы получите два манифеста. Первый — для внутренней коммуникации между микросервисами, второй — для доступа снаружи кластера через nodeIP:30080.
4. Ingress с правилами маршрутизации
Задача: Настроить Ingress для двух доменов с разными сервисами.
Промт:
Сгенерируй YAML для Ingress (apiVersion networking.k8s.io/v1) с именем main-ingress. Для хоста api.example.com направь трафик на Service api-service:80. Для хоста app.example.com — на Service app-service:80. Добавь аннотацию nginx.ingress.kubernetes.io/rewrite-target: /
Пример использования:
Этот промт подходит для стандартного NGINX Ingress Controller. После применения настройте DNS-записи на IP балансировщика.
5. ConfigMap и Secret для хранения конфигурации
Задача: Создать ConfigMap с переменными окружения и Secret с паролем БД.
Промт:
Напиши YAML для ConfigMap с именем app-config, который содержит: DB_HOST=localhost, DB_PORT=5432. Также создай Secret с именем app-secret, тип Opaque, с полями DB_USER=admin, DB_PASSWORD=pass123 (закодируй в base64). Оба манифеста должны быть в namespace production.
Пример использования:
LLM вернёт корректные YAML с base64-закодированными значениями в Secret. Подключите их к Pod через envFrom.
6. Helm-чарт для микросервиса (структура)
Задача: Создать базовую структуру Helm-чарта для Node.js приложения.
Промт:
Создай структуру Helm-чарта с именем node-app. Включи файлы: Chart.yaml (apiVersion v2), values.yaml с переменными image.repository, image.tag, replicaCount, service.type, service.port. Сгенерируй шаблоны templates/deployment.yaml, templates/service.yaml, templates/_helpers.tpl с метаданными. Используй стандартные функции Helm: .Values, .Release.Name, include.
Пример использования:
После применения helm create вы получите заготовку, но промт даёт более кастомизированный шаблон под конкретные нужды.
7. Helm-чарт с зависимостями (subcharts)
Задача: Добавить зависимость от PostgreSQL в Helm-чарт.
Промт:
В Helm-чарт my-app добавь зависимость от bitnami/postgresql версии 12.x. Напиши Chart.yaml с dependencies, где alias=postgres, condition=postgresql.enabled. В values.yaml добавь блок postgresql.enabled: true, postgresql.auth.database: mydb. Создай шаблон configmap.yaml, который получает строку подключения из зависимого чарта с помощью .Subcharts.postgres.
Пример использования:
Этот промт генерирует корректную структуру для многочартового приложения. Выполните helm dependency update для загрузки зависимостей.
8. HorizontalPodAutoscaler (HPA) на основе CPU
Задача: Настроить автоскалирование Deployment по CPU.
Промт:
Создай YAML для HPA (apiVersion autoscaling/v2) с именем app-hpa. Target: Deployment app-frontend. Минимальное количество реплик: 2, максимальное: 10. Используй метрику CPU: averageUtilization=70%. Добавь метрику memory: averageUtilization=80%.
Пример использования:
После применения kubectl get hpa будет отображаться текущая загрузка. HPA сработает при превышении порогов.
9. Job и CronJob для разовых задач
Задача: Создать Job для миграции БД и CronJob для ежедневного бэкапа.
Промт:
Напиши YAML для Job с именем db-migrate, контейнер image: myapp:1.0, команда ["node", "migrate.js"], restartPolicy: Never. Также создай CronJob с именем daily-backup, расписание "0 2 * * *", контейнер image: backup-tool, команда ["backup", "--all"].
Пример использования:
Job выполнится один раз и завершится. CronJob будет запускаться каждую ночь в 2:00.
10. NetworkPolicy для изоляции трафика
Задача: Ограничить входящий трафик к Pods только от определённых меток.
Промт:
Создай YAML для NetworkPolicy с именем allow-frontend. PolicyTypes: Ingress. PodSelector: app: backend. Ingress rules: from pods with label app: frontend, порт 8080 TCP. Добавьте namespaceSelector: из того же namespace.
Пример использования:
Политика применяется к Pods с меткой app: backend. Только Pods с меткой app: frontend могут обращаться к ним на порт 8080. Это повышает безопасность в многокомпонентных приложениях.
Заключение
Промты — это не замена знанию Kubernetes, а ускоритель рутинных задач. Используйте их для генерации черновиков, а затем проверяйте через kubectl dry-run или helm template. Со временем вы сможете адаптировать эти промты под свой стек, добавляя специфические аннотации, tolerations или sidecar-контейнеры. Помните: лучший способ освоить k8s — практика. Начните с малого: создайте Pod, потом Deployment, а затем Helm-чарт для целого приложения. Удачи в деплое!
ASI Biont поддерживает подключение к Kubernetes API через AI-ассистентов — подробнее на asibiont.com/courses
Комментарии