Deployments
High level deployment infrastructure information
This documentation covers high level deployment infrastructure information, but does not detail a specific release process. There are additional steps and processes which should be taken around deployments including but not limited to product management approvals and monitoring, but they are out of scope of this documentation.
Deployment configuration
Environment deployment configuration is controlled through repositories. There are separate repositories for notprod 🔒 and prod 🔒 environments. The repositories hold release configuration for multiple environments.
Fork the base deployment template to create new deployment configuration repos.
Services are packaged as Helm packages, defined in helmfile specs and releases through to environments are orchestrated through Kubernetes.
This documentation uses the deployment template as an example deployment repository. In a real scenario, the changes would be committed against the relevant deployment repository.
Deployment pipeline
The Drone pipeline configuration is defined in the .drone
file.
The drone file runs the helmfile deploy script.
Helm
Default Helm charts for services are configured in hocs-helm-charts
.
The Helm charts are consumed in deployment configuration through the charts.yaml
files which in turn is referenced in the helmfile.yaml
.
Helm chart values can be overwritten on an individual service and environment level through values
files in the environment directories.
More detailed documentation around Helm chart specifics is detailed in the generic-service README.
Create a Release
To create a Release, a PR is created in the deployment repository with the changes to be released into the environment.
When the PR is approved and merged, the merge to main
triggers a release to the environment.
Release new versions of services
If the changes are new versions of services to be deployed, the versions file is updated with the required versions and services.