12 промтов для Kubernetes: как превратить нейросеть в опытного SRE-инженера

12 промтов для Kubernetes: как превратить нейросеть в опытного SRE-инженера

Kubernetes — это мощная, но сложная система. Даже опытные DevOps-инженеры тратят часы на разбор CrashLoopBackOff, написание манифестов и настройку сетевых политик. Нейросети, такие как ChatGPT, Claude или Gemini, могут стать вашим виртуальным SRE-ассистентом, если правильно формулировать запросы.

В этой подборке — 12 проверенных промтов для Kubernetes, которые покрывают диагностику, написание YAML, оптимизацию ресурсов, безопасность и Helm. Каждый промт содержит готовый шаблон, пример использования и пояснение, для какой задачи он подходит. Вы можете копировать их и адаптировать под свой кластер.

1. Диагностика падающих подов (CrashLoopBackOff)

Задача: Под постоянно перезапускается, и вы не понимаете причину.

Промт:

Ты — опытный SRE. У меня под в состоянии CrashLoopBackOff. Вот вывод `kubectl describe pod <pod-name>` и `kubectl logs <pod-name> --previous`. Проанализируй ошибки, укажи вероятные причины и предложи пошаговый план исправления. Приведи команды для проверки.

Пример:

kubectl describe pod my-app-7c9f8d6b5-abcde -n production
kubectl logs my-app-7c9f8d6b5-abcde --previous

Нейросеть укажет на типичные проблемы: неверный образ, отсутствие ConfigMap, OOMKilled, ошибки в liveness-пробе.

2. Генерация манифеста Deployment с ресурсами и пробами

Задача: Нужно быстро создать корректный YAML для нового сервиса.

Промт:

Сгенерируй манифест Kubernetes для Deployment и Service. Приложение: <имя>, образ: <image:tag>, порт: 8080. Добавь requests/limits (CPU 100m/500m, память 128Mi/256Mi), liveness и readiness пробы, 3 реплики. Используй best practices.

Пример вывода:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app:1.0
        ports:
        - containerPort: 8080
        resources:
          requests:
            cpu: 100m
            memory: 128Mi
          limits:
            cpu: 500m
            memory: 256Mi
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080
          initialDelaySeconds: 10
          periodSeconds: 5
        readinessProbe:
          httpGet:
            path: /ready
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 5

3. Настройка Horizontal Pod Autoscaler (HPA)

Задача: Автоматически масштабировать приложение по CPU или кастомным метрикам.

Промт:

Напиши манифест HPA для Deployment <name>. Минимум 2 пода, максимум 10. Целевая загрузка CPU — 70%. Добавь комментарии, объясняющие параметры. Если нужны кастомные метрики, покажи пример с Prometheus Adapter.

Пример:

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: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70

4. Создание NetworkPolicy для ограничения трафика

Задача: Разрешить трафик только от определённых подов.

Промт:

Создай NetworkPolicy, которая разрешает входящий трафик к подам с меткой app=backend только от подов с меткой app=frontend на порт 8080. Весь остальной входящий трафик запрещён. Объясни, как это влияет на DNS.

Пример:

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: backend-policy
spec:
  podSelector:
    matchLabels:
      app: backend
  policyTypes:
  - Ingress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend
    ports:
    - protocol: TCP
      port: 8080

5. Отладка Ingress и TLS

Задача: Ingress не работает, сертификат не выдаётся.

Промт:

Мой Ingress возвращает 404 или 502. Вот его YAML и вывод `kubectl describe ingress`. Проверь синтаксис, соответствие сервисов, аннотации для cert-manager. Предложи шаги диагностики.

Пример: Часто проблема в неверном ingressClassName или отсутствии аннотации cert-manager.io/cluster-issuer.

6. Оптимизация ресурсов: поиск перерасхода

Задача: Снизить затраты на кластер.

Промт:

У меня есть вывод `kubectl top pods --all-namespaces`. Проанализируй, какие поды потребляют больше всего CPU и памяти. Предложи, как изменить requests/limits для экономии, но без риска OOM. Учти, что приложение чувствительно к задержкам.

Пример анализа: Нейросеть выделит поды с завышенными requests и предложит установить VPA (Vertical Pod Autoscaler) в режиме рекомендаций.

7. Написание Helm-чарта с нуля

Задача: Упаковать приложение в Helm.

Промт:

Создай структуру Helm-чарта для приложения <name>. Включи Deployment, Service, Ingress, ConfigMap. Используй values.yaml для настройки образа, реплик и ресурсов. Добавь _helpers.tpl для шаблонизации имён. Покажи пример values.yaml.

Пример структуры:

my-chart/
  Chart.yaml
  values.yaml
  templates/
    deployment.yaml
    service.yaml
    ingress.yaml
    configmap.yaml
    _helpers.tpl

8. Аудит безопасности кластера

Задача: Проверить конфигурацию на уязвимости.

Промт:

Проанализируй мой PodSecurityPolicy (или Pod Security Admission) и RBAC. Вот вывод `kubectl get roles,rolebindings,clusterroles --all-namespaces`. Найди избыточные права, контейнеры с root, отсутствие readOnlyRootFilesystem. Дай рекомендации по CIS Benchmark.

Пример: Нейросеть укажет на securityContext: privileged: true и предложит заменить на runAsNonRoot: true.

9. Диагностика проблем с DNS в кластере

Задача: Сервисы не резолвятся по имени.

Промт:

Поды не могут подключиться к сервису по DNS-имени. Вот вывод `kubectl exec -it <pod> -- nslookup <service>`. Проверь CoreDNS, NetworkPolicy, ndots. Объясни, как работает DNS в Kubernetes.

Пример: Частая причина — NetworkPolicy блокирует трафик к kube-dns.

10. Настройка PersistentVolume и StorageClass

Задача: Подключить постоянное хранилище.

Промт:

Создай PVC и StorageClass для приложения <name>. Используй динамическое выделение, размер 10Gi, режим ReadWriteOnce. Покажи, как подключить том к поду. Учти, что облако — AWS (EBS).

Пример:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast
provisioner: ebs.csi.aws.com
parameters:
  type: gp3

11. Отладка Job и CronJob

Задача: Задача не выполняется или падает.

Промт:

Мой CronJob не запускается или завершается с ошибкой. Вот его YAML и логи пода. Проверь расписание, concurrencyPolicy, backoffLimit. Предложи исправления.

Пример: Ошибка в формате cron (5 полей вместо 6) или отсутствие restartPolicy: OnFailure.

12. Генерация kubeconfig и настройка доступа

Задача: Выдать доступ разработчику с ограниченными правами.

Промт:

Создай ServiceAccount, Role и RoleBinding для разработчика <name> в namespace <ns>. Разреши только get, list, watch для pods и logs. Сгенерируй kubeconfig для этого пользователя. Объясни, как безопасно передать его.

Пример:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: dev
  name: developer
rules:
- apiGroups: [""]
  resources: ["pods", "pods/log"]
  verbs: ["get", "list", "watch"]

Как использовать эти промты эффективно

  • Контекст решает всё: Всегда добавляйте вывод команд kubectl describe, kubectl logs, kubectl get -o yaml. Чем больше данных, тем точнее ответ.
  • Уточняйте версию Kubernetes: API меняется, поэтому указывайте версию (например, 1.29) в промте.
  • Проверяйте рекомендации: Нейросеть может ошибаться. Всегда тестируйте YAML в dev-кластере перед продакшеном.
  • Используйте роли: Начинайте промт с «Ты — опытный SRE» или «Ты — архитектор Kubernetes» — это улучшает качество ответов.

Эти 12 промтов покрывают большинство ежедневных задач DevOps-инженера. Они не заменят глубоких знаний, но ускорят рутину и помогут быстрее находить решения. Попробуйте их в своём кластере и адаптируйте под свои процессы.

Источники:
- Kubernetes Documentation
- CIS Kubernetes Benchmark
- Helm Docs

← All posts

Comments