Context
I am testing different load balancer implementations in our Kubernetes
clusters and all of them install multiple Custom Resources Definition (CRD)
. Unfortunately, the CRDs
are not automatically removed when the Helm Chart
for the corresponding load balancer is deleted.
Since each load balancer adds several CRDs
objects, I didn’t want to manually delete each individual CRD
resource using the kubectl delete crd
command.
Implementation
To streamline the process, I leveraged PowerShell
to filter and manipulate the output of the k get crds
commands, as shown below:
To delete the CRDs
for a single load balancer:
kubectl get crds |
Select-String kong |
ForEach-Object { ($_ -split "\s")[0] } |
ForEach-Object { kubectl delete crds $_ }
To delete the CRDs
for multiple load balancers at once:
kubectl get crds |
Select-String "istio", "ambassador" |
ForEach-Object { ($_ -split "\s")[0] } |
ForEach-Object { kubectl delete crds $_ }
Note
Before running the full command, I would suggest to remove the ForEach-Object { kubectl delete crds $_ }
line and verify that the output is as expected.