Organized separation of development and production ArgoCD configurations.
argocd/
├── bootstrap/
│ └── argocd-setup.sh # Bootstrap script for automated setup
├── dev/ # Development environment
│ ├── appproject.yaml # Dev AppProject with dev-specific permissions
│ ├── applications/ # Dev applications
│ │ ├── kustomization.yaml
│ │ ├── esddns-operator-helm.yaml
│ │ └── esddns-operator-kustomize.yaml
│ ├── kustomization.yaml # Dev root kustomization
│ └── README.md # Dev-specific documentation
├── prod/ # Production environment
│ ├── appproject.yaml # Prod AppProject with prod-specific permissions
│ ├── applications/ # Prod applications
│ │ ├── kustomization.yaml
│ │ ├── esddns-operator-helm.yaml
│ │ └── esddns-operator-kustomize.yaml
│ ├── kustomization.yaml # Prod root kustomization
│ └── README.md # Prod-specific documentation
├── README.md # Main documentation
├── DEPLOYMENT.md # Comprehensive deployment guide
└── STRUCTURE.md # This file
/bootstrap/argocd-setup.shAutomated bootstrap script for deploying ESDDNS to ArgoCD.
Usage:
./argocd-setup.sh [dev|prod|both]
Features:
/dev/ - Development Environmentappproject.yamlArgoCD AppProject for development with:
esddns-devesddns-operator-dev, esddns-*-devapplications/Development applications directory:
esddns-operator-helm.yaml
esddns-operator-helm-devvalues.yaml + values-development.yamlesddns-operator-devesddns-operator-kustomize.yaml
esddns-operator-kustomize-devk8s/overlays/developmentesddns-operator-devkustomization.yamlRoot kustomization for dev that includes:
appproject.yamlapplications/Deploy with:
kubectl apply -k argocd/dev/
/prod/ - Production Environmentappproject.yamlArgoCD AppProject for production with:
esddns-prodesddns-operator, esddns-*applications/Production applications directory:
esddns-operator-helm.yaml
esddns-operator-helm-prodvalues.yaml + values-production.yamlesddns-operatoresddns-operator-kustomize.yaml
esddns-operator-kustomize-prodk8s/overlays/productionesddns-operatorkustomization.yamlRoot kustomization for prod that includes:
appproject.yamlapplications/Deploy with:
kubectl apply -k argocd/prod/
| Aspect | Dev | Prod |
|---|---|---|
| Sync | Automatic | Manual |
| Prune | Enabled | Disabled |
| SelfHeal | Enabled | Disabled |
| Replicas | 1 | 3 |
| Values | values-development.yaml | values-production.yaml |
| AppProject | esddns-dev | esddns-prod |
| Namespace | esddns-operator-dev | esddns-operator |
| Permissions | Liberal | Strict |
kubectl apply -k argocd/dev/
kubectl apply -k argocd/prod/
cd argocd/bootstrap
./argocd-setup.sh both
# Dev - Helm
kubectl apply -f argocd/dev/applications/esddns-operator-helm.yaml
# Dev - Kustomize
kubectl apply -f argocd/dev/applications/esddns-operator-kustomize.yaml
# Prod - Helm
kubectl apply -f argocd/prod/applications/esddns-operator-helm.yaml
# Prod - Kustomize
kubectl apply -f argocd/prod/applications/esddns-operator-kustomize.yaml
Both dev and prod reference the same Git repository:
helm/esddns-operator/
values.yamlvalues-development.yamlvalues-production.yamlk8s/base/
k8s/overlays/development/k8s/overlays/production/Remove specific environment:
# Remove dev
kubectl delete -k argocd/dev/
# Remove prod
kubectl delete -k argocd/prod/
Remove everything:
kubectl delete -k argocd/dev/
kubectl delete -k argocd/prod/
This will: