This application manages a message queue system using RabbitMQ to support multiple projects across the Ministry of Transportation.
- RabbitMQ: A reliable and mature messaging and streaming broker.
- asdf: Manages multiple runtime versions to simplify dependency management and ensure consistency across development environments.
- pre-commit: Manages multi-language pre-commit hooks to enforce project standards and best practices, reducing the likelihood of bugs or inconsistencies.
-
GitHub Actions: Automates tasks such as building, testing, and deploying applications within GitHub repositories.
-
Helm: Kubernetes package manager simplifying the deployment, management, and scaling of applications in Kubernetes clusters.
- Terraform: An open-source IaC tool that automates the provisioning and management of infrastructure across various cloud providers, facilitating efficient deployments, peer reviews, and version control.
Terraform is used to generate an OpenShift service account token
for GitHub pipelines.
- See oc-deployers - README.md for more details and instructions.
The project manages three distinct environments: Development, Test, and Production, each with tailored deployment processes.
The Development environment uses continuous deployment for all changes made to the main branch, allowing us to assess the application’s current state based on the latest code.
- Refer to deploy-dev.yml for more details.
The Test and Production environments support deployment via GitHub dispatcher events. The selected environment determines where the resources are deployed.
- Refer to deploy-dispatch.yml for more details.
To deploy resources from a local environment, follow these steps:
-
Log in to the target OpenShift cluster where you want to deploy:
oc login --token=sha256~abcdef --server=https://api.<cluster>.devops.gov.bc.ca:6443
-
Navigate to the Helm directory:
cd helm/main
-
Run the following command to deploy with Helm:
make upgrade NAMESPACE=<namespace>