2 min de lectura
GitOps en OpenShift con ArgoCD
GitOps ha revolucionado la forma en que desplegamos aplicaciones. En este artículo, aprenderás a implementar GitOps en OpenShift usando ArgoCD.
¿Qué es GitOps?
GitOps es una práctica donde:
- Git es la fuente de verdad para la infraestructura y aplicaciones
- Los cambios se hacen via Pull Requests
- La reconciliación es automática y continua
- El estado deseado siempre está versionado
Instalando ArgoCD en OpenShift
Usando el Operador
# Crear namespace
oc new-project argocd
# Instalar operador desde OperatorHub
# O usar CLI:
oc apply -f - <<EOF
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: argocd-operator
namespace: openshift-operators
spec:
channel: alpha
name: argocd-operator
source: community-operators
sourceNamespace: openshift-marketplace
EOF
Crear instancia de ArgoCD
apiVersion: argoproj.io/v1alpha1
kind: ArgoCD
metadata:
name: argocd
namespace: argocd
spec:
server:
route:
enabled: true
dex:
openShiftOAuth: true
rbac:
defaultPolicy: 'role:readonly'
policy: |
g, system:cluster-admins, role:admin
Estructura del repositorio GitOps
gitops-repo/
├── apps/
│ ├── dev/
│ │ ├── kustomization.yaml
│ │ └── patches/
│ ├── staging/
│ └── prod/
├── base/
│ ├── deployment.yaml
│ ├── service.yaml
│ └── kustomization.yaml
└── argocd/
└── applications.yaml
Creando una Application
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: myapp-dev
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/myorg/gitops-repo
targetRevision: main
path: apps/dev
destination:
server: https://kubernetes.default.svc
namespace: myapp-dev
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
Estrategias de sincronización
Auto-sync con Self-Heal
syncPolicy:
automated:
prune: true # Elimina recursos huérfanos
selfHeal: true # Revierte cambios manuales
Sync Waves para orden de despliegue
metadata:
annotations:
argocd.argoproj.io/sync-wave: "1"
Integración con OpenShift Pipelines
# Tekton Task para actualizar imagen
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: update-gitops
spec:
params:
- name: image-tag
steps:
- name: update-manifest
image: alpine/git
script: |
git clone $GITOPS_REPO
cd gitops-repo
sed -i "s|image:.*|image: myapp:$(params.image-tag)|" base/deployment.yaml
git commit -am "Update image to $(params.image-tag)"
git push
Monitoreo y Rollbacks
# Ver estado de aplicaciones
argocd app list
# Historial de sincronizaciones
argocd app history myapp-dev
# Rollback a versión anterior
argocd app rollback myapp-dev 2
# Sincronización manual
argocd app sync myapp-dev
Conclusión
GitOps con ArgoCD en OpenShift proporciona un flujo de trabajo robusto, auditable y automatizado para gestionar tus despliegues. La combinación de Git como fuente de verdad y la reconciliación continua garantiza que tu cluster siempre refleje el estado deseado.
¿Te gustó? ¡Compártelo!
Comentarios (0)