This example demonstrates advanced EKS cluster management using custom nodeclasses and nodepools with CloudPilot AI's intelligent rebalancing and optimization features.
By default, optimization is not enabled. You can enable optimization features by modifying the variables in terraform.tfvars and re-applying.
- Custom nodeclass definitions with specific resource allocations
- Advanced nodepool configuration with instance type filtering
- Comprehensive rebalance and optimization settings
- GPU support and specialized instance configurations
- Zone-specific deployments and disruption controls
- Custom Node Classes: Define node specifications for different workload types
- Instance Filtering: Control CPU, memory, and instance family selection
- Capacity Management: Mix on-demand and spot instances intelligently
- Disruption Controls: Configure node replacement timing and limits
- Architecture Support: Target specific architectures (amd64, arm64)
- Terraform - Version 1.0 or later
- AWS CLI - Install and configure the AWS CLI with credentials that have EKS cluster management permissions. Required for EKS-related operations such as updating kubeconfig. If you haven't created an EKS cluster yet, see the example setup: eks-ondemand
- Kubectl - For cluster operations and component management
- CloudPilot AI API key - See CloudPilot AI API Key Documentation for setup instructions
-
Configure your variables:
cp terraform.tfvars.example terraform.tfvars
Edit
terraform.tfvarswith your values:cloudpilot_api_key: Your CloudPilot AI API keycluster_name: Your EKS cluster nameregion: AWS region where your cluster is locatedrestore_node_number: Node count for cluster restoration
-
Review and customize node configuration in
main.tf:nodeclasses: Customize node specificationsnodepools: Adjust instance filtering and priorities
-
Apply the configuration:
terraform init terraform plan terraform apply
This installs the CloudPilot AI agent and configures nodeclasses/nodepools without enabling optimization.
When you're ready to enable optimization features, edit terraform.tfvars:
enable_rebalance = trueThen re-apply:
terraform plan
terraform applyinstance_tags: Custom tags for provisioned nodessystem_disk_size_gib: Storage configurationextra_cpu_allocation_mcore: Additional CPU for burstable workloadsextra_memory_allocation_mib: Additional memory allocation
provision_priority: Priority levels for different poolsinstance_arch: Target architectures (amd64, arm64)instance_family: Specific EC2 instance familiescapacity_type: Mix of on-demand and spot instancesinstance_cpu_min/instance_cpu_max: CPU core filteringinstance_memory_min/instance_memory_max: Memory filteringnode_disruption_limit: Maximum concurrent node replacementsnode_disruption_delay: Wait time before replacing underutilized nodes
- Multi-workload Clusters: Different node types for different applications
- Cost Optimization: Intelligent spot instance usage
- Performance Tuning: Specific instance types for specific workloads
- High Availability: Zone distribution and disruption controls
See the main.tf file for detailed configuration with comprehensive inline comments.