patternkubernetesMinor
What is the best tool for the release management for Kubernetes in a small startup?
Viewed 0 times
thewhatkubernetesreleaseforsmallmanagementstartuptoolbest
Problem
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:
There are plenty of tools which could be used for this job and it's hard to choose
What do you recommend?
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?
Solution
GitLab is a solid good option for most of this (with the appropriate plan level - I don't think the CE one has everything). It's a single-pane-of-glass for your code, security, CI/CD, metrics, etc. You can create and deploy to kubernetes clusters from it.
Spinnaker has https://www.armory.io/ if you're willing to pay a bit (not sure how much). But that should make it easy to use / effective.
I'm not amazingly fond of Jenkins, but it can do everything. Its hard to maintain over time / with bigger projects and teams though. But it can be customized to do anything. You may want to look into https://jenkins.io/projects/blueocean/ (the blue ocean plugin) for CD if you're leaning this way - it looks fairly impressive and I've heard good things.
- You can have multiple environments and it'll store the secrets for you to customize them.
- It will monitor your kubernetes apps and show deployment marks so you can see if they get better/worse performance wise before and after deployment.
- You can do multi project pipelines and actions in parallel to chain things together and get things done fast.
- It supports review apps and canary deployments.
- It has rollback buttons and tracks every release you do. It also has a good API, so I assume you could hook up prometheus + alert manager and make the API trigger a rollback in response to an alert.
Spinnaker has https://www.armory.io/ if you're willing to pay a bit (not sure how much). But that should make it easy to use / effective.
I'm not amazingly fond of Jenkins, but it can do everything. Its hard to maintain over time / with bigger projects and teams though. But it can be customized to do anything. You may want to look into https://jenkins.io/projects/blueocean/ (the blue ocean plugin) for CD if you're leaning this way - it looks fairly impressive and I've heard good things.
Context
StackExchange DevOps Q#10492, answer score: 1
Revisions (0)
No revisions yet.