Saltar al contenido
NyverraNyverra
⌘K
InicioArtículosSitio institucional
🇪🇸
Nyverra

Canal editorial

Artículos sobre tecnología, operaciones y partners — infraestructura, monitorización y entornos críticos.

Redes sociales

Explorar

  • Inicio
  • Artículos
  • Categorías
  • Etiquetas
  • Autores
  • Sobre
  • Contacto
  • RSS
  • Sitio institucional

Nyverra

  • Nuestros servicios
  • Casos de éxito
  • Socios

Contacto

Correo[email protected]WhatsApp(62) 99309-1592Portal del clienteITSM · tickets y SLA

Rua RB 18, S/N — Casa 01, Sala 01 · Residencial Buriti · Senador Canedo – GO, Brasil · CEP 75260-459

Horario: lun–vie, 08–18 h

© 2026 Nyverra. Todos los derechos reservados.

CNPJ: 61.571.209/0001-08 · Registro estatal: 20.291.265-5 · D-U-N-S®: 57-323-5796

blog.nyverra.com.br

Términos de usoPrivacidadCookies
Volver arriba

La pregunta que define GitOps: si alguien elimina un Deployment a las 3 de la mañana, ¿el clúster se recupera solo?

Si la respuesta es «no», tienes CI con kubectl apply, no GitOps. La diferencia es quién controla el estado deseado.

Sello del curso: probado en Kubernetes 1.35 con ArgoCD 2.x.

El modelo

Git (estado desejado) ──► ArgoCD (comparação) ──► Cluster (estado real)
                              ▲                        │
                              └──── drift detectado ───┘
  • Fuente de verdad: repositorio Git.
  • Agente: ArgoCD se ejecuta en el clúster y compara continuamente.
  • Resultado: Synced/OutOfSync y Healthy/Degraded.

Nadie aplica con kubectl en producción. Si se aplica, ArgoCD lo revierte — y ese es el comportamiento correcto.

Instalación

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
kubectl -n argocd get pods

Acceso:

kubectl -n argocd port-forward svc/argocd-server 8080:443
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath='{.data.password}' | base64 -d

En producción: Ingress con TLS, SSO (OIDC) y RBAC de ArgoCD. El admin local es solo para bootstrap.

Una Application

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: portal-homolog
  namespace: argocd
spec:
  project: default
  source:
    repoURL: https://github.com/example/portal-gitops.git
    targetRevision: main
    path: apps/portal/overlays/homolog
  destination:
    server: https://kubernetes.default.svc
    namespace: portal
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true
      - ApplyOutOfSyncOnly=true
    retry:
      limit: 3
      backoff:
        duration: 10s
        factor: 2
        maxDuration: 3m

Puntos que importan:

  • prune: true elimina lo que salió de Git.
  • selfHeal: true corrige cambios manuales.
  • retry evita quedar en Degraded por un error transitorio de imagen.

App-of-apps

Un repositorio, muchas Applications:

gitops/
  bootstrap/
    root-app.yaml
  apps/
    portal/
      base/
      overlays/homolog
      overlays/prod
    observability/
    operators/

La root-app apunta a apps/ y ArgoCD descubre el resto. Agregar un entorno nuevo = abrir PR.

Sincronización: manual o automática

Modo Cuándo usar
Manual (syncPolicy vacío) producción regulada, ventana aprobada
Automated homolog, staging, servicios internos
Automated + selfHeal todo lo que necesita resistir a cambios manuales
Automated + prune entornos desechables y GitOps maduro

prune en producción exige cuidado: un error de path en el PR puede eliminar recursos. Usa la anotación Prune=false en objetos críticos y protege el repositorio con revisión obligatoria.

Drift: el enemigo silencioso

El drift ocurre cuando alguien:

  • edita el Deployment en el panel;
  • ejecuta kubectl set image;
  • aplica un manifest suelto;
  • altera un HPA que cambia réplicas (las réplicas gestionadas por HPA no deben estar en Git).
argocd app diff portal-homolog
argocd app history portal-homolog

HPA + réplicas en Git es una pelea eterna: ArgoCD quiere 2, el HPA quiere 6. Elimina replicas del manifest gestionado cuando haya HPA.

Secretos en GitOps

No hagas commit de Secret. Opciones:

  • Sealed Secrets: cifra y puede ir a Git.
  • External Secrets Operator: obtiene desde Vault/secret manager.
  • SOPS + age: cifrado en el repositorio.

ArgoCD solo necesita ver el recurso final; el origen del secreto queda fuera.

Laboratorio

  1. Instala ArgoCD y accede a la UI.
  2. Crea un repositorio GitOps con un Deployment simple.
  3. Crea la Application y sincroniza.
  4. Modifica el Deployment manualmente (kubectl scale) y observa cómo selfHeal lo revierte al valor de Git.
  5. Elimina el Deployment y confirma la recreación.
  6. Haz un commit con replicas: 3 y observa el sync automático.
  7. Elimina el recurso de Git y observa cómo prune actúa.
  8. Provoca un error (imagen inexistente) y observa Degraded + retry.

Errores comunes

Síntoma Causa
OutOfSync eterno campo gestionado por otro controller (HPA, webhook)
ComparisonError repo/path/branch incorrecto o credencial
Degraded después de sync image pull, quota, PVC pending
Recurso huérfano prune: false
Sync sobrescribe HPA replicas en el manifest
Secreto en Git falta de Sealed/External Secrets
Loop de sync el default del clúster difiere del manifest (ignoreDifferences)

ignoreDifferences es paliativo: úsalo cuando el campo es realmente gestionado por otro componente, no para ocultar drift real.

Checklist

  • [ ] ArgoCD con SSO y RBAC (admin local solo en bootstrap).
  • [ ] Repositorio GitOps separado del código de la aplicación.
  • [ ] selfHeal y prune conscientes por entorno.
  • [ ] replicas fuera del manifest donde haya HPA.
  • [ ] Secretos mediante Sealed/External Secrets.
  • [ ] argocd app diff forma parte del proceso de PR.
  • [ ] Alertas para Degraded y OutOfSync.
  • [ ] Backup del repositorio GitOps.

Glosario

  • Application: CRD que vincula repo/path a un destino.
  • sync: aplicar el estado deseado.
  • prune: eliminar recursos ausentes en Git.
  • selfHeal: revertir drift automáticamente.
  • drift: divergencia entre Git y el clúster.
  • app-of-apps: patrón de Applications que gestionan Applications.

Próximo

Con el deploy versionado y reconciliado, falta el detalle que el usuario siente: zero downtime. Probes, rolling update, PDB y HPA en el próximo capítulo.

Próximo: Curso Kubernetes 23 — Deploy sin downtime: probes, rolling update y HPA

Compartir

Seguir leyendo

Lea también

  • Manual LSI / Broadcom MegaRAID — MegaCli y StorCLI
    Tutoriais

    Manual LSI / Broadcom MegaRAID — MegaCli y StorCLI

    Con esta guía, su equipo gana autonomía para diagnosticar rebuilds, resolver foreign configurations, gestionar BBU y CacheCade — con escenarios reales de producción documentados.

    31 de outubro de 202620 min de leitura
  • Nginx Cheatsheet

    Nginx Cheatsheet

    Guía de bolsillo con ejemplos listos para configurar Nginx en producción: desde instalación y virtual hosts hasta ajuste de rendimiento y resolución de problemas.

    31 de outubro de 202612 min de leitura
  • Curso Kubernetes 27 — SLO/SLI, on-call y postmortem sin culpa
    Kubernetes

    Curso Kubernetes 27 — SLO/SLI, on-call y postmortem sin culpa

    Qué prometer, cómo medir y qué hacer cuando el error se dispara: SLI, SLO, presupuesto de error, alertas que despiertan a alguien y postmortem sin caza de brujas.

    31 de outubro de 20265 min de leitura

Comentarios

Aún sin comentarios

Sea el primero en compartir su opinión sobre este artículo.

Deje un comentario

Newsletter

Reciba nuevos artículos

Suscríbase para recibir publicaciones del blog Nyverra en su correo. Enviaremos un enlace de confirmación.

​
  1. Inicio
  2. Kubernetes
  3. Curso Kubernetes 22 — GitOps con ArgoCD
Kubernetes
#Curso Kubernetes#Kubernetes#K8S

Curso Kubernetes 22 — GitOps con ArgoCD

Wedson LopesWedson Lopes
31 de outubro de 20264 min de leitura