GitOps Guide

GitOps Principles

PrincipleDescription
DeclarativeSystem state is defined declaratively in Git
VersionedGit is the single source of truth, with full history
AutomatedChanges are applied automatically by agents
Continuous reconciliationAgents continuously ensure actual state matches desired state

ArgoCD Application

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app namespace: argocd spec: project: default source: repoURL: https://github.com/myorg/my-app-config targetRevision: HEAD path: k8s/overlays/production destination: server: https://kubernetes.default.svc namespace: production syncPolicy: automated: prune: true # delete removed resources selfHeal: true # revert manual changes syncOptions: - CreateNamespace=true - PrunePropagationPolicy=foreground retry: limit: 5 backoff: duration: 5s factor: 2 maxDuration: 3m

Flux CD Kustomization

apiVersion: source.toolkit.fluxcd.io/v1 kind: GitRepository metadata: name: my-app namespace: flux-system spec: interval: 1m url: https://github.com/myorg/my-app-config ref: branch: main --- apiVersion: kustomize.toolkit.fluxcd.io/v1 kind: Kustomization metadata: name: my-app namespace: flux-system spec: interval: 10m sourceRef: kind: GitRepository name: my-app path: ./k8s/production prune: true healthChecks: - apiVersion: apps/v1 kind: Deployment name: my-app namespace: production