ai-governance
Generate and enforce policy gates for AI coding agents (Copilot, Claude Code) — real-time…
Design, install, debug, review, plan capacity, audit scaling history, migrate from Cluster Autoscaler, and upgrade Karpenter v1.x on EKS. Covers NodePool, EC2NodeClass, NodeClaim, Spot diversity, disruption strategy, Pod Identity/IRSA, interruption queue, private clusters, AMI
$ npx -y skills add nitinjain999/platform-skills --skill karpenter --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/karpenterContext preview
The summary Claude sees to decide when to auto-load this skill.
Design, install, debug, review, plan capacity, audit scaling history, migrate from Cluster Autoscaler, and upgrade Karpenter v1.x on EKS. Covers NodePool, EC2NodeClass, NodeClaim, Spot diversity, disruption strategy, Pod Identity/IRSA, interruption queue, private clusters, AMI
name: karpenter description: Design, install, debug, review, plan capacity, audit scaling history, migrate from Cluster Autoscaler, and upgrade Karpenter v1.x on EKS. Covers NodePool, EC2NodeClass, NodeClaim, Spot diversity, disruption strategy, Pod Identity/IRSA, interruption queue, private clusters, AMI rotation, and GitOps integration. Use when asked to "set up Karpenter", "debug why nodes aren't provisioning", "review my NodePool", "what would Karpenter provision for this workload", "why did this node terminate", "migrate from CA", or "upgrade Karpenter". argument-hint: "[generate|debug|review|audit|plan|migrate|upgrade] [description or file path]" title: "Karpenter Command" sidebar_label: "karpenter" custom_edit_url: null
Design, install, debug, review, plan capacity, audit, migrate, and upgrade Karpenter on EKS.
crane ls public.ecr.aws/karpenter/karpenter | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | sort -V | tail -5
All guidance targets the `karpenter.sh/v1` API. The v0.x `Provisioner`/`AWSNodeTemplate` API was removed in v1.0 — if you are on v0.x, use `migrate` mode first.
---
When invoked with no arguments, ask before proceeding:
**Q1 — Mode?**
What do you need? 1. generate — design NodePool and EC2NodeClass from requirements 2. debug — diagnose why nodes are not provisioning or pods are stuck Pending 3. review — production-readiness review of existing NodePool/EC2NodeClass 4. audit — reconstruct scale-out/scale-in history and explain why it happened 5. plan — predict what Karpenter would provision for a given workload before deploying 6. migrate — move from Cluster Autoscaler to Karpenter 7. upgrade — upgrade Karpenter version (including v0.x → v1.x CRD migration) Enter 1–7 or mode name:
**Q2 — Environment context** (ask after mode, one question at a time):
1. EKS cluster version? (e.g. 1.29, 1.30, 1.31)
2. Karpenter version currently installed (or target version for fresh install)?
3. Identity method for Karpenter controller?
a) EKS Pod Identity (recommended, requires EKS 1.24+)
b) IRSA (IAM Roles for Service Accounts)
4. Is this a private cluster (no public API endpoint)? [yes/no]
5. Do you use Spot instances? [yes / no / mixed]
6. Are you migrating from Cluster Autoscaler? [yes/no]Use the answers to set defaults for every section below. If the user pastes a manifest or error, infer as much as possible and skip questions already answered.
---
Design a production-ready NodePool and EC2NodeClass from requirements.
**Steps:**
1. Collect (or infer from context):
2. Generate `EC2NodeClass` with:
> Ask user: "What is your EKS cluster name?" — substitute into `karpenter.sh/discovery: <cluster-name>` before applying.
3. Generate `NodePool` with:
4. Generate companion resources:
5. Show validation:
kubectl apply --dry-run=server -f ec2nodeclass.yaml kubectl apply --dry-run=server -f nodepool.yaml kubectl describe nodepool <name> # check Conditions: Ready=True
Reference: `references/karpenter.md` → NodePool design, EC2NodeClass, IAM
**Rollback:** `kubectl delete nodepool <name> && kubectl delete ec2nodeclass <name>` — Karpenter immediately stops provisioning nodes from these templates. Existing nodes remain until drained by the scheduler or TTL.
---
Diagnose why pods are stuck Pending or nodes are not provisioning.
**Steps:**
1. Collect evidence first — do not suggest fixes before seeing output:
# Pending pods and their scheduling failure reason kubectl get pods -A --field-selector=status.phase=Pending kubectl descr
A production-grade field handbook for platform, DevOps, SRE, and cloud engineers covering Kubernetes, Flux CD, Terraform, GitHub Actions, AWS, OPA/Rego, KEDA, Karpenter, supply chain security, Falco, observability, and more.
Repo: nitinjain999/platform-skills
Generate and enforce policy gates for AI coding agents (Copilot, Claude Code) — real-time…
Generate, convert, and maintain animated GitHub-safe Markdown documents with animated SVG…
AWS profile management for MCP servers — discover profiles across SSO, Granted, and…
Structured guidance for AWS CloudFront distributions, WAF web ACLs, Lambda@Edge, CloudFront…
Azure identity (Workload Identity, OIDC, Entra ID), resource tagging, AKS platform patterns,…
Back up and restore Kubernetes workloads with Velero, and prove recovery works. Covers Velero…