Colección de scripts automatizados para instalación de herramientas esenciales en Kubernetes
K8s-Tools es un conjunto de scripts de Bash que facilitan la instalación y configuración de componentes comunes en clusters de Kubernetes, incluyendo monitoring, almacenamiento dinámico y aplicaciones GitOps.
| Categoría | Componente | Descripción | Script |
|---|---|---|---|
| Monitoring | Kubernetes Dashboard | UI web para gestión visual del cluster | 01-kubernetes-dashboard |
| Monitoring | Metrics Server | Métricas de CPU/memoria para pods y nodos | 01-metrics-server |
| Storage | NFS Provisioner | Aprovisionamiento dinámico de volúmenes NFS | NFS-StorageClass.sh |
| Apps | ArgoCD | Continuous Delivery basado en GitOps | Argocd |
Antes de usar estos scripts, asegúrate de tener:
- ✅ Kubernetes cluster operativo (v1.20+)
- ✅ kubectl instalado y configurado
- ✅ Helm 3 instalado (v3.0+)
- ✅ Acceso admin al cluster (kubeconfig configurado)
- ✅ Servidor NFS accesible (solo para storage NFS)
kubectl version --client helm version kubectl cluster-info
### Configuración
1. **Clona el repositorio** (o descarga los scripts):
```bash
git clone <tu-repo>/K8s-Tools.git
cd K8s-Tools
-
Configura tus variables de entorno:
# Copia el archivo de ejemplo cp config.env.example config.env # Edita config.env con tus valores nano config.env
-
Revisa las versiones de componentes en
versions.conf(opcional).
# Ejemplo: Instalar Kubernetes Dashboard
cd 01-Monitoring/01-kubernetes-dashboard
./kubernetes-dashboard.sh# 1. Storage (requerido para otros componentes)
./02-Storage/NFS-StorageClass.sh
# 2. Monitoring
./01-Monitoring/01-metrics-server/metrics-server.sh
./01-Monitoring/01-kubernetes-dashboard/kubernetes-dashboard.sh
# 3. Applications
./03-Apps/Argocd/01-argo_cd.shDespués de instalar componentes, verifica que todo funcione:
# Ejecutar script de validación
./scripts/validate.shEl archivo config.env (creado desde config.env.example) contiene todas las variables configurables:
# Ejemplo de configuración NFS
NFS_SERVER="192.168.10.112"
NFS_PATH="/data/nfs/monitoring"
STORAGE_CLASS_NAME="nfs-client"
# Puertos NodePort
DASHBOARD_NODEPORT="32000"
ARGOCD_HTTP_PORT="32080"Control centralizado de versiones de todos los componentes. Edita este archivo para actualizar o fijar versiones específicas:
DASHBOARD_VERSION="v2.7.0"
ARGOCD_CHART_VERSION="5.51.6"
METRICS_SERVER_VERSION="v0.7.0"cd 01-Monitoring/01-kubernetes-dashboard
./kubernetes-dashboard.sh
# Acceso: https://<node-ip>:32000
# Obtener token:
kubectl -n kubernetes-dashboard create token admin-usercd 01-Monitoring/01-metrics-server
./metrics-server.sh
# Verificar métricas:
kubectl top nodes
kubectl top pods -A# Edita config.env primero con tu servidor NFS
cd 02-Storage
./NFS-StorageClass.sh
# Verificar:
kubectl get storageclasscd 03-Apps/Argocd
./01-argo_cd.sh
# Acceso: https://<node-ip>:32081
# Usuario: admin
# Contraseña: (mostrada al finalizar instalación)Biblioteca de funciones compartidas:
- Logging estructurado
- Validación de prerrequisitos
- Gestión de Helm
- Utilidades de Kubernetes
Valida que los componentes instalados estén funcionando:
./scripts/validate.shK8s-Tools/
├── README.md # Este archivo
├── config.env.example # Plantilla de configuración
├── versions.conf # Control de versiones
├── .gitignore
│
├── scripts/ # Scripts compartidos
│ ├── common.sh # Funciones compartidas
│ └── validate.sh # Validación de instalaciones
│
├── 01-Monitoring/ # Componentes de monitoreo
│ ├── 01-kubernetes-dashboard/
│ │ └── kubernetes-dashboard.sh
│ └── 01-metrics-server/
│ └── metrics-server.sh
│
├── 02-Storage/ # Provisionamiento de storage
│ └── NFS-StorageClass.sh
│
├── 03-Apps/ # Aplicaciones
│ └── Argocd/
│ └── 01-argo_cd.sh
│
└── docs/ # Documentación adicional
├── TROUBLESHOOTING.md
└── ARCHITECTURE.md
-
Error: "kubectl: command not found"
- Instala kubectl: https://kubernetes.io/docs/tasks/tools/
-
Error: "no hay conexión al cluster"
# Verifica tu kubeconfig kubectl cluster-info export KUBECONFIG=/path/to/your/kubeconfig
-
Error en NFS Provisioner: "servidor no accesible"
- Verifica que el servidor NFS esté en la misma red
- Comprueba que los paquetes NFS estén instalados en los nodos
-
Pods en estado Pending
# Ver detalles del pod kubectl describe pod <pod-name> -n <namespace> # Verificar eventos del cluster kubectl get events -A --sort-by='.lastTimestamp'
Ver más en docs/TROUBLESHOOTING.md
⚠️ IMPORTANTE: Estos scripts están diseñados para entornos de desarrollo y testing.
Para producción:
- ✅ Cambia todas las contraseñas por defecto
- ✅ Usa TLS en todos los servicios
- ✅ Configura RBAC apropiado
- ✅ No uses
--kubelet-insecure-tlsen Metrics Server - ✅ Protege los archivos
config.env(ya están en.gitignore)
Las contribuciones son bienvenidas. Para cambios importantes:
- Haz fork del proyecto
- Crea una rama para tu feature (
git checkout -b feature/NuevaCaracteristica) - Commit tus cambios (
git commit -m 'Agrega nueva característica') - Push a la rama (
git push origin feature/NuevaCaracteristica) - Abre un Pull Request
Este proyecto está bajo licencia MIT. Ver archivo LICENSE para más detalles.
- Kubernetes Team por las excelentes herramientas
- Helm Community por facilitar el deployment
- Comunidad de código abierto
Hecho con ❤️ para la comunidad de Kubernetes por GRS