Resolving cleanup issues

This page explains how to resolve issues with Cloud Service Mesh managed control plane when using the TRAFFIC_DIRECTOR implementation.

Clean up synthetic services

When using the TRAFFIC_DIRECTOR control plane implementation, Cloud Service Mesh creates synthetic Kubernetes services to support subset. These services are labeled with istio.io/owned-by:gsmconfig.gke.io.

When you unregister a cluster from a Google Cloud fleet, Cloud Service Mesh might not be able to remove these synthetic Kubernetes services.

To mitigate this issue, you can manually remove synthetic Kubernetes services in all namespaces by running the following command:

kubectl delete service -l istio.io/owned-by=gsmconfig.gke.io -A

Clean up network endpoint groups annotations

When using the TRAFFIC_DIRECTOR control plane implementation, Cloud Service Mesh creates network endpoint groups by adding cloud.google.com/neg annotations to services for load balancing.

When you unregister a cluster from a Google Cloud fleet, Cloud Service Mesh might not be able to remove these annotations to clean up the network endpoint groups.

To mitigate this issue, you can manually remove the cloud.google.com/neg annotations from services in all namespaces.

service_names=($(kubectl get service -A -o jsonpath='{.items[*].metadata.name}'))
for service in "${service_names[@]}"; do
  kubectl annotate service $service -A cloud.google.com/neg-
done