#!/bin/bash

# Script para limpiar (deshacer) un clúster de Kubernetes configurado con containerd en sistemas CentOS/RHEL

# Salir inmediatamente si ocurre un error
set -e

# Función para mostrar mensajes de información
echo_info() {
    echo -e "\e[32m[INFO]\e[0m $1"
}

# Función para mostrar mensajes de error
echo_error() {
    echo -e "\e[31m[ERROR]\e[0m $1" >&2
}

# Verificar si el script se está ejecutando como root
if [ "$(id -u)" -ne 0 ]; then
    echo_error "Este script debe ejecutarse como root o con sudo."
    exit 1
fi

echo_info "=== Inicio del proceso de limpieza del clúster de Kubernetes ==="

# 1. Detener y deshabilitar servicios de Kubernetes
echo_info "Deteniendo y deshabilitando el servicio kubelet..."
systemctl stop kubelet
systemctl disable kubelet

# 2. Resetear el clúster de Kubernetes
echo_info "Reseteando el clúster de Kubernetes con kubeadm..."
kubeadm reset -f

# 3. Detener y deshabilitar containerd
echo_info "Deteniendo y deshabilitando el servicio containerd..."
systemctl stop containerd
systemctl disable containerd

# 4. Eliminar directorios de configuración de Kubernetes
echo_info "Eliminando directorios de configuración de Kubernetes..."
rm -rf /etc/kubernetes/
rm -rf /var/lib/etcd/
rm -rf /var/lib/kubelet/
rm -rf /var/run/kubernetes/

# 5. Limpiar configuraciones de CNI
echo_info "Eliminando configuraciones de CNI..."
rm -rf /etc/cni/
rm -rf /opt/cni/

# 6. Limpiar reglas de iptables
echo_info "Limpiando reglas de iptables..."
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# 7. Desinstalar paquetes de Kubernetes
echo_info "Desinstalando paquetes de Kubernetes..."
yum remove -y kubelet kubeadm kubectl

# 8. (Opcional) Desinstalar containerd
# Descomenta las siguientes líneas si deseas desinstalar containerd también
# echo_info "Desinstalando containerd..."
# yum remove -y containerd.io

# 9. Eliminar archivos residuales
echo_info "Eliminando archivos residuales..."
rm -rf ~/.kube/
rm -rf /etc/systemd/system/kubelet.service.d/

# 10. Limpiar repositorios de Kubernetes
echo_info "Eliminando repositorios de Kubernetes..."
rm -f /etc/yum.repos.d/kubernetes.repo

# 11. (Opcional) Reiniciar el sistema
# Descomenta la siguiente línea si deseas reiniciar el sistema automáticamente
# echo_info "Reiniciando el sistema..."
# reboot

echo_info "=== Proceso de limpieza del clúster de Kubernetes completado ==="

