2.8 KiB
2.8 KiB
Dynu IP Updater en Kubernetes
Este proyecto despliega un cliente de Dynu personalizado como CronJob
y Job
en un clúster K3s/Kubernetes. Su función es mantener actualizada la dirección IP pública de un grupo de dominios gestionados en Dynu usando su API.
🚀 Características
- Imagen Docker ligera basada en Alpine.
- Actualiza la IP pública mediante peticiones HTTP a la API de Dynu.
- Guarda la IP anterior para evitar actualizaciones innecesarias.
- Ejecutado periódicamente mediante
CronJob
(cada 5 minutos). - Puede ejecutarse manualmente mediante un
Job
. - Los logs de ejecución se almacenan y pueden consultarse con
kubectl logs
.
🚜 Estructura de archivos
.
k8s-dynu-updater/
├── cronjob.yaml # CronJob de Kubernetes
├── job-manual.yaml # Job manual para pruebas
├── kustomization.yaml # Kustomize para despliegue
├── namespace.yaml # Namespace aislado para el updater
La imagen Docker utilizada se crea con el script update.sh
incrustado, que:
- Detecta la IP pública actual.
- Comprueba si ha cambiado desde la última ejecución.
- Llama a la API de Dynu con usuario, grupo y contraseña hash MD5.
📂 Despliegue
- Aplicar los manifiestos:
cd k8s-dynu-updater
kubectl apply -k .
- Comprobar el estado:
kubectl get pods -n dynu-updater
✅ Ejecución manual
Para probar el script sin esperar al cron:
kubectl apply -f job-manual.yaml
kubectl logs -n dynu-updater job/dynu-updater-manual
⚖️ Configuración del script
El script embebido en la imagen Docker:
USERNAME="xavor"
PASSWORD="M@nabo2025"
GROUP="ManaboValencia"
La contraseña se convierte a hash MD5 antes de enviarla.
🚨 Seguridad
- La contraseña se envía como hash MD5.
- Se recomienda usar un "IP Update Password" diferente del de cuenta.
- Puedes montar
Secret
en Kubernetes para no incluir credenciales directamente en la imagen.
🔍 Logs en Dynu
Dynu registra las actualizaciones entrantes. Puedes ver líneas como:
/nic/update?username=xavor&group=manabovalencia&myip=62.15.155.254&myipv6=no&password=***** Good
Esto confirma que el pod ha funcionado correctamente.
🔍 Referencias
- Dynu IP Update Protocol: https://www.dynu.com/DynamicDNS/IP-Update-Protocol
- API:
https://api.dynu.com/nic/update
- Cliente basado en
curl
ycron
en Alpine Linux
📅 Mantenimiento
- Se puede adaptar a otros grupos (por ejemplo:
ManaboTorrevieja
). - Si se quiere logs persistentes, se puede montar un volumen.
- Si se quiere gestionar con ArgoCD, agregarlo como
Application
.
📄 Autor
Xavor (2025)
Este cliente se ha probado en K3s y Dynu, actualizando correctamente el grupo ManaboValencia
.