--- name: aws-eks description: Amazon Elastic Kubernetes Service (EKS) for running Kubernetes on AWS. Use for container orchestration, deploying applications, managing clusters, and Kubernetes workloads on AWS. --- # AWS EKS (Amazon Elastic Kubernetes Service) Skill Comprehensive assistance with Amazon EKS development, cluster management, and Kubernetes workloads on AWS. ## When to Use This Skill Trigger this skill when working with: ### Cluster Operations - Creating, configuring, or managing EKS clusters - Setting up EKS Auto Mode clusters for simplified compute management - Configuring cluster networking (IPv4/IPv6, VPC, subnets) - Managing cluster access controls and IAM roles - Enabling cluster features (logging, encryption, zonal shift) ### Add-ons & Extensions - Installing or managing Amazon EKS add-ons (VPC CNI, CoreDNS, kube-proxy, CSI drivers) - Working with community add-ons (Metrics Server, Prometheus, Cert Manager) - Configuring add-on permissions and service accounts - Running critical add-ons on dedicated system nodes ### Application Deployment - Deploying containerized applications to EKS - Creating Kubernetes deployments, services, and ingresses - Configuring Horizontal Pod Autoscaler for scaling - Managing workload namespaces and resource allocation ### Networking & Storage - Configuring VPC CNI and pod networking - Setting up IPv6 addressing for pods and services - Integrating storage (EBS, EFS, FSx) with CSI drivers - Managing Application Load Balancers with AWS Load Balancer Controller ### Monitoring & Observability - Setting up Prometheus or CloudWatch monitoring - Using the EKS observability dashboard - Configuring control plane logs and metrics - Troubleshooting cluster health issues ## Key Concepts ### EKS Cluster Types - **Standard EKS**: Traditional cluster where you manage nodes and compute - **EKS Auto Mode**: Simplified management where AWS handles compute provisioning, lifecycle, and optimization - **EKS with Fargate**: Serverless compute for pods without managing nodes ### Node Pools (EKS Auto Mode) - **General-purpose**: For standard application workloads - **System**: Dedicated nodes for critical add-ons with `CriticalAddonsOnly` taint ### Add-on Types - **AWS Add-ons**: Built and supported by AWS (VPC CNI, CoreDNS, kube-proxy, CSI drivers) - **Community Add-ons**: Validated for compatibility but community-supported (Metrics Server, Prometheus) ### IAM Integration - **Cluster IAM Role**: Permissions for EKS control plane to manage AWS resources - **Node IAM Role**: Permissions for worker nodes (EC2 instances) - **IRSA (IAM Roles for Service Accounts)**: Pod-level IAM permissions via OIDC ## Quick Reference ### Example 1: Create Basic EKS Cluster with eksctl ```bash # Simple cluster creation with default settings eksctl create cluster --name my-cluster --region us-west-2 # With specific node configuration eksctl create cluster \ --name my-cluster \ --region us-west-2 \ --nodegroup-name standard-workers \ --node-type t3.medium \ --nodes 3 \ --nodes-min 1 \ --nodes-max 4 ``` **Use when**: Starting a new EKS cluster quickly with standard configuration. --- ### Example 2: Create EKS Auto Mode Cluster ```bash # Command-line approach eksctl create cluster --name auto-cluster --enable-auto-mode # YAML configuration approach apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: my-auto-cluster region: us-west-2 autoModeConfig: enabled: true # Leave nodePools empty for defaults (general-purpose, system) nodePools: [] ``` **Use when**: You want AWS to manage compute resources automatically without configuring node groups. --- ### Example 3: Deploy Sample Application ```bash # Create namespace kubectl create namespace eks-sample-app # Deploy application kubectl apply -n eks-sample-app -f - < eks-cluster-role-trust-policy.json <