GitOps deployment repository for the DMP Assistant application. This repository contains environment-specific Kubernetes deployment configurations managed through ArgoCD.
This repository separates deployment configuration from the main application source code (roadmap repo), following GitOps
best practices for:
- Environment-specific configuration management
- Automated deployments through ArgoCD
- Secure secrets management with sealed secrets
- Infrastructure as Code principles
argocd/
├── dmp-roadmap-dev.yaml # Development ArgoCD application definition
├── dmp-roadmap-staging.yaml # Staging ArgoCD application definition
└── dmp-roadmap-prod.yaml # Production ArgoCD application definition
environments/
├── base/
│ └── values.yaml # Base Helm values shared across environments
├── dev/
│ ├── values.yaml # Development environment overrides
│ └── sealed-secrets/ # Encrypted secrets for dev
├── staging/
│ ├── values.yaml # Staging environment overrides
│ └── sealed-secrets/ # Encrypted secrets for staging
└── prod/
├── values.yaml # Production environment overrides
└── sealed-secrets/ # Encrypted secrets for production
The DMP Assistant (roadmap) application consists of:
- Rails Application: Main web application
- PostgreSQL Database: Data persistence
- Background Jobs: Sidekiq for async processing
- File Storage: CephFS for uploads and locales
Contains shared settings across all environments:
- Domain Configuration: Base domain and TLS settings
- Application Settings: Common Rails configuration
- Resource Limits: Default CPU and memory limits
- Storage Configuration: CephFS connection details
- Cronjobs: Scheduled tasks for translations and statistics
Each environment overrides base settings:
Development (environments/dev/values.yaml):
- Domain:
dev.dmp-pgd.ca - Image Tags: Release candidate versions (ex:
4.3.0-rc.1) - Resources: Lower limits for development
- Certificates: Let's Encrypt staging server
Staging (environments/staging/values.yaml):
- Domain:
staging.dmp-pgd.ca - Image Tags: Release candidate versions (ex:
4.3.0-rc.1) - Resources: Production-like limits
- Certificates: Let's Encrypt staging server
Production (environments/prod/values.yaml):
- Domain:
dmp-pgd.ca - Image Tags: Stable release versions (ex:
4.3.0) - Resources: Full production limits
- Certificates: Let's Encrypt production server
ArgoCD applies configuration in this order:
- Base values from
environments/base/values.yaml - Environment-specific values from
environments/{env}/values.yaml - Secrets from sealed secrets in
environments/{env}/sealed-secrets/
- Code Changes: Developers push changes to
roadmaprepository - Image Build: CI/CD builds and tags container images
- Config Update: Update image tags in this repository
- ArgoCD Sync: ArgoCD detects changes and deploys automatically
- Verification: Monitor deployment through ArgoCD UI
# Edit environment-specific settings
vim environments/dev/values.yaml
# Common settings to modify:
# - app.image.tag: Update application versionAll sensitive configuration is stored as sealed secrets:
- Database credentials: Connection strings and passwords
- Rails secrets: SECRET_KEY_BASE and devise keys
- Integration secrets: ORCID, Google OAuth credentials
- Storage secrets: CephFS access credentials
See Sealed Secrets Guide for detailed instructions.
Changes typically flow: dev → staging → prod
- Test and validate in development environment
- Promote to staging with environment-specific adjustments
- After staging validation, promote to production
- Monitor deployments at each stage
See Contributing Guide for detailed promotion procedures.
Each environment has its own ArgoCD application (dmp-roadmap-{environment}) that:
- Monitors this repository for configuration changes
- References the Helm chart from the main
roadmaprepository - Automatically syncs changes and deploys to the target cluster
Use the ArgoCD UI to monitor deployments, trigger manual syncs, and troubleshoot issues. See ArgoCD Guide for detailed instructions.
See the Contributing Guide for detailed instructions on making changes to deployment configurations.
- ArgoCD Guide: Complete guide to using ArgoCD UI
- Sealed Secrets Guide: Detailed sealed secrets management
- Contributing Guide: How to make changes to deployments
For deployment issues:
- Check ArgoCD application status in the UI
- Review application logs and events
- Contact platform team for cluster-level issues