In our small startup (6 developers) and we use Google Kubernetes Engine + CircleCi (which deploys docker images to K8S with simple bash scripts). We have ~10 services, but we are growing. We use a simplified git-flow model. W plan to use in the future: terraform for infrastructure, helm charts for managing deployments. We want to have a possibility:
- (now) to track our releases in every environment
- (now) manually rollback / automatically rollback after seeing some alerts in grafana. Rollback must apply Django migrations first and then use the image from the previous deployment.
- (now) release a set of services in one go
- (future) use some more advanced development techniques like canary deployment
- (future) have some metrics regarding deployments (eg. build time)
There are plenty of tools which could be used for this job and it's hard to choose
- Spinnaker -> it is said that it needs 3 engineers to maintain it, so probably it's too complex.
- Jenkins -> it's more CI/CD tool.
- Harness/Argo/Google Deployment/Team City/Code Fresh -> maybe one of those?
- Write a simple inhouse solution in Django -> the most flexible one, but also the most error-prone.
What do you recommend?