#!/bin/bash # Reprovision nodepools for HCP workloads cat <<'EOF' | kubectl apply -f - apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: edbpgai spec: disruption: budgets: - nodes: 10% consolidateAfter: 30s consolidationPolicy: WhenEmptyOrUnderutilized template: metadata: labels: edbaiplatform.io/control-plane: "true" spec: expireAfter: 336h nodeClassRef: group: eks.amazonaws.com kind: NodeClass name: default taints: - key: edbaiplatform.io/control-plane value: "true" effect: NoSchedule requirements: - key: karpenter.sh/capacity-type operator: In values: - on-demand - key: eks.amazonaws.com/instance-category operator: In values: - c - m - r - key: eks.amazonaws.com/instance-generation operator: Gt values: - "4" - key: eks.amazonaws.com/instance-cpu operator: Gt values: - "4" - key: kubernetes.io/arch operator: In values: - amd64 - key: kubernetes.io/os operator: In values: - linux terminationGracePeriod: 24h0m0s EOF # Reprovision gp2 storage class kubectl delete storageclass gp2 cat <<'EOF' | kubectl apply -f - apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: annotations: storageclass.kubernetes.io/is-default-class: "true" name: gp2 parameters: encrypted: "true" type: gp2 provisioner: ebs.csi.eks.amazonaws.com reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true EOF # Create a gp3 storage class for EKS cat <<'EOF' | kubectl apply -f - apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: gp3 annotations: storageclass.kubernetes.io/is-default-class: "false" provisioner: ebs.csi.eks.amazonaws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp3 encrypted: "true" EOF # Create a VolumeSnapshotClass for EKS cat <<'EOF' | kubectl apply -f - apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: ebs-snapshotclass annotations: snapshot.storage.kubernetes.io/is-default-class: "true" driver: ebs.csi.eks.amazonaws.com deletionPolicy: Delete EOF