@@ -161,28 +161,45 @@ func (o *options) run(cmd *cobra.Command) error {
161161 return fmt .Errorf ("failed to build clients: %w" , err )
162162 }
163163
164+ // Accumulate errors from cleanup steps - continue on failure to clean up as much as possible
165+ var errs []error
166+
164167 if err = deleteKarpenterNodePools (ctx , clients ); err != nil {
165168 log .Printf ("Warning: failed to delete NodePools: %v" , err )
169+ errs = append (errs , fmt .Errorf ("NodePool deletion: %w" , err ))
166170 }
167171
168172 if err = deleteKarpenterEC2NodeClasses (ctx , clients ); err != nil {
169173 log .Printf ("Warning: failed to delete EC2NodeClasses: %v" , err )
174+ errs = append (errs , fmt .Errorf ("EC2NodeClass deletion: %w" , err ))
170175 }
171176
172177 if err = waitForKarpenterNodesToTerminate (ctx , clients , clusterName ); err != nil {
173178 log .Printf ("Warning: failed to wait for Karpenter nodes to terminate: %v" , err )
179+ errs = append (errs , fmt .Errorf ("node termination wait: %w" , err ))
174180 }
175181
176182 if err = o .uninstallHelmChart (ctx , karpenterNamespace ); err != nil {
177183 log .Printf ("Warning: failed to uninstall Helm chart: %v" , err )
184+ errs = append (errs , fmt .Errorf ("Helm uninstall: %w" , err ))
178185 }
179186
180187 if err = removeAwsAuthConfigMapRole (ctx , clients , clusterName ); err != nil {
181188 log .Printf ("Warning: failed to remove aws-auth role: %v" , err )
189+ errs = append (errs , fmt .Errorf ("aws-auth role removal: %w" , err ))
182190 }
183191
184192 if err = deleteCloudFormationStacks (ctx , clients , clusterName ); err != nil {
185193 log .Printf ("Warning: failed to delete CloudFormation stacks: %v" , err )
194+ errs = append (errs , fmt .Errorf ("CloudFormation stack deletion: %w" , err ))
195+ }
196+
197+ if len (errs ) > 0 {
198+ msg = "Uninstall completed with errors. Some resources may not have been cleaned up."
199+ cmd .Println ("╭─" + strings .Repeat ("─" , len (msg )) + "─╮" )
200+ cmd .Println ("│ " + msg + " │" )
201+ cmd .Println ("╰─" + strings .Repeat ("─" , len (msg )) + "─╯" )
202+ return fmt .Errorf ("uninstall encountered %d error(s):\n %w" , len (errs ), errors .Join (errs ... ))
186203 }
187204
188205 msg = "Karpenter uninstalled from cluster " + clusterName + "."
0 commit comments