Skip to content

Instantly share code, notes, and snippets.

@achetronic
Last active December 15, 2023 11:30
Show Gist options
  • Save achetronic/5e593e3c9033afa4fb0c3464531264e4 to your computer and use it in GitHub Desktop.
Save achetronic/5e593e3c9033afa4fb0c3464531264e4 to your computer and use it in GitHub Desktop.
Delete ownerReferences from all the Secret resources across namespaces in Kubernetes
#!/bin/bash
# Obtener la lista de nombres de todos los namespaces
NAMESPACE_LIST=($(kubectl get namespaces --output=jsonpath='{.items[*].metadata.name}'))
# Bucle externo para recorrer todos los namespaces
for NAMESPACE in "${NAMESPACE_LIST[@]}"
do
echo "NAMESPACE: ${NAMESPACE}"
if [ "$NAMESPACE" == "crossplane-system" ] ||
[ "$NAMESPACE" == "prometheus-node-exporter" ] ||
[ "$NAMESPACE" == "prometheus-agent" ] ||
[ "$NAMESPACE" == "kyverno-system" ] ||
[ "$NAMESPACE" == "kubelet-exporter" ] ||
[ "$NAMESPACE" == "kube-system" ] ||
[ "$NAMESPACE" == "kube-state-metrics" ] ||
[ "$NAMESPACE" == "kube-public" ] ||
[ "$NAMESPACE" == "kube-node-lease" ] ||
[ "$NAMESPACE" == "grafana-agent" ] ||
[ "$NAMESPACE" == "ingress-nginx" ] ||
[ "$NAMESPACE" == "external-secrets" ] ||; then
echo "[INFO] SKIPPED"
continue
fi
# Obtener la lista de nombres de todos los secretos en el namespace
SECRET_NAMES=($(kubectl get secrets -n "$NAMESPACE" --output=jsonpath='{.items[*].metadata.name}'))
# Bucle interno para eliminar la referencia de propietario de cada secreto
for SECRET_NAME in "${SECRET_NAMES[@]}"
do
# Obtener el secreto y eliminar el campo ownerReferences
kubectl patch secret "$SECRET_NAME" -n "$NAMESPACE" --type=json -p="[{'op': 'remove', 'path': '/metadata/ownerReferences'}]"
echo "Se eliminó la referencia de propietario para el secreto $SECRET_NAME en el namespace $NAMESPACE"
done
printf "\n\n"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment