Skip to main content

kubernetes-deployment

Implements apps/v1 Deployment YAML manifests with rolling update strategies, replica scaling, and rollback procedures for stateless application workloads.

インストールへ移動

ソース情報

リポジトリ
paulpas/agent-skill-router
ソースの最終更新活動
2026年7月14日 16:08
検出された SKILL.md の言語
英語
スター
4
フォーク
1

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
kubernetes-deployment
description
Implements apps/v1 Deployment YAML manifests with rolling update strategies, replica scaling, and rollback procedures for stateless application workloads.
license
MIT
compatibility
opencode
metadata
{"version":"1.0.0","domain":"cncf","triggers":"rolling update, replica count, deployment strategy, rollback, apps/v1, deployment rollout, kubernetes deployment","archetypes":["tactical","generation"],"anti_triggers":["stateful persistence","stable network identity","ordered pod lifecycle"],"response_profile":{"verbosity":"low","directive_strength":"high","abstraction_level":"operational"},"role":"implementation","scope":"implementation","output-format":"code","content-types":["code","guidance","config","do-dont"],"related-skills":"cncf/kubernetes-deployment, cncf/kubernetes-services-management, cncf/kubernetes-configmap"}
# Kubernetes Deployment Manager Implements apps/v1 Deployment YAML manifests for stateless application workloads with rolling update strategies, replica management, and controlled rollback procedures. When loaded, the model generates production-grade Deployment resources with proper strategy configuration, health probes, and rollout monitoring. ## TL;DR Checklist - [ ] Use `apps/v1` API version — never `extensions/v1beta1` or `apps/v1beta1` - [ ] Set `strategy.type: RollingUpdate` with explicit `maxSurge` and `maxUnavailable` - [ ] Define `minReadySeconds` to prevent premature rollout of next batch - [ ] Include `livenessProbe` and `readinessProbe` with appropriate initial delays - [ ] Never use `strategy.type: Recreate` for zero-downtime deployments - [ ] Verify rollout status with `kubectl rollout status` before proceeding --- ## When to Use Use this skill when: - Creating a Deployment manifest for a stateless application (web servers, API services, worker processes) - Configuring rolling update parameters to control rollout speed and safety - Implementing rollback procedures for failed deployments - Scaling replica count for horizontal capacity adjustments - Managing deployment strategy for blue-green or canary deployment patterns --- ## When NOT to Use Avoid this skill for: - Stateful applications requiring stable network IDs — use `kubernetes-statefulset` instead - Pods needing guaranteed ordering during creation/deletion — use `kubernetes-statefulset` instead - Persistent storage per replica — use `kubernetes-persistentvolume` with StatefulSet - Single-instance workloads that should never run in parallel — consider a Job instead --- ## Core Workflow 1. **Determine Deployment Requirements** — Identify replica count, container image, ports, and resource limits. **Checkpoint:** Verify the application is stateless (no local disk writes, no sticky sessions) — if not, StatefulSet is required. 2. **Define Pod Template Spec** — Create the `spec.template.spec` with containers, ports, environment variables, volume mounts, and security context. **Checkpoint:** Every container must have a `livenessProbe` and `readinessProbe` configured. 3. **Configure Rolling Update Strategy** — Set `strategy.type: RollingUpdate` with `rollingUpdate.maxSurge` and `rollingUpdate.maxUnavailable`. **Checkpoint:** `maxSurge` and `maxUnavailable` must sum to no more than 50% of replicas for safe scaling, unless explicitly tolerating temporary excess. 4. **Set Replicas and Selector** — Define `spec.replicas` and a `spec.selector.matchLabels` that matches the pod template labels. **Checkpoint:** Selector labels must exactly match `spec.template.metadata.labels` — mismatched selectors cause deployment rejection. 5. **Create and Validate Manifest** — Apply the manifest with `kubectl apply -f deployment.yaml --dry-run=client` then `kubectl apply -f deployment.yaml`. **Checkpoint:** Run `kubectl rollout status deploy/<name>` and verify all pods reach Ready state. 6. **Plan Rollback Path** — Keep the previous revision history available. Use `kubectl rollout undo deploy/<name>` if the new version shows errors. **Checkpoint:** Monitor pod logs and metrics during the first 60 seconds after each rollout. --- ## Implementation Patterns ### Pattern 1: Production-Grade Deployment Manifest A complete Deployment with rolling update strategy, health probes, resource limits, and proper labeling for service discovery. ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: web-frontend namespace: production labels: app: web-frontend tier: frontend version: v2.1.0 spec: replicas: 3 revisionHistoryLimit: 5 selector: matchLabels: app: web-frontend tier: frontend strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 0 minReadySeconds: 30 template: metadata: labels: app: web-frontend tier: frontend version: v2.1.0 spec: terminationGracePeriodSeconds: 30 securityContext: runAsNonRoot: true runAsUser: 1000 fsGroup: 1000 containers: - name: web-frontend image: registry.example.com/web-frontend:2.1.0 ports: - containerPort: 8080 protocol: TCP name: http env: - name: APP_ENV value: production - name: LOG_LEVEL valueFrom: configMapKeyRef: name: app-config key: log-level resources: requests: cpu: 250m memory: 256Mi limits: cpu: 500m memory: 512Mi livenessProbe: httpGet: path: /healthz port: 8080 initialDelaySeconds: 15 periodSeconds: 10 timeoutSeconds: 3 failureThreshold: 3 readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 5 periodSeconds: 5 timeoutSeconds: 2 failureThreshold: 3 volumeMounts: - name: config-volume mountPath: /etc/app/config readOnly: true volumes: - name: config-volume configMap: name: app-config ``` ### Pattern 2: Rolling Update Strategy Configuration (BAD vs GOOD) Configuring the rolling update strategy incorrectly can cause service downtime or excessive resource usage. ```yaml # ❌ BAD — default strategy causes unpredictable rollout behavior # maxSurge and maxUnavailable are unset, using defaults (25%/25%) which # may take down too many pods or spin up too many simultaneously. strategy: type: RollingUpdate # ❌ BAD — Recreate strategy causes full downtime on every deployment strategy: type: Recreate # ✅ GOOD — explicit RollingUpdate with conservative safety parameters strategy: type: RollingUpdate rollingUpdate: maxSurge: 1 # Only add 1 extra pod during rollout maxUnavailable: 0 # Never reduce below desired replica count minReadySeconds: 30 # Wait 30s after pod becomes ready before proceeding # ✅ GOOD — aggressive strategy for development environments with low risk strategy: type: RollingUpdate rollingUpdate: maxSurge: 2 maxUnavailable: 1 minReadySeconds: 5 ``` ### Pattern 3: Deployment Rollback Procedure Programmatic rollback logic using kubectl commands and manifest versioning. ```yaml # Rollback to previous revision # kubectl rollout undo deployment/web-frontend -n production # Rollback to a specific revision (if history is preserved) # kubectl rollout undo deployment/web-frontend -n production --to-revision=2 # View rollout history # kubectl rollout history deployment/web-frontend -n production # View details of a specific revision # kubectl rollout history deployment/web-frontend -n production --revision=3 # View rollout status after apply or undo # kubectl rollout status deployment/web-frontend -n production --timeout=120s # Pause and resume rollouts for manual approval gates # kubectl rollout pause deployment/web-frontend -n production # kubectl rollout resume deployment/web-frontend -n production ``` ```python def check_deployment_healthy(name: str, namespace: str, timeout_seconds: int = 120) -> bool: """Check if a Deployment rollout completed successfully. Uses kubectl rollout status to verify all pods are Ready. Returns True if healthy, False if timeout or failure detected. Args: name: Deployment name. namespace: Kubernetes namespace. timeout_seconds: Maximum time to wait for rollout. Returns: True if rollout completed successfully, False otherwise. """ import subprocess try: result = subprocess.run( ["kubectl", "rollout", "status", f"deploy/{name}", "-n", namespace, f"--timeout={timeout_seconds}s"], capture_output=True, text=True, timeout=timeout_seconds + 10 ) return result.returncode == 0 and "successfully rolled out" in result.stdout except subprocess.TimeoutExpired: return False except FileNotFoundError: return False ``` --- ## Constraints ### MUST DO - Always use `apps/v1` API version — never `extensions/v1beta1` or `apps/v1beta1` (both are removed in Kubernetes 1.16+) - Set explicit `strategy.type: RollingUpdate` with concrete `maxSurge` and `maxUnavailable` values - Define both `livenessProbe` and `readinessProbe` on every container — never rely on defaults - Use `resources.requests` and `resources.limits` on every container for proper scheduling and QoS - Include `terminationGracePeriodSeconds` (≥ 30s for graceful shutdown) in the pod spec - Match `spec.selector.matchLabels` exactly to `spec.template.metadata.labels` - Set `revisionHistoryLimit: 5` to preserve rollout history for rollbacks - Use `minReadySeconds` (≥ 15s) to ensure pods are truly ready before the next batch starts ### MUST NOT DO - Never use `strategy.type: Recreate` for production stateless workloads — it causes full downtime - Never omit `livenessProbe` or `readinessProbe` — the node cannot detect unhealthy pods otherwise - Never set `maxUnavailable` to the total replica count — this allows complete outage during rollout - Never use `latest` tag in production images — always pin to a specific image digest or semver tag - Never set `terminationGracePeriodSeconds: 0` — in-flight requests will be dropped on pod deletion - Never match selector labels to pods outside this Deployment — it can cause unexpected pod management --- ## Output Template When implementing a Kubernetes Deployment, produce the following: 1. **Deployment YAML** — Complete `apps/v1` Deployment manifest with `metadata`, `spec.replicas`, `spec.strategy`, `spec.selector`, and `spec.template` fully defined. 2. **Strategy Rationale** — Brief explanation of chosen `maxSurge`, `maxUnavailable`, and `minReadySeconds` values relative to the replica count. 3. **Probe Configuration** — Document the health check endpoints, intervals, and thresholds for liveness and readiness probes. 4. **Rollback Plan** — Command sequence for undoing the deployment if issues arise, including the revision number to target. --- ## Related Skills | Skill | Purpose | |---|---| | `kubernetes-services-management` | Expose the Deployment via ClusterIP, NodePort, or LoadBalancer service | | `kubernetes-ingress` | Route external HTTP/HTTPS traffic to the Deployment's service | | `kubernetes-configmap` | Inject configuration data into the Deployment via env vars or volume mounts | | `kubernetes-statefulset` | Deploy stateful applications that need stable network identities and persistent storage | --- ## Live References > Authoritative documentation links for this skill's domain. The model follows markdown links at load time to resolve external references and inline content. - [Kubernetes Deployments Documentation](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) — Official guide to Deployment concepts, strategies, and lifecycle - [Rolling Updates and Rollbacks](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment) — How rolling updates work and rollback procedures - [Deployment Strategy Types](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy) — RollingUpdate vs Recreate strategy configuration - [Probes Documentation](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes) — Liveness, readiness, and startup probe configuration - [Pod Security Context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) — Security context settings for containers and pods - [Kubernetes API Reference — apps/v1 Deployment](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.32/#deployment-v1-apps) — Complete API schema for Deployment resources - [Resource Management for Pods and Containers](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) — CPU and memory requests/limits configuration
GitHubで見る