К основному содержанию
скилл CX Codex

kubernetes-ops — скилл для Claude Code: деплой и отладка в K8s

Скилл для работы с кластером Kubernetes: манифесты деплойментов, сервисов и ингрессов, масштабирование и разбор упавших подов.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add BagelHole/DevOps-Security-Agent-Skills --skill kubernetes-ops -a claude-code
Открыть на GitHub

Что делает kubernetes-ops

Скилл даёт агенту готовые шаблоны YAML и набор команд kubectl под типовые операции: Deployment с пробами и лимитами ресурсов, Service типа ClusterIP или LoadBalancer, Ingress с TLS, ConfigMap и Secret, PVC, StatefulSet, Job и CronJob, NetworkPolicy. Внутри — справочник по ресурсам и разделам с командами, а не генератор, который сам ходит в кластер.

Отладка вынесена отдельно: логи с --tail и выбором контейнера, kubectl exec, kubectl port-forward, kubectl debug с образом busybox, события с сортировкой по времени. Масштабирование — вручную через kubectl scale или автоматом через HorizontalPodAutoscaler по CPU и памяти.

Перед работой нужен установленный и настроенный kubectl с доступом к кластеру. Без живого контекста скилл остаётся справочником по манифестам: команды вроде kubectl apply -f deployment.yaml выполнять будет негде. Секреты в примерах задаются через stringData, так что реальные значения лучше не держать в файле манифеста.

Скилл ставится в шесть платформ, включая Claude, Codex и Cursor.

Какие задачи решает

  • собрать манифест деплоймента с пробами и лимитами
  • открыть сервис наружу через LoadBalancer или Ingress
  • разобрать, почему под уходит в перезапуск
  • вынести конфиг и секреты из образа в ConfigMap и Secret
  • настроить автомасштабирование по CPU и памяти

Примеры запросов агенту

  • напиши Deployment для myapp с тремя репликами и livenessProbe на /health
  • подскажи, как посмотреть логи упавшего пода и зайти в него через kubectl exec
  • настрой HPA для myapp от 2 до 10 реплик по загрузке CPU

Как установить kubernetes-ops

1Через Skills CLI (Vercel)

npx skills add BagelHole/DevOps-Security-Agent-Skills --skill kubernetes-ops -a claude-code

2Вручную: положить файлы

~/.claude/skills/kubernetes-ops/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/kubernetes-ops/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о kubernetes-ops

Как установить kubernetes-ops в Claude?

Выполните npx skills add BagelHole/DevOps-Security-Agent-Skills --skill kubernetes-ops -a claude-code. Файл скилла окажется по пути ~/.claude/skills/kubernetes-ops/SKILL.md.

Что делает kubernetes-ops?

Подсказывает агенту, как описывать и править объекты Kubernetes: деплойменты, сервисы, ингрессы, конфиги, хранилища и задания. Плюс даёт команды для отладки подов и масштабирования.

Что нужно для работы скилла?

Установленный и настроенный kubectl и доступ к кластеру. Базовое понимание контейнеров тоже пригодится, потому что примеры опираются на образы и порты контейнеров.

Исходный текст

SKILL.md · MIT
---
name: kubernetes-ops
description: Deploy, scale, and manage Kubernetes workloads. Create deployments, services, and configurations, manage cluster resources, troubleshoot pods, and implement production-ready Kubernetes patterns. Use when working with Kubernetes clusters, K8s deployments, or container orchestration.
license: MIT
metadata:
  author: devops-skills
  version: "1.0"
---

# Kubernetes Operations

Deploy and manage containerized applications on Kubernetes clusters.

## When to Use This Skill

Use this skill when:
- Deploying applications to Kubernetes
- Managing pods, deployments, and services
- Configuring resource limits and scaling
- Troubleshooting Kubernetes workloads
- Setting up networking and ingress

## Prerequisites

- kubectl installed and configured
- Access to a Kubernetes cluster
- Basic understanding of containers

## Core Resources

### Deployment

```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  labels:
    app: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:1.0.0
        ports:
        - containerPort: 8080
        resources:
          requests:
            memory: "128Mi"
            cpu: "100m"
          limits:
            memory: "256Mi"
            cpu: "500m"
        livenessProbe:
          httpGet:
            path: /health
            port: 8080
          initialDelaySeconds: 10
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /ready
            port: 8080
          initialDelaySeconds: 5
          periodSeconds: 5
        env:
        - name: DATABASE_URL
          valueFrom:
            secretKeyRef:
              name: myapp-secrets
              key: database-url
```

### Service

