ai-governance
Generate and enforce policy gates for AI coding agents (Copilot, Claude Code) — real-time session hooks that deny protected-path edits and dangerous commands,…
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
> /plugin marketplace add nitinjain999/platform-skills > /plugin install platform-skills@platform-skills
How it fires
How this command gets triggered: by you, by Claude, or both.
/karpenterContext preview
What this command does when you run it.
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 session hooks that deny protected-path edits and dangerous commands,…
Generate, convert, and maintain animated GitHub-safe Markdown documents with animated SVG diagrams. Covers four SVG patterns (architecture flow, lifecycle…
AWS profile management for MCP servers — discover profiles across SSO, Granted, and assumed-role chains, check credential TTL, switch profiles across VS Code…
Structured guidance for AWS CloudFront distributions, WAF web ACLs, Lambda@Edge, CloudFront Functions, Firewall Manager multi-account enforcement, and IAM/IRSA…
Azure identity (Workload Identity, OIDC, Entra ID), resource tagging, AKS platform patterns, RBAC scoping, and production-readiness review — with Terraform…
Design, run, and debug Chaos Engineering experiments on Kubernetes using Litmus Chaos v3 and Chaos Mesh v2. Covers fault injection (pod-delete, network-loss,…