# Deployment Guide ## Crossplane Resource Management ### ✅ Correct Approach - Declarative Updates Always use `kubectl apply` for Crossplane Objects: ```bash # Make changes to YAML files kubectl apply -f filename.yaml # For directory updates kubectl apply -f . ``` This will: - Update existing Objects (shows "configured") - Create new Objects (shows "created") - Leave unchanged Objects (shows "unchanged") - Maintain resource state and ownership ### ❌ Avoid - Delete/Recreate Pattern Don't use delete/apply cycles unless absolutely necessary: ```bash # This is generally wrong for routine updates kubectl delete -f filename.yaml kubectl apply -f filename.yaml ``` Only use delete/recreate for: - Schema changes that require recreation - Fixing stuck resources - Resource type changes ### Verification Steps After applying changes: 1. Check Crossplane Object status: ```bash kubectl get objects.kubernetes.crossplane.io -A ``` 2. Verify managed resources: ```bash kubectl get -n ``` 3. Check Object details if issues: ```bash kubectl describe object -n crossplane-system ``` ### GitOps Compatibility This declarative approach ensures: - Flux/ArgoCD can manage resources properly - No unexpected deletions - Proper drift detection - Safe rollbacks