Argo CD: primer despliegue GitOps con revisión
GitOps utiliza un repositorio como referencia declarativa de configuración. Argo CD observa diferencias y puede reconciliarlas en Kubernetes. No significa que cualquier commit deba aplicarse automáticamente sin revisión.
Utiliza un clúster y repositorio de laboratorio sin secretos. Comprueba contexto antes de instalar un controlador que tendrá permisos sobre recursos.
Instala desde una versión oficial revisada
Selecciona una release mantenida y sus instrucciones. El manifiesto stable puede cambiar; una referencia por versión facilita reproducir el entorno.
kubectl config current-context
kubectl create namespace argocd
Aplica después el manifiesto elegido siguiendo la documentación y revisa qué permisos crea. No uses una URL de otra persona que empaquete una instalación desconocida.
Acceso al panel
Para una prueba, port-forward permite llegar al servicio sin publicarlo mediante un balanceador:
kubectl -n argocd port-forward service/argocd-server 8080:443
La conexión del ejemplo usa TLS. Verifica la identidad y configura confianza apropiada antes de introducir credenciales. No conviertas --insecure en una recomendación administrativa permanente.
La contraseña inicial y el mecanismo para obtenerla son sensibles. No publiques la salida y cambia el acceso inicial según el procedimiento oficial.
Prepara un repositorio pequeño
Crea manifiestos de una aplicación de práctica en una carpeta y evita recursos compartidos o de producción. Guarda imagen y configuración con versiones deliberadas.
Una definición de aplicación tiene una estructura como:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: practica
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/TU_ORGANIZACION/TU_REPOSITORIO.git
targetRevision: main
path: manifests
destination:
server: https://kubernetes.default.svc
namespace: practica
syncPolicy:
syncOptions:
- CreateNamespace=true
Sustituye el repositorio y revisa permisos y contenido antes de aplicar. El ejemplo no activa sincronización automática ni eliminación automática.
Revisa diferencias antes de sincronizar
Comprueba recursos nuevos, modificaciones y eliminaciones. Luego sincroniza manualmente y verifica la aplicación, no solo el estado mostrado por el controlador.
Si una imagen no descarga o un pod no está listo, consulta eventos y logs de Kubernetes. Git sincronizado no equivale a aplicación funcional.
Automatización con límites
self-heal puede corregir diferencias respecto a Git; prune puede eliminar recursos que ya no estén declarados. Entiende el efecto antes de habilitarlos.
Protege ramas, repositorios y cuentas que modifican manifiestos. Quien cambia el origen de configuración puede influir en el clúster, por lo que esos permisos forman parte de la seguridad del despliegue.
Recuperación
Volver a un commit anterior puede restaurar configuración, pero no deshace por sí solo una migración de datos. Conserva una estrategia de recuperación independiente.
Para otros equipos, crea proyectos y RBAC con alcance limitado. No compartas la cuenta administrativa para todas las tareas.
Preguntas frecuentes
¿GitOps significa publicar cada push?
No. Puedes mantener revisión y sincronización manual. La automatización es una decisión que debe corresponder al proceso.
¿prune solo borra archivos de Git?
No. Puede provocar eliminación de recursos del clúster según la configuración. Revisa alcance antes de habilitarlo.
¿Volver al commit anterior recupera la base de datos?
No automáticamente. Datos y efectos externos requieren respaldo y procedimientos propios.
En pocas palabras
Argo CD compara el estado declarado en Git con recursos del clúster. La automatización requiere límites de acceso y comprensión de los cambios que puede aplicar o eliminar.
Conclusión
Practica un cambio y su reversión en un namespace aislado. Activa sincronización automática solo después de revisar permisos, protección de Git y tratamiento de datos externos.
Para continuar, revisa Instalar Kubernetes en Ubuntu desde cero: guía completa y Docker: qué es y cómo usarlo para ejecutar contenedores.