```yaml
apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  selector:
    app: myapp
  ports:
  - port: 80
    targetPort: 8080
  type: ClusterIP
---
# LoadBalancer for external access
apiVersion: v1
kind: Service
metadata:
  name: myapp-external
spec:
  selector:
    app: myapp
  ports:
  - port: 80
    targetPort: 8080
  type: LoadBalancer
```

### Ingress

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - myapp.example.com
    secretName: myapp-tls
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: myapp
            port:
              number: 80
```

## Configuration Management

### ConfigMap

```yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: myapp-config
data:
  config.yaml: |
    server:
      port: 8080
    logging:
      level: info
  APP_ENV: production
```

```yaml
# Using ConfigMap
containers:
- name: myapp
  envFrom:
  - configMapRef:
      name: myapp-config
  volumeMounts:
  - name: config
    mountPath: /etc/config
volumes:
- name: config
  configMap:
    name: myapp-config
```

### Secret

```yaml
apiVersion: v1
kind: Secret
metadata:
  name: myapp-secrets
type: Opaque
stringData:
  database-url: postgres://user:pass@host:5432/db
  api-key: secret-key-value
```

```bash
# Create secret from command line
kubectl create secret generic myapp-secrets \
  --from-literal=database-url='postgres://...' \
  --from-file=tls.crt=cert.pem
```

## kubectl Commands

### Resource Management

```bash
# Apply configuration
kubectl apply -f deployment.yaml

# Get resources
kubectl get pods
kubectl get deployments
kubectl get services
kubectl get all -n myapp

# Describe resource
kubectl describe pod myapp-xxx

# Delete resource
kubectl delete -f deployment.yaml
kubectl delete pod myapp-xxx

# Edit resource
kubectl edit deployment myapp
```

### Debugging

```bash
# View logs
kubectl logs myapp-xxx
kubectl logs -f myapp-xxx --tail=100
kubectl logs myapp-xxx -c sidecar  # specific container

# Execute command
kubectl exec -it myapp-xxx -- /bin/sh

# Port forward
kubectl port-forward svc/myapp 8080:80
kubectl port-forward pod/myapp-xxx 8080:8080

# View events
kubectl get events --sort-by='.lastTimestamp'

# Debug pod
kubectl debug myapp-xxx -it --image=busybox
```

### Scaling

```bash
# Manual scaling
kubectl scale deployment myapp --replicas=5

# Autoscaling
kubectl autoscale deployment myapp \
  --min=2 --max=10 \
  --cpu-percent=80
```

## Horizontal Pod Autoscaler

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

## Persistent Storage

### PersistentVolumeClaim

```yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myapp-data
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: standard
  resources:
    requests:
      storage: 10Gi
---
# Using PVC
containers:
- name: myapp
  volumeMounts:
  - name: data
    mountPath: /data
volumes:
- name: data
  persistentVolumeClaim:
    claimName: myapp-data
```

## StatefulSet

```yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: postgres
spec:
  serviceName: postgres
  replicas: 3
  selector:
    matchLabels:
      app: postgres
  template:
    metadata:
      labels:
        app: postgres
    spec:
      containers:
      - name: postgres
        image: postgres:15
        ports:
        - containerPort: 5432
        volumeMounts:
        - name: data
          mountPath: /var/lib/postgresql/data
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: ["ReadWriteOnce"]
      resources:
        requests:
          storage: 10Gi
```

## Jobs and CronJobs

### Job

```yaml
apiVersion: batch/v1
kind: Job
metadata:
  name: migration
spec:
  template:
    spec:
      containers:
      - name: migrate
        image: myapp:1.0.0
        command: ["./migrate.sh"]
      restartPolicy: Never
  backoffLimit: 3
```

### CronJob

```yaml
apiVersion: batch/v1
kind: CronJob
metadata:
  name: backup
spec:
  schedule: "0 2 * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: backup
            image: backup-tool:latest
            command: ["./backup.sh"]
          restartPolicy: OnFailure
```

## Network Policies

```yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: myapp-network-policy
spec:
  podSelector:
    matchLabels:
      app: myapp
  policyTypes:
  - Ingress
  - Egress
  ingress:
  - from:
    - podSelector:
        matchLabels:
          app: frontend
    ports:
    - protocol: TCP
      port: 8080
  egress:
  - to:
    - podSelector:
        matchLabels:
          app: database
    ports:
    - protocol: TCP
      port: 5432
```

## Resource Quotas

```yaml
apiVersion: v1
kind: ResourceQuota
metadata:
  name: myapp-quota
  namespace: myapp
spec:
  hard:
    requests.cpu: "10"
    requests.memory: 20Gi
    limits.cpu: "20"
    limits.memory: 40Gi
    pods: "20"
```

## Rolling Updates

```yaml
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
```

```bash
# Update image
kubectl set image deployment/myapp myapp=myapp:2.0.0

# Check rollout status
kubectl rollout status deployment/myapp

# View history
kubectl rollout history deployment/myapp

# Rollback
kubectl rollout undo deployment/myapp
kubectl rollout undo deployment/myapp --to-revision=2
```

## Common Issues

### Issue: Pod Stuck in Pending
**Problem**: Pod won't start
**Solution**: Check resource availability, node selector, PVC binding

```bash
kubectl describe pod myapp-xxx
kubectl get events
```

### Issue: CrashLoopBackOff
**Problem**: Container keeps restarting
**Solution**: Check logs, verify entrypoint, check probes

```bash
kubectl logs myapp-xxx --previous
kubectl describe pod myapp-xxx
```

### Issue: Service Not Accessible
**Problem**: Cannot connect to service
**Solution**: Check selector labels, verify endpoints exist

```bash
kubectl get endpoints myapp
kubectl describe svc myapp
```

### Issue: Image Pull Error
**Problem**: ImagePullBackOff
**Solution**: Check image name, verify registry credentials

```bash
kubectl create secret docker-registry regcred \
  --docker-server=registry.example.com \
  --docker-username=user \
  --docker-password=pass
```

## Best Practices

- Always set resource requests and limits
- Implement liveness and readiness probes
- Use namespaces for isolation
- Apply network policies for security
- Use ConfigMaps and Secrets for configuration
- Implement pod disruption budgets for availability
- Use labels consistently for organization
- Enable RBAC for access control

## Related Skills

- [helm-charts](../helm-charts/) - Package management
- [argocd-gitops](../argocd-gitops/) - GitOps deployments
- [kubernetes-hardening](../../../security/hardening/kubernetes-hardening/) - Security

© devops-skills · MIT · BagelHole/DevOps-Security-Agent-Skills

Похожие скиллы

Всё по теме «DevOps и инфраструктура» →
kubernetes-deployment aj-geddes Помогает создавать манифесты и настраивать развёртывание приложений в Kubernetes: от rolling update и лимитов ресурсов до RBAC и проверок жизнеспособности подов. CX Codex +1 745установок kubernetes sanjeed5 Правило для Cursor задаёт, как писать и раскладывать по файлам манифесты Kubernetes: метки, ресурсы, пробы, Pod Security Standards. ★ 3 579звёзд репо dt-obs-kubernetes Dynatrace Скилл помогает анализировать состояние кластеров Kubernetes, сбои подов и нехватку ресурсов через запросы Dynatrace DQL. CX Codex +1 2 600установок azure-kubernetes-automatic-readiness Microsoft Оценивает манифесты и конфигурацию кластера на совместимость с AKS Automatic, находит блокеры миграции и предлагает правки. ★ 3 148звёзд репо kubernetes-skill LukasNiessen Помогает создавать и проверять манифесты Kubernetes без галлюцинаций. Находит ошибки в безопасности, сетевых политиках и ресурсах. CX Codex +1 1 400установок k8s-debug akin-ozer Разбирает падения подов, зависшие rollout и проблемы с DNS и хранилищем через kubectl. Пригодится, когда кластер ведёт себя странно после деплоя. CX Codex +1 819установок

Из того же набора127

sops-encryption Скилл учит агента шифровать конфиги и секреты Kubernetes через Mozilla SOPS с ключами AWS KMS, GCP KMS или PGP. Пригодится, когда секреты лежат в Git. CX Codex +1 403установок performance-tuning Скилл для настройки производительности Linux: подбор параметров ядра, поиск узких мест, работа с планировщиком I/O и памятью. Пригодится, когда сервер тормозит или готовится к нагрузке. CX Codex +1 403установок podman Обучает агента управлять контейнерами и подами через Podman без демона. Пригодится для настройки rootless-окружения и генерации юнитов systemd. CX Codex +1 400установок incident-response Помогает реагировать на взломы и инциденты безопасности по регламенту из шести фаз: от фиксации доказательств до устранения уязвимостей. CX Codex +1 394установок terraform-gcp Разворачивает инфраструктуру Google Cloud через Terraform. Настраивает провайдеры, модули VPC, кластеры GKE и базы Cloud SQL. CX Codex +1 389установок github-actions Скилл помогает агенту писать и править workflow-файлы GitHub Actions: сборка, тесты, деплой, секреты, кэш и self-hosted раннеры. CX Codex +1 388установок terraform-aws Разворачивает инфраструктуру AWS через Terraform, настраивает модули и хранение стейта. Пригодится при декларативном описании облачных ресурсов. CX Codex +1 387установок windows-hardening Скилл для агентов, который приводит Windows Server к Microsoft security baselines и CIS benchmarks: пароли, Group Policy, Windows Defender, SMB. CX Codex +1 388установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой