Kubernetes и Terraform в 2026: 12 промтов, которые превращают ручной деплой в самоподдерживающуюся инфраструктуру
Введение
В 2026 году DevOps-инженеры больше не тратят часы на написание YAML-манифестов и модулей Terraform вручную. Согласно отчёту CNCF за 2025 год, 78% организаций используют Kubernetes в продакшене, а 63% — Terraform для управления инфраструктурой. При этом время на рутинные операции сокращается благодаря AI-ассистентам. По данным опроса Stack Overflow 2025, 44% разработчиков уже применяют AI для генерации кода и конфигураций.
В этой подборке я собрал 12 проверенных промтов, которые лично использовал для автоматизации кластеров, IaC-модулей и CI/CD. Каждый промт — это готовый сценарий с примером результата. Вы сможете адаптировать их под свои задачи и перейти от ручного управления к самоподдерживающейся инфраструктуре.
Базовые промты
1. Генерация манифеста Deployment с ресурсами и пробами
Задача: Быстро создать production-ready манифест Deployment для микросервиса.
Промт:
Сгенерируй манифест Kubernetes Deployment для приложения на Python (FastAPI) с образом myregistry/fastapi-app:1.2.3. Укажи 3 реплики, лимиты CPU 500m и памяти 512Mi, запросы CPU 200m и памяти 256Mi. Добавь liveness и readiness пробы на /health с задержкой 10 секунд. Включи переменные окружения DATABASE_URL и REDIS_HOST из ConfigMap и Secret. Используй namespace production.
Пример результата:
apiVersion: apps/v1
kind: Deployment
metadata:
name: fastapi-app
namespace: production
spec:
replicas: 3
selector:
matchLabels:
app: fastapi-app
template:
metadata:
labels:
app: fastapi-app
spec:
containers:
- name: app
image: myregistry/fastapi-app:1.2.3
ports:
- containerPort: 8000
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 200m
memory: 256Mi
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 10
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
env:
- name: DATABASE_URL
valueFrom:
configMapKeyRef:
name: app-config
key: database_url
- name: REDIS_HOST
valueFrom:
secretKeyRef:
name: app-secret
key: redis_host
2. Создание модуля Terraform для VPC в AWS
Задача: Написать переиспользуемый модуль Terraform для создания VPC с публичными и приватными подсетями.
Промт:
Напиши модуль Terraform для AWS VPC с CIDR 10.0.0.0/16. Создай 2 публичные подсети в разных AZ и 2 приватные. Включи NAT Gateway для приватных подсетей, Internet Gateway для публичных. Добавь теги Name и Environment. Выходные переменные: vpc_id, public_subnet_ids, private_subnet_ids. Используй версию провайдера AWS >= 5.0.
Пример результата (фрагмент):
resource "aws_vpc" "main" {
cidr_block = var.vpc_cidr
tags = {
Name = "main-vpc"
Environment = var.environment
}
}
resource "aws_subnet" "public" {
count = 2
vpc_id = aws_vpc.main.id
cidr_block = cidrsubnet(var.vpc_cidr, 8, count.index)
availability_zone = data.aws_availability_zones.available.names[count.index]
map_public_ip_on_launch = true
tags = {
Name = "public-subnet-${count.index}"
}
}
resource "aws_nat_gateway" "main" {
allocation_id = aws_eip.nat.id
subnet_id = aws_subnet.public[0].id
}
3. Пайплайн GitHub Actions для сборки и деплоя в Kubernetes
Задача: Автоматизировать сборку Docker-образа и деплой в кластер Kubernetes при пуше в main.
Промт:
Создай GitHub Actions workflow для сборки Docker-образа и деплоя в Kubernetes. Триггер: push в ветку main. Шаги: checkout, логин в Docker Hub, сборка и пуш образа с тегом ${{ github.sha }}, установка kubectl, применение манифестов из папки k8s/. Используй секреты DOCKER_USERNAME, DOCKER_PASSWORD, KUBE_CONFIG. Запускай на ubuntu-latest.
Пример результата:
name: Build and Deploy
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push
uses: docker/build-push-action@v5
with:
push: true
tags: myregistry/app:${{ github.sha }}
- name: Set up kubectl
uses: azure/setup-kubectl@v3
- name: Deploy
run: |
echo "${{ secrets.KUBE_CONFIG }}" > kubeconfig
export KUBECONFIG=kubeconfig
kubectl apply -f k8s/
Продвинутые промты
4. Оптимизация затрат на Kubernetes с помощью Vertical Pod Autoscaler
Задача: Снизить расходы на кластер, автоматически подбирая ресурсы для подов.
Промт:
Сгенерируй манифесты Vertical Pod Autoscaler (VPA) для Deployment my-app в namespace production. Режим обновления — Auto. Установи минимальные и максимальные границы CPU и памяти: min 100m/128Mi, max 1/1Gi. Добавь комментарии, объясняющие, как VPA взаимодействует с Horizontal Pod Autoscaler.
Пример результата:
apiVersion: autoscaling.k8s.io/v1
kind: VerticalPodAutoscaler
metadata:
name: my-app-vpa
namespace: production
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment
name: my-app
updatePolicy:
updateMode: "Auto"
resourcePolicy:
containerPolicies:
- containerName: '*'
minAllowed:
cpu: 100m
memory: 128Mi
maxAllowed:
cpu: 1
memory: 1Gi
5. Генерация Terraform для мультиоблачного деплоя
Задача: Создать инфраструктуру в AWS и GCP с помощью одного набора Terraform.
Промт:
Напиши Terraform конфигурацию для развёртывания веб-приложения в AWS (EC2 + RDS) и GCP (Compute Engine + Cloud SQL). Используй модули: terraform-aws-modules/ec2-instance/aws и terraform-google-modules/cloud-sql/google. Обеспечь одинаковые теги и命名. Выходные данные: IP-адреса и строки подключения к БД.
Пример результата (фрагмент):
module "aws_ec2" {
source = "terraform-aws-modules/ec2-instance/aws"
name = "web-server"
instance_type = "t3.medium"
tags = {
Environment = "prod"
Cloud = "AWS"
}
}
module "gcp_vm" {
source = "terraform-google-modules/vm/google"
name = "web-server"
machine_type = "e2-medium"
tags = ["web", "prod"]
}
6. Настройка Istio для канареечного деплоя
Задача: Внедрить канареечный релиз с помощью Istio.
Промт:
Создай манифесты Istio для канареечного деплоя приложения my-app: 90% трафика на версию v1, 10% на v2. Используй VirtualService и DestinationRule. Добавь заголовок x-canary для принудительного направления на v2. Укажи namespace default.
Пример результата:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: my-app
spec:
hosts:
- my-app
http:
- match:
- headers:
x-canary:
exact: "true"
route:
- destination:
host: my-app
subset: v2
- route:
- destination:
host: my-app
subset: v1
weight: 90
- destination:
host: my-app
subset: v2
weight: 10
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: my-app
spec:
host: my-app
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
Экспертные промты
7. Автоматическое масштабирование на основе пользовательских метрик
Задача: Настроить HPA на основе метрик из Prometheus (например, количество запросов в секунду).
Промт:
Создай Horizontal Pod Autoscaler для Deployment my-app, который масштабируется по кастомной метрике http_requests_per_second из Prometheus. Минимум 2 пода, максимум 10. Целевое значение — 1000 запросов в секунду. Используй API autoscaling/v2 и адаптер prometheus-adapter. Приведи пример ServiceMonitor для сбора метрик.
Пример результата:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: my-app-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: my-app
minReplicas: 2
maxReplicas: 10
metrics:
- type: Pods
pods:
metric:
name: http_requests_per_second
target:
type: AverageValue
averageValue: 1000
8. Генерация Terraform для Kubernetes-кластера в AWS EKS с managed node groups
Задача: Развернуть production-ready EKS-кластер с автоматическим обновлением и мониторингом.
Промт:
Напиши Terraform конфигурацию для создания EKS-кластера в AWS с managed node groups. Используй модуль terraform-aws-modules/eks/aws версии 20.0. Включи следующие дополнения: Cluster Autoscaler, Metrics Server, AWS Load Balancer Controller. Настрой IRSA для сервисных аккаунтов. Укажи версию Kubernetes 1.30. Выходные данные: cluster_endpoint, cluster_name, oidc_provider_arn.
Пример результата (фрагмент):
module "eks" {
source = "terraform-aws-modules/eks/aws"
version = "20.0"
cluster_name = "my-cluster"
cluster_version = "1.30"
vpc_id = module.vpc.vpc_id
subnet_ids = module.vpc.private_subnets
eks_managed_node_groups = {
main = {
min_size = 2
max_size = 10
desired_size = 3
instance_types = ["t3.medium"]
}
}
enable_irsa = true
cluster_addons = {
coredns = {
most_recent = true
}
kube-proxy = {
most_recent = true
}
vpc-cni = {
most_recent = true
}
aws-ebs-csi-driver = {
most_recent = true
}
}
}
9. Автоматизация безопасности с помощью OPA Gatekeeper
Задача: Внедрить политики безопасности для кластера Kubernetes.
Промт:
Создай политику OPA Gatekeeper, запрещающую создание подов с привилегированными контейнерами. Также добавь политику, требующую указания ресурсов CPU и памяти. Приведи пример ConstraintTemplate и Constraint. Укажи, как применить их через kubectl.
Пример результата:
apiVersion: templates.gatekeeper.sh/v1
kind: ConstraintTemplate
metadata:
name: k8spspprivileged
spec:
crd:
spec:
names:
kind: K8sPSPPrivileged
targets:
- target: admission.k8s.gatekeeper.sh
rego: |
package k8spspprivileged
violation[{"msg": msg}] {
c := input_containers[_]
c.securityContext.privileged
msg := sprintf("Privileged container is not allowed: %v", [c.name])
}
input_containers[c] {
c := input.review.object.spec.containers[_]
}
input_containers[c] {
c := input.review.object.spec.initContainers[_]
}
---
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sPSPPrivileged
metadata:
name: psp-privileged
spec:
match:
kinds:
- apiGroups: [""]
kinds: ["Pod"]
10. Создание Helm-чарта для микросервисов
Задача: Упаковать приложение в Helm-чарт для многократного использования.
Промт:
Сгенерируй Helm-чарт для микросервиса с параметризованными values.yaml. Включи Deployment, Service, Ingress, ConfigMap, Secret. Параметры: image.repository, image.tag, replicaCount, resources, ingress.enabled, ingress.hosts. Добавь helpers.tpl для генерации имён. Приведи пример values.yaml для production.
Пример результата (values.yaml):
replicaCount: 3
image:
repository: myregistry/app
tag: latest
pullPolicy: IfNotPresent
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 200m
memory: 256Mi
ingress:
enabled: true
hosts:
- host: app.example.com
paths:
- path: /
pathType: Prefix
11. Настройка GitOps с ArgoCD
Задача: Автоматизировать синхронизацию состояния кластера с Git-репозиторием.
Промт:
Напиши манифест ArgoCD Application для синхронизации Helm-чарта из Git-репозитория https://github.com/myorg/app-chart. Ветка main, путь charts/app, namespace production. Включи автоматическую синхронизацию с prune и selfHeal. Добавь уведомления в Slack при успешной синхронизации.
Пример результата:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/myorg/app-chart
targetRevision: main
path: charts/app
helm:
valueFiles:
- values-production.yaml
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
notification:
slack:
channel: '#deployments'
12. Автоматическая очистка старых ресурсов с помощью Kubernetes Jobs
Задача: Регулярно удалять устаревшие ConfigMaps и Secrets.
Промт:
Создай Kubernetes CronJob, который каждую ночь удаляет ConfigMaps и Secrets старше 30 дней в namespace production. Используй образ bitnami/kubectl:1.30. Скрипт должен фильтровать ресурсы по аннотации created-at. Добавь RBAC для сервисного аккаунта.
Пример результата:
apiVersion: batch/v1
kind: CronJob
metadata:
name: cleanup-old-resources
spec:
schedule: "0 0 * * *"
jobTemplate:
spec:
template:
spec:
serviceAccountName: cleanup-sa
containers:
- name: cleanup
image: bitnami/kubectl:1.30
command:
- /bin/sh
- -c
- |
kubectl get configmaps -n production -o json | \
jq -r '.items[]
| select(.metadata.annotations."created-at" < (now - 30*24*3600 | todate)) | .metadata.name' | \
xargs -r kubectl delete configmap -n production
restartPolicy: OnFailure
Заключение
Эти 12 промтов — не просто набор команд, а фундамент для построения самоподдерживающейся инфраструктуры. В 2026 году AI-ассистенты становятся незаменимыми помощниками DevOps-инженеров. Начните с базовых сценариев, постепенно внедряйте продвинутые и экспертные. Помните: автоматизация не заменяет понимание, а усиливает его. Экспериментируйте, адаптируйте промты под свои задачи и делитесь результатами в комментариях.
Источники:
- CNCF Annual Survey 2025
- Stack Overflow Developer Survey 2025
- Официальная документация Kubernetes (kubernetes.io)
- Документация Terraform (terraform.io)
Комментарии