К основному содержанию
правило официальный · GitHub

kubernetes-manifests — правило для GitHub Copilot: настройка

Задаёт стандарты оформления манифестов Kubernetes для GitHub Copilot. Помогает генерировать безопасные конфигурации с готовыми лимитами ресурсов, пробами и метками.

Установить в GitHub Copilot · Вручную: положить файлы Все способы и платформы ↓
.github/instructions/kubernetes-manifests.instructions.md
Открыть на GitHub

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

Правило автоматически применяется к файлам YAML в директориях k8s, manifests, deploy и шаблонам Helm в charts. Инструкции требуют обязательных меток app.kubernetes.io/*, указания конкретных версий образов без тега :latest и настройки контекста безопасности. В контейнерах блокируется повышение привилегий, отключаются лишние возможности ядра Linux и запрещается запуск от root.

Для стабильности подов ассистент прописывает три вида проб: liveness, readiness и startup. Для рабочей среды стандарт задаёт минимум две или три реплики, бюджет разрыва подов и стратегию RollingUpdate с параметром maxUnavailable: 0.

Если для файловой системы контейнера включён режим readOnlyRootFilesystem: true, под каталоги для записи потребуется смонтировать разделы tmpfs. Перед развёртыванием манифесты проверяются командами kubectl apply --dry-run и утилитой kubeconform со строгой валидацией схемы.

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

  • настроить безопасный SecurityContext для подов и контейнеров
  • задать гарантированные ресурсы и лимиты памяти с CPU
  • сконфигурировать пробы работоспособности и готовности сервиса
  • добавить стандартные метки и аннотации для мониторинга
  • подготовить стратегию обновления приложения без простоя

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

  • Сгенерируй манифест Deployment для веб-сервиса с тремя репликами и безопасным контекстом.
  • Добавь в манифест deploy/api.yaml бюджет разрыва подов и стратегию обновления без простоя.
  • Настрой пробы liveness и readiness с лимитами ресурсов в k8s/worker.yaml.

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

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

.github/instructions/kubernetes-manifests.instructions.md

Поле applyTo задаёт, к каким файлам применять

По шагам, с командами для каждой платформы: AGENTS.md и CLAUDE.md: что это, кто читает и какой выбрать

Вопросы о kubernetes-manifests

Как установить kubernetes-manifests в GitHub Copilot?

Создайте файл .github/instructions/kubernetes-manifests.instructions.md в корне репозитория и поместите туда текст правила.

К каким файлам применяется правило?

Инструкция активируется при работе с файлами .yaml и .yml в папках k8s, manifests, deploy, а также в шаблонах чартов charts/**/templates.

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

Используйте команды kubectl apply --dry-run=client -f manifest.yaml или kubeconform -strict manifest.yaml для проверки схемы и синтаксиса.

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

kubernetes-manifests.instructions.md · MIT
---
applyTo: 'k8s/**/*.yaml,k8s/**/*.yml,manifests/**/*.yaml,manifests/**/*.yml,deploy/**/*.yaml,deploy/**/*.yml,charts/**/templates/**/*.yaml,charts/**/templates/**/*.yml'
description: 'Best practices for Kubernetes YAML manifests including labeling conventions, security contexts, pod security, resource management, probes, and validation commands'
---

# Kubernetes Manifests Instructions

## Your Mission

Create production-ready Kubernetes manifests that prioritize security, reliability, and operational excellence with consistent labeling, proper resource management, and comprehensive health checks.

## Labeling Conventions

**Required Labels** (Kubernetes recommended):
- `app.kubernetes.io/name`: Application name
- `app.kubernetes.io/instance`: Instance identifier
- `app.kubernetes.io/version`: Version
- `app.kubernetes.io/component`: Component role
- `app.kubernetes.io/part-of`: Application group
- `app.kubernetes.io/managed-by`: Management tool

**Additional Labels**:
- `environment`: Environment name
- `team`: Owning team
- `cost-center`: For billing

**Useful Annotations**:
- Documentation and ownership
- Monitoring: `prometheus.io/scrape`, `prometheus.io/port`, `prometheus.io/path`
- Change tracking: git commit, deployment date

## SecurityContext Defaults

**Pod-level**:
- `runAsNonRoot: true`
- `runAsUser` and `runAsGroup`: Specific IDs
- `fsGroup`: File system group
- `seccompProfile.type: RuntimeDefault`

**Container-level**:
- `allowPrivilegeEscalation: false`
- `readOnlyRootFilesystem: true` (with tmpfs mounts for writable dirs)
- `capabilities.drop: [ALL]` (add only what's needed)

## Pod Security Standards

Use Pod Security Admission:
- **Restricted** (recommended for production): Enforces security hardening
- **Baseline**: Minimal security requirements
- Apply at namespace level

## Resource Requests and Limits

**Always define**:
- Requests: Guaranteed minimum (scheduling)
- Limits: Maximum allowed (prevents exhaustion)

**QoS Classes**:
- **Guaranteed**: requests == limits (best for critical apps)
- **Burstable**: requests < limits (flexible resource use)
- **BestEffort**: No resources defined (avoid in production)

## Health Probes

**Liveness**: Restart unhealthy containers
**Readiness**: Control traffic routing
**Startup**: Protect slow-starting applications

Configure appropriate delays, periods, timeouts, and thresholds for each.

## Rollout Strategies

**Deployment Strategy**:
- `RollingUpdate` with `maxSurge` and `maxUnavailable`
- Set `maxUnavailable: 0` for zero-downtime

**High Availability**:
- Minimum 2-3 replicas
- Pod Disruption Budget (PDB)
- Anti-affinity rules (spread across nodes/zones)
- Horizontal Pod Autoscaler (HPA) for variable load

## Validation Commands

**Pre-deployment**:
- `kubectl apply --dry-run=client -f manifest.yaml`
- `kubectl apply --dry-run=server -f manifest.yaml`
- `kubeconform -strict manifest.yaml` (schema validation)
- `helm template ./chart | kubeconform -strict` (for Helm)

**Policy Validation**:
- OPA Conftest, Kyverno, or Datree

## Rollout & Rollback

**Deploy**:
- `kubectl apply -f manifest.yaml`
- `kubectl rollout status deployment/NAME`

**Rollback**:
- `kubectl rollout undo deployment/NAME`
- `kubectl rollout undo deployment/NAME --to-revision=N`
- `kubectl rollout history deployment/NAME`

**Restart**:
- `kubectl rollout restart deployment/NAME`

## Manifest Checklist

- [ ] Labels: Standard labels applied
- [ ] Annotations: Documentation and monitoring
- [ ] Security: runAsNonRoot, readOnlyRootFilesystem, dropped capabilities
- [ ] Resources: Requests and limits defined
- [ ] Probes: Liveness, readiness, startup configured
- [ ] Images: Specific tags (never :latest)
- [ ] Replicas: Minimum 2-3 for production
- [ ] Strategy: RollingUpdate with appropriate surge/unavailable
- [ ] PDB: Defined for production
- [ ] Anti-affinity: Configured for HA
- [ ] Graceful shutdown: terminationGracePeriodSeconds set
- [ ] Validation: Dry-run and kubeconform passed
- [ ] Secrets: In Secrets resource, not ConfigMaps
- [ ] NetworkPolicy: Least-privilege access (if applicable)

## Best Practices Summary

1. Use standard labels and annotations
2. Always run as non-root with dropped capabilities
3. Define resource requests and limits
4. Implement all three probe types
5. Pin image tags to specific versions
6. Configure anti-affinity for HA
7. Set Pod Disruption Budgets
8. Use rolling updates with zero unavailability
9. Validate manifests before applying
10. Enable read-only root filesystem when possible

© github · MIT · github/awesome-copilot

Похожие правила IDE

Все правила IDE по теме «DevOps и инфраструктура» →

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

Весь набор →
moodle Правило задаёт Copilot стандарты Moodle: Frankenstyle-неймспейсы, Mustache-шаблоны, обязательные функции безопасности. Пригодится, если пишете плагины и темы. ★ 40 418звёзд репо mongo-dba Настраивает GitHub Copilot для роли администратора MongoDB: помогает управлять кластерами, настраивать индексы, бэкапы и безопасность с учётом MongoDB 7.x+. ★ 40 418звёзд репо mcp-m365-copilot Задаёт правила разработки декларативных агентов и плагинов для Microsoft 365 Copilot на базе Model Context Protocol. Помогает настроить схему, авторизацию и карточки Adaptive Cards. ★ 40 418звёзд репо langchain-python Правило для GitHub Copilot, которое подсказывает агенту паттерны LangChain: Runnable, LCEL, чат-модели, ретриверы и векторные хранилища. Пригодится, если вы пишете на Python с LangChain. ★ 40 418звёзд репо joyride-workspace-automation Настраивает GitHub Copilot для интерактивной автоматизации VS Code на ClojureScript через Joyride. Помогает писать проектные скрипты через REPL прямо внутри редактора. ★ 40 418звёзд репо joyride-user-project Правило помогает разрабатывать проекты Joyride на ClojureScript через REPL и автоматизировать VS Code. Оно пригодится, когда нужно проверить код в среде VS Code до правок файлов. ★ 40 418звёзд репо java-upgrade Правило подсказывает Copilot подключить скилл java-upgrade, когда вы меняете версию Java в Maven или Gradle. Пригодится при переходе между LTS. ★ 40 418звёзд репо java-mcp-server Набор инструкций для разработки MCP-серверов на Java с официальным MCP Java SDK 2.x. Помогает настроить сборку, транспорт и регистрацию инструментов. ★ 40 418звёзд репо

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

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