Deployment
Overview
The DCS is deployed to Kubernetes clusters using GitOps principles.
The deployment logic is stored in three repositories:
- Deployment repository:
https://dev.azure.com/amcsgroup/Routing/_git/GlobalDccDeploymentK8
- This repository contains the specific configuration for the DCS service. One for each environment and region combination.
- Argo CD repository:
https://dev.azure.com/amcsgroup/Routing/_git/Transport-ArgoCD
- This repository contains information about which branch and version of the other repos it should deploy. One for each environment and region combination.
- In most cases we will not need to change anything in this repository.
- DCS repository: https://dev.azure.com/amcsgroup/Routing/_git/GlobalDcc
- This repository contains the generic configuration for the DCS service
in the
/charts
folder. - This repository isn't monitored by Argo CD, but is contains the code to build the Helm chart docker image used by Argo CD.
- In most cases we will not need to change the charts.
- This repository contains the generic configuration for the DCS service
in the
Argo CD monitors the Deployment and Argo CD repository for changes. When a change is detected, Argo CD will calculate whether something relevant for the DCS has changed and deploy the updated components.
Common tasks
- Deploying a new version of the DCS.
- Deploying a new roadnet.
- Updating an existing roadnet.
- Managing users.
Technical Descriptions
- Deployment Process - A slightly more detailed description of the deployment process.
- Helm Charts - Information about how Helm charts are generated, and how to test them.
Deployment choices
Platform Engineering team has set our replica number to be 3 (see this commit). So all containers are replicated 3 times in Production. They did this because they found a very cheap way to host our containers but a bit less stable. By having 3 replicas, we keep the stability. The cheap way: the containers are hosted on some "Spot" VMs. It costs 10 times less. But you can be asked to leave the "Spot" VMs with a 30 seconds warning, and you get a new "Spot" VM for restarting your container. The idea is to optimise usage of VMs in a datacenter.