Metodologia GitOps reprezintă standardul modern de operare a infrastructurilor cloud native: depozitul Git (GitHub, GitLab, Bitbucket) este unica sursă de adevăr (Single Source of Truth) pentru starea întregului cluster Kubernetes. În loc ca dezvoltatorii sau serverele de CI (GitHub Actions/Jenkins) să primească drepturi administrative de scriere prin kubectl apply (modelul tradițional de tip Push), un operator dedicat precum ArgoCD rulează în interiorul clusterului și trage modificările din Git (modelul de tip Pull), asigurând convergența automată.
De ce este GitOps superior conductelor tradiționale de Push?
- Securitate sporită: Nu mai este nevoie să stocați fișiere
kubeconfigadministrative sau certificate TLS de cluster pe serverele de CI/CD externe. - Autovindecare și corectarea deviațiilor (Drift Detection): Dacă un inginer modifică manual un Deployment pe cluster prin
kubectl edit, ArgoCD detectează imediat abaterea și suprascrie modificarea neautorizată cu starea oficială din Git (selfHeal)! - Rollback instantaneu în caz de incident: Revenirea la o versiune anterioară stabilă nu necesită relansarea unui pipeline complicat; se execută pur și simplu o comandă
git revertîn depozitul Git.
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: magazin-online-api
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: default
# 1. SURSA ADEVĂRULUI (Depozitul Git):
source:
repoURL: 'https://github.com/companie/k8s-manifests.git'
targetRevision: main
path: overlays/production
# 2. DESTINAȚIA (Clusterul și Namespace-ul de aplicare):
destination:
server: 'https://kubernetes.default.svc'
namespace: productia
# 3. POLITICA DE RECONCILIERE AUTOMATĂ:
syncPolicy:
automated:
prune: true # Șterge automat resursele din cluster care au fost eliminate din Git!
selfHeal: true # Repară automat orice deviație manuală făcută pe cluster!
syncOptions:
- CreateNamespace=true
- ApplyOutOfSyncOnly=true
Fluxul Zilnic de Lucru în Echipă cu GitOps
- Dezvoltatorul deschide un Pull Request în depozitul de aplicație, modificând codul sursă.
- Pipeline-ul CI construiește imaginea Docker, o scanează de vulnerabilități cu Docker Scout și o publică cu eticheta
v2.4.0. - CI-ul deschide un commit în depozitul de infrastructură K8s, actualizând eticheta imaginii în fișierul
kustomization.yaml. - După aprobarea Pull Request-ului de către echipa DevOps și îmbinarea pe ramura
main, ArgoCD detectează noul commit în câteva secunde și orchestrează lansarea fără downtime pe cluster.
# Verificăm starea de sincronizare a tuturor aplicațiilor din cluster:
argocd app list
# Forțăm manual sincronizarea unei aplicații fără a aștepta intervalul de polling:
argocd app sync magazin-online-api
# Vizualizăm istoricul lansărilor și diferențele față de starea curentă din Git:
argocd app history magazin-online-api
argocd app diff magazin-online-api