Files
k8s-dynu-updater/readme.md
2025-05-03 22:53:51 +00:00

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:

  1. Detecta la IP pública actual.
  2. Comprueba si ha cambiado desde la última ejecución.
  3. Llama a la API de Dynu con usuario, grupo y contraseña hash MD5.

📂 Despliegue

  1. Aplicar los manifiestos:
cd k8s-dynu-updater
kubectl apply -k .
  1. 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


📅 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.