Deployment Workflow
The GitOps workflow in the Anton cluster follows a systematic approach to deploying and managing applications through Git-driven automation.
Deployment Process
Application Deployment
1. Pre-Deployment Checklist
# Verify Helm chart exists
helm search repo prometheus-community/kube-prometheus-stack --versions
# Check dependencies are ready
flux get kustomizations -A | grep -E "(cert-manager|external-secrets)"
# Validate manifests locally
deno task validate
2. Create Application Structure
mkdir -p kubernetes/apps/monitoring/new-app/{app,config}
3. Define Flux Kustomization
# kubernetes/apps/monitoring/new-app/ks.yaml
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: new-app
namespace: flux-system
spec:
interval: 30m
path: "./kubernetes/apps/monitoring/new-app/app"
prune: true
sourceRef:
kind: GitRepository
name: flux-system
namespace: flux-system
dependsOn:
- name: cert-manager
namespace: flux-system
4. Application Configuration
# kubernetes/apps/monitoring/new-app/app/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: monitoring # REQUIRED: Must specify namespace
resources:
- helmrelease.yaml
5. Commit and Deploy
# Commit changes
git add kubernetes/apps/monitoring/new-app/
git commit -m "feat: add new-app to monitoring namespace"
# Force reconciliation (optional)
flux reconcile kustomization new-app --with-source
Monitoring Deployments
Real-time Status
# Watch all Flux resources
flux get all -A --watch
# Monitor specific application
watch "flux get kustomization new-app -n flux-system"
# Check resource health
kubectl get pods -n monitoring -l app=new-app
Deployment Verification
# Check Flux resource status
flux describe kustomization new-app -n flux-system
# Verify Helm release
helm list -n monitoring
# Check application pods
kubectl get pods -n monitoring -w
Troubleshooting Workflow
1. Identify Issues
# Find failed resources
flux get all -A --status-selector ready=false
# Check recent events
kubectl get events -A --sort-by='.lastTimestamp' | tail -20
2. Investigation Process
3. Common Fixes
# Suspend problematic resource
flux suspend kustomization new-app -n flux-system
# Fix configuration in Git
git add kubernetes/apps/monitoring/new-app/
git commit -m "fix: resolve new-app configuration issue"
# Resume deployment
flux resume kustomization new-app -n flux-system
# Force fresh deployment
flux reconcile kustomization new-app --with-source
Rollback Procedures
Git-based Rollback
# Revert to previous commit
git revert <commit-hash>
# Or reset to known good state
git reset --hard <good-commit>
# Push changes
git push origin main
# Force Flux reconciliation
flux reconcile source git flux-system
Helm Rollback
# Check Helm release history
helm history new-app -n monitoring
# Rollback to previous version
helm rollback new-app 1 -n monitoring
# Or suspend Flux temporarily
flux suspend helmrelease new-app -n monitoring
helm rollback new-app 1 -n monitoring
flux resume helmrelease new-app -n monitoring
Maintenance Operations
Updating Applications
# Update Helm chart version
# Edit helmrelease.yaml to new version
git commit -m "feat: update new-app to v2.0.0"
# Monitor upgrade progress
flux get helmreleases -A --watch
Cleanup Operations
# Remove application (marks for deletion)
git rm -r kubernetes/apps/monitoring/new-app/
git commit -m "feat: remove new-app from monitoring"
# Verify cleanup
kubectl get all -n monitoring -l app=new-app
The GitOps workflow ensures consistent, auditable deployments while providing robust rollback capabilities and comprehensive monitoring of the deployment process.