Add eks-upgrade-readiness skill - #48
Conversation
Comprehensive EKS upgrade readiness assessment skill aligned with the AWS EKS Best Practices Guide (cluster-upgrades section). Performs pre-upgrade validation across 11 steps: 1. Cluster context gathering 2. Infrastructure prerequisites (subnet IPs, IAM role, KMS) 3. EKS Upgrade Insights check 4. API deprecation analysis (incl. Dockershim, PSP, in-tree storage) 5. Addon compatibility validation 6. Node group readiness (managed, Karpenter, self-managed, Auto Mode) 7. PDB and TopologySpreadConstraints validation 8. Capacity planning with FDCR/ODCR guidance 9. Fargate pod restart considerations 10. Upgrade plan generation with rollback gates 11. Structured report output Includes reference docs for API deprecations, addon version matrix, capacity planning, and troubleshooting (tools, feature removals, blue-green strategy). Tested: audit 96/100 (Grade A), PASSED. Deployed to DevOps Agent space and validated skill activation and investigation workflow.
…tations: - Three upload options (GitHub import, zip, Asset API) - Example prompts section - Modes table - Safety section - Limitations section - Non-production disclaimer
Updated instructions for importing skills from GitHub and clarified the connection requirements for personal accounts. Enhanced the upload process steps for better clarity.
shyamkulkarni
left a comment
There was a problem hiding this comment.
Thanks for adding this proactive EKS upgrade-readiness skill. The overall direction is valuable, but I recommend addressing the following before treating the result as an authoritative READY/NOT READY decision:
-
Use the EKS Upgrade Insights API as the primary deprecated-API signal. Call
ListInsightswithcategory=UPGRADE_READINESSfor the exact target Kubernetes version, then callDescribeInsightfor each result to collect status, refresh/transition timestamps, affected resources, and recommended actions. Missing, stale, inaccessible, or incomplete insight data must produceUNKNOWN, notPASS. APASSINGinsight should be reported as “no incompatible usage observed by EKS Upgrade Insights,” not proof that no deprecated manifests exist. Supplemental manifest and active Helm-release scanning should cover dormant workloads and rollback artifacts. -
Inventory the complete data plane for version skew.
ListNodegroupsalone is insufficient. UseDescribeNodegroup, Kubernetes Node kubelet versions, and inventory self-managed ASGs, Karpenter/Auto Mode nodes, and Fargate profiles. Explicitly verify that no node is newer than the control plane and that every node remains within supported skew after the target upgrade. -
Derive add-on compatibility from live EKS APIs. Use
DescribeAddonfor current version, health, status, and configuration, andDescribeAddonVersionsfor source and target cluster versions. Detect self-managed VPC CNI, CoreDNS, and kube-proxy rather than relying only onListAddons. The static version table should be a dated fallback, not the compatibility authority. -
Expand AL2 to AL2023 checks beyond
amiType/amiFamily. Inspect managed and self-managed launch templates, custom AMI IDs, and decoded user data for/etc/eks/bootstrap.sh, custom kubelet flags, package/systemd hooks, and multipart MIME assumptions. Validate the AL2023nodeadm/NodeConfigpath, cluster metadata, cgroup v2 and IMDSv2 considerations, and recommend a canary replacement node group before migration. -
Keep assessment read-only. The current read-only claim conflicts with remediation examples such as
helm upgrade, blanket rollout restarts, add-on updates withOVERWRITE, PDB patches, node deletion, and ASG changes. Move mutations into a separate optional remediation section with explicit operator approval, backups, scoped targets, and rollback steps. -
Refine upgrade ordering. Avoid a universal “control plane first” rule. Karpenter, Cluster Autoscaler, admission webhooks, AWS Load Balancer Controller, and similar components may need a version compatible with both source and target before the control-plane update. Distinguish pre-upgrade compatibility remediation from post-upgrade version alignment.
-
Strengthen tests and verdict semantics. Add deterministic cases for N-2/N-3 boundaries, mixed managed/self-managed/Karpenter/Fargate fleets, missing or stale Upgrade Insights, custom AL2 bootstrap user data, managed versus self-managed add-ons, CoreDNS/VPC CNI custom configuration, pagination, and partial
AccessDenied. The overall verdict must not beREADYwhile any required gate isUNKNOWN.
Minor corrections: evaluate only the deployed Helm revision as an active blocker; make CRD checks vendor/version-aware; correct the StatefulSet/PVC and minReadySeconds claims; use the actual managed-node-group update algorithm for capacity; document Kubernetes RBAC and all AWS permissions; fix the README archive name and trailing whitespace.
|
Follow-up with additional coverage areas. Credit where due first: the skill already covers PDBs/topology spread, subnet IP availability, audit logging, Velero backups, in-tree-to-CSI migration, webhook-blocked upgrades, extended-support cost, platform version, and blue-green strategy — that's a solid base. Auditing against a full upgrade-readiness domain checklist, the following areas have no coverage yet. The first five directly affect verdict correctness and would be worth adding in this PR; the rest could be tracked as a follow-up issue. Recommended for this PR:
Candidate follow-up issue:
Happy to help split these into tracked issues if that's the preferred route. |
… v2.0.0 rewrite Address all 7 must-fix items from shyamkulkarni's review: 1. EKS Upgrade Insights as primary signal; UNKNOWN not PASS for missing data 2. Full data plane inventory (MNG, self-managed ASGs, Karpenter, Auto Mode, Fargate) 3. Live DescribeAddon/DescribeAddonVersions; self-managed addon detection 4. AL2→AL2023 comprehensive migration (LT, custom AMI, userdata, cgroup v2, IMDSv2) 5. All mutations in separate Remediation Playbook (Step 14) with operator approval 6. Pre/post-upgrade ordering (Karpenter/CA/webhooks before CP when needed) 7. Deterministic test cases (16 evals covering edge cases, AccessDenied, pagination) Address all 5 recommended additions: - GitOps/IaC version ownership detection (CF/TF/ArgoCD/Flux tags) - VPC CNI networking modes awareness (IPv6, prefix delegation, custom networking) - Autoscaler pause during rotation (Karpenter consolidation + CA scale-down) - Pre-upgrade cluster health baseline (nodes Ready, no CSRs, no crash-loops) - Post-upgrade functional validation (DNS, metrics, scheduling, LB, IRSA) Additional improvements: - Document required IAM permissions and K8s RBAC ClusterRole - AccessDenied handling protocol (UNKNOWN, never PASS) - Pagination requirements throughout - Helm scanning checks deployed revision only - Vendor-aware CRD checks - StatefulSet PVC check corrected (persistentVolumeClaimRetentionPolicy) - MNG update algorithm documented for capacity planning - Verdict rules: CANNOT DETERMINE when any gate is UNKNOWN - Skill expanded from 11 to 17 steps - Trigger evals expanded to 16 (8 positive, 8 negative) - Functional evals expanded to 16 scenarios
…es/required-check-registry.yaml: 60+ checks with IDs across 9 categories, required conditions, API methods, severity levels - Add pre-flight-checks.yaml: blocking vs warning checks, timeouts, soak periods, full rollback conditions - Add EKS rollback awareness (July 2026 feature): 7-day conditional rollback window, eligibility conditions, ROLLBACK_READINESS insights - Expand Karpenter checks from 6 to 14 (KARP-01 to KARP-14): self-hosting, NodeClassRef validation, consolidation interference, drift throughput - Add pre-drain safety (DRAIN-01 to DRAIN-06): bare pods, emptyDir, finalizers, EBS AZ-pinning, webhook deadlock, CoreDNS SPOF - Add management plane detection - Update report format with Evidence Completeness and rollback window
…ines Move detailed content to reference files per contribution guide (max 500 lines): - references/karpenter-checks.md: Full KARP-01 to KARP-14 detection commands - references/pre-drain-safety.md: DRAIN-01 to DRAIN-06 with remediation - references/al2-al2023-migration.md: Bootstrap, cgroup v2, IMDSv2 details - references/data-plane-inventory.md: MNG, self-managed, Karpenter, Fargate SKILL.md is now the concise orchestration document (what to do). Reference files contain the detailed how-to (detection commands, tables). No technical content changed - only reorganized.
Description
Adds a new EKS Upgrade Readiness skill (
skills/eks-upgrade-readiness) that performs comprehensive pre-upgrade assessments aligned with the AWS EKS Best Practices Guide — Cluster Upgrades.What It Does
An 11-step upgrade readiness workflow:
Key Features
describe*,list*,get*APIs. Upgrade actions are recommendations for human approval, never executed.Type of change
License confirmation