Skip to content

Commit ee253c1

Browse files
committed
Ignore 'no matches for kind' errors when deleting karpenter CRs
1 parent 9c40a84 commit ee253c1

File tree

1 file changed

+7
-17
lines changed

1 file changed

+7
-17
lines changed

controllers/karpentermachinepool_controller.go

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/go-logr/logr"
1414
v1 "k8s.io/api/core/v1"
1515
k8serrors "k8s.io/apimachinery/pkg/api/errors"
16+
"k8s.io/apimachinery/pkg/api/meta"
1617
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
1718
"k8s.io/apimachinery/pkg/runtime/schema"
1819
capa "sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2"
@@ -37,12 +38,9 @@ import (
3738

3839
const (
3940
BootstrapDataHashAnnotation = "giantswarm.io/userdata-hash"
41+
EC2NodeClassAPIGroup = "karpenter.k8s.aws"
4042
KarpenterFinalizer = "capa-operator.finalizers.giantswarm.io/karpenter-controller"
4143
S3ObjectPrefix = "karpenter-machine-pool"
42-
// KarpenterNodePoolReadyCondition reports on current status of the autoscaling group. Ready indicates the group is provisioned.
43-
KarpenterNodePoolReadyCondition capi.ConditionType = "KarpenterNodePoolReadyCondition"
44-
// WaitingForBootstrapDataReason used when machine is waiting for bootstrap data to be ready before proceeding.
45-
WaitingForBootstrapDataReason = "WaitingForBootstrapData"
4644
// NodePoolCreationFailedReason indicates that the NodePool creation failed
4745
NodePoolCreationFailedReason = "NodePoolCreationFailed"
4846
// EC2NodeClassCreationFailedReason indicates that the EC2NodeClass creation failed
@@ -380,7 +378,7 @@ func (r *KarpenterMachinePoolReconciler) createOrUpdateKarpenterResources(ctx co
380378
// createOrUpdateEC2NodeClass creates or updates the EC2NodeClass resource in the workload cluster
381379
func (r *KarpenterMachinePoolReconciler) createOrUpdateEC2NodeClass(ctx context.Context, logger logr.Logger, workloadClusterClient client.Client, cluster *capi.Cluster, awsCluster *capa.AWSCluster, karpenterMachinePool *v1alpha1.KarpenterMachinePool, bootstrapSecretValue []byte) error {
382380
ec2NodeClassGVR := schema.GroupVersionResource{
383-
Group: "karpenter.k8s.aws",
381+
Group: EC2NodeClassAPIGroup,
384382
Version: "v1",
385383
Resource: "ec2nodeclasses",
386384
}
@@ -396,10 +394,6 @@ func (r *KarpenterMachinePoolReconciler) createOrUpdateEC2NodeClass(ctx context.
396394

397395
// Add security groups tag selector if specified
398396
securityGroupTagsSelector := map[string]string{}
399-
// securityGroupTagsSelector := map[string]string{
400-
// fmt.Sprintf("sigs.k8s.io/cluster-api-provider-aws/cluster/%s", cluster.Name): "owned",
401-
// "sigs.k8s.io/cluster-api-provider-aws/role": "node",
402-
// }
403397
if karpenterMachinePool.Spec.EC2NodeClass != nil && len(karpenterMachinePool.Spec.EC2NodeClass.SecurityGroups) > 0 {
404398
for securityGroupTagKey, securityGroupTagValue := range karpenterMachinePool.Spec.EC2NodeClass.SecurityGroups {
405399
securityGroupTagsSelector[securityGroupTagKey] = securityGroupTagValue
@@ -408,10 +402,6 @@ func (r *KarpenterMachinePoolReconciler) createOrUpdateEC2NodeClass(ctx context.
408402

409403
// Add subnet tag selector if specified
410404
subnetTagsSelector := map[string]string{}
411-
// subnetTagsSelector := map[string]string{
412-
// fmt.Sprintf("sigs.k8s.io/cluster-api-provider-aws/cluster/%s", cluster.Name): "owned",
413-
// "giantswarm.io/role": "nodes",
414-
// }
415405
if karpenterMachinePool.Spec.EC2NodeClass != nil && len(karpenterMachinePool.Spec.EC2NodeClass.Subnets) > 0 {
416406
for subnetTagKey, subnetTagValue := range karpenterMachinePool.Spec.EC2NodeClass.Subnets {
417407
subnetTagsSelector[subnetTagKey] = subnetTagValue
@@ -527,7 +517,7 @@ func (r *KarpenterMachinePoolReconciler) createOrUpdateNodePool(ctx context.Cont
527517
},
528518
},
529519
"nodeClassRef": map[string]interface{}{
530-
"group": "karpenter.k8s.aws",
520+
"group": EC2NodeClassAPIGroup,
531521
"kind": "EC2NodeClass",
532522
"name": karpenterMachinePool.Name,
533523
},
@@ -602,14 +592,14 @@ func (r *KarpenterMachinePoolReconciler) deleteKarpenterResources(ctx context.Co
602592
nodePool.SetName(karpenterMachinePool.Name)
603593
nodePool.SetNamespace("default")
604594

605-
if err := workloadClusterClient.Delete(ctx, nodePool); err != nil && !k8serrors.IsNotFound(err) {
595+
if err := workloadClusterClient.Delete(ctx, nodePool); err != nil && !k8serrors.IsNotFound(err) && !meta.IsNoMatchError(err) {
606596
logger.Error(err, "failed to delete NodePool", "name", karpenterMachinePool.Name)
607597
return fmt.Errorf("failed to delete NodePool: %w", err)
608598
}
609599

610600
// Delete EC2NodeClass
611601
ec2NodeClassGVR := schema.GroupVersionResource{
612-
Group: "karpenter.k8s.aws",
602+
Group: EC2NodeClassAPIGroup,
613603
Version: "v1",
614604
Resource: "ec2nodeclasses",
615605
}
@@ -619,7 +609,7 @@ func (r *KarpenterMachinePoolReconciler) deleteKarpenterResources(ctx context.Co
619609
ec2NodeClass.SetName(karpenterMachinePool.Name)
620610
ec2NodeClass.SetNamespace("default")
621611

622-
if err := workloadClusterClient.Delete(ctx, ec2NodeClass); err != nil && !k8serrors.IsNotFound(err) {
612+
if err := workloadClusterClient.Delete(ctx, ec2NodeClass); err != nil && !k8serrors.IsNotFound(err) && !meta.IsNoMatchError(err) {
623613
logger.Error(err, "failed to delete EC2NodeClass", "name", karpenterMachinePool.Name)
624614
return fmt.Errorf("failed to delete EC2NodeClass: %w", err)
625615
}

0 commit comments

Comments
 (0)