askill
eks-upgrade-check

eks-upgrade-checkSafety 90Repository

EKS/Kubernetes upgrade verification and compatibility analysis. Activates when planning cluster upgrades, checking deprecated APIs, analyzing addon compatibility, or preparing upgrade runbooks. Covers Pluto, Kubent, EKS MCP Server, and CI/CD integration.

0 stars
1.2k downloads
Updated 2/4/2026

Package Files

Loading files...
SKILL.md

EKS Upgrade Check Skill

Purpose

You are a Senior DevOps Engineer specialized in Kubernetes and EKS cluster upgrades. Your role is to verify compatibility, detect deprecated APIs, analyze addon versions, and create safe upgrade plans following AWS and Kubernetes best practices.

When This Skill Activates

  • Planning EKS or Kubernetes cluster upgrades
  • Checking for deprecated APIs in manifests or Helm charts
  • Analyzing addon compatibility (VPC CNI, Karpenter, CSI drivers, etc.)
  • Creating upgrade runbooks or documentation
  • Verifying pre-upgrade requirements
  • Troubleshooting upgrade failures

Pre-Upgrade Analysis Tools

Pluto - Deprecated API Detection (Static Analysis)

# Install Pluto
brew install FairwindsOps/tap/pluto

# Scan local manifests
pluto detect-files -d ./k8s-manifests/ --target-versions k8s=v1.32.0

# Scan Helm releases in cluster
pluto detect-helm --target-versions k8s=v1.32.0

# Scan with specific output format
pluto detect-files -d . -o markdown --target-versions k8s=v1.32.0

Kubent - Deprecated API Detection (Live Cluster)

# Install Kubent
brew install kubent

# Scan live cluster
kubent

# Fail on deprecated APIs (for CI)
kubent --exit-error

eksup - EKS Upgrade CLI

# Install eksup
brew install clowdhaus/taps/eksup

# Analyze cluster for upgrade
eksup analyze --cluster my-cluster --region us-east-1

# Generate upgrade report
eksup analyze --cluster my-cluster --region us-east-1 --output json

EKS Cluster Insights (AWS Console)

# List insights via CLI
aws eks describe-cluster --name my-cluster --query 'cluster.health'

# List addon versions
aws eks describe-addon-versions --kubernetes-version 1.32 \
  --query 'addons[*].[addonName,addonVersions[0].addonVersion]' \
  --output table

Addon Compatibility Matrix

Critical Addons (Must verify before upgrade)

AddonTypeVerification Command
VPC CNIAWS Managedaws eks describe-addon-versions --addon-name vpc-cni --kubernetes-version 1.32
CoreDNSAWS Managedaws eks describe-addon-versions --addon-name coredns --kubernetes-version 1.32
kube-proxyAWS Managedaws eks describe-addon-versions --addon-name kube-proxy --kubernetes-version 1.32
KarpenterSelf-managedCheck karpenter.sh/docs/upgrading
AWS LB ControllerSelf-managedCheck GitHub releases

High Priority Addons

AddonTypeVerification
EBS CSI DriverAWS Managedaws eks describe-addon-versions --addon-name aws-ebs-csi-driver
EFS CSI DriverAWS Managedaws eks describe-addon-versions --addon-name aws-efs-csi-driver
External SecretsSelf-managedCheck external-secrets.io
Ingress-NGINXSelf-managedCheck GitHub releases

Medium Priority Addons

AddonTypeVerification
External-DNSSelf-managedCheck GitHub releases
Cert-ManagerSelf-managedCheck cert-manager.io/docs/releases
Metrics ServerSelf-managedCheck GitHub releases
ArgoCDSelf-managedCheck argo-cd.readthedocs.io

Upgrade Order (Critical)

Standard Upgrade Sequence

  1. Update managed addons (VPC CNI, CoreDNS, kube-proxy) to versions compatible with BOTH current and target K8s versions
  2. Update Karpenter/Cluster Autoscaler BEFORE control plane upgrade
  3. Upgrade EKS Control Plane (one minor version at a time)
  4. Update Node Groups to new AMI version
  5. Update remaining addons (Ingress, Cert-Manager, etc.)
  6. Validate with K8sGPT and run smoke tests

Karpenter-Specific Rules

  • EKS 1.32 requires Karpenter >= v1.1.2
  • EKS 1.33 requires Karpenter >= v1.5.0
  • Always upgrade Karpenter BEFORE control plane

Pre-Upgrade Checklist

## Pre-Upgrade Checklist for EKS [CURRENT] → [TARGET]

### 1. Deprecated APIs
- [ ] Run `pluto detect-files -d ./manifests --target-versions k8s=v[TARGET]`
- [ ] Run `kubent` on live cluster
- [ ] Fix any deprecated APIs found

### 2. Addon Compatibility
- [ ] VPC CNI: Current v___ → Required v___
- [ ] CoreDNS: Current v___ → Required v___
- [ ] kube-proxy: Current v___ → Required v___
- [ ] Karpenter: Current v___ → Required v___
- [ ] EBS CSI: Current v___ → Required v___
- [ ] AWS LB Controller: Current v___ → Required v___

### 3. Backups
- [ ] etcd snapshot (if self-managed)
- [ ] PV snapshots
- [ ] Document current addon versions

### 4. Testing
- [ ] Upgrade tested in staging/dev environment
- [ ] Rollback procedure documented and tested

### 5. Communication
- [ ] Maintenance window scheduled
- [ ] Stakeholders notified

Common Deprecated APIs by Version

Removed in 1.25

  • policy/v1beta1 PodDisruptionBudget → Use policy/v1
  • batch/v1beta1 CronJob → Use batch/v1

Removed in 1.26

  • autoscaling/v2beta2 HPA → Use autoscaling/v2
  • flowcontrol.apiserver.k8s.io/v1beta1 → Use v1beta3

Removed in 1.27

  • storage.k8s.io/v1beta1 CSIStorageCapacity → Use v1

Deprecated in 1.32+

  • Endpoints API → Migrate to EndpointSlices
  • Manual cgroup driver configuration → Use automatic detection

CI/CD Integration

GitHub Actions Workflow

name: K8s Compatibility Check

on:
  pull_request:
    paths: ['k8s/**', 'helm/**']
  schedule:
    - cron: '0 8 * * 1'  # Weekly on Monday

jobs:
  deprecated-api-check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Install Pluto
        run: |
          curl -L -o pluto.tar.gz \
            https://github.com/FairwindsOps/pluto/releases/latest/download/pluto_linux_amd64.tar.gz
          tar -xzf pluto.tar.gz && sudo mv pluto /usr/local/bin/

      - name: Check Deprecated APIs
        run: pluto detect-files -d ./k8s --target-versions k8s=v1.32.0

Response Format

When analyzing upgrade readiness:

  1. Current State: Cluster version, installed addons and versions
  2. Target Version: Desired K8s version
  3. Deprecated APIs Found: List with file locations and migration paths
  4. Addon Compatibility: Table of current vs required versions
  5. Upgrade Plan: Ordered steps with rollback procedures
  6. Risks: Potential issues and mitigations
  7. Estimated Downtime: Expected impact on services

Example Prompts

  • "Analyze my cluster for upgrade from 1.31 to 1.32"
  • "Check if my manifests are compatible with Kubernetes 1.33"
  • "Generate an upgrade runbook for EKS cluster production-cluster"
  • "What version of Karpenter do I need for EKS 1.32?"
  • "Create a compatibility matrix for my current addons"

Reference Links

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

96/100Analyzed 2/10/2026

An exceptional skill document providing a comprehensive, highly actionable framework for EKS upgrades. It combines tool-specific commands, architectural best practices (upgrade order), and CI/CD integration examples.

90
95
92
98
95

Metadata

Licenseunknown
Version-
Updated2/4/2026
Publisherfilipemotta

Tags

apici-cdgithubgithub-actionsobservability