Skip to content

Commit e755cd3

Browse files
committed
enhance Karpenter cleanup process by scaling down all workloads and deleting LoadBalancer services
1 parent ac454c2 commit e755cd3

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

.github/workflows/destroy.yml

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,33 @@ jobs:
8484
# Delete Karpenter Resources (Updated)
8585
# ---------------------------
8686

87-
- name: Scale down to release nodes first
87+
# Replace the Karpenter cleanup section in your workflow with this enhanced version
88+
89+
# ---------------------------
90+
# Scale down workloads FIRST
91+
# ---------------------------
92+
- name: Scale down all workloads before cleanup
8893
run: |
89-
kubectl scale deployment --all --replicas=0 -n ${{ vars.APP_NAMESPACE }} || true
90-
sleep 30 # Let Karpenter scale down naturally
91-
continue-on-error: true
94+
echo "Scaling down all deployments and deleting services to trigger LB cleanup..."
95+
96+
# Scale down ALL deployments across ALL namespaces (not just app namespace)
97+
kubectl get deployments --all-namespaces -o json | jq -r '.items[] | "\(.metadata.namespace) \(.metadata.name)"' | while read namespace deployment; do
98+
echo "Scaling down deployment $deployment in namespace $namespace"
99+
kubectl scale deployment $deployment --replicas=0 -n $namespace || true
100+
done
101+
102+
# Scale down daemonsets that might be running
103+
kubectl get daemonsets --all-namespaces -o json | jq -r '.items[] | "\(.metadata.namespace) \(.metadata.name)"' | while read namespace daemonset; do
104+
echo "Deleting daemonset $daemonset in namespace $namespace"
105+
kubectl delete daemonset $daemonset -n $namespace --ignore-not-found || true
106+
done
107+
108+
# Delete ALL services of type LoadBalancer IMMEDIATELY
109+
echo "Deleting LoadBalancer services..."
110+
kubectl get services --all-namespaces -o json | jq -r '.items[] | select(.spec.type=="LoadBalancer") | "\(.metadata.namespace) \(.metadata.name)"' | while read namespace service; do
111+
echo "Deleting service $service in namespace $namespace"
112+
kubectl delete service $service -n $namespace --ignore-not-found || true
113+
done
92114
93115
- name: Delete Karpenter Provisioners and AWSNodeTemplates
94116
run: |

0 commit comments

Comments
 (0)