HiveBrain v1.2.0
Get Started
← Back to all entries
patternkubernetesMinor

What is the best tool for the release management for Kubernetes in a small startup?

Submitted by: @import:stackexchange-devops··
0
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:

  • (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.

  • 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.