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.