小型创业公司中Kubernetes发布管理的最佳工具是什么

82次阅读
没有评论

问题描述

在我们的小型创业公司(6名开发人员)中,我们使用Google Kubernetes Engine + CircleCi(使用简单的bash脚本将Docker镜像部署到K8S)。我们有大约10个服务,但我们正在不断发展壮大。我们使用简化的git-flow模型。我们计划在未来使用:terraform进行基础设施管理,helm charts进行部署管理。我们希望有以下可能性:
1. (现在)在每个环境中跟踪我们的发布
2. (现在)在Grafana看到一些警报后,手动回滚/自动回滚。回滚必须首先应用Django迁移,然后使用上一个部署的镜像。
3. (现在)一次性发布一组服务
4. (未来)使用一些更高级的开发技术,如金丝雀部署
5. (未来)有关部署的一些指标(例如构建时间)

有很多工具可以用于这个工作,很难选择。以下是一些选项:
1. Spinnaker -> 据说需要3名工程师来维护,可能太复杂了。
2. Jenkins -> 更多的是CI/CD工具。
3. Harness/Argo/Google Deployment/Team City/Code Fresh -> 或许其中之一?
4. 在Django中编写一个简单的内部解决方案 -> 最灵活的解决方案,但也是最容易出错的。

你有什么推荐?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

对于小型创业公司来说,我推荐使用GitLab作为发布管理的工具。GitLab是一个功能齐全的工具,可以满足大部分需求。以下是一些GitLab的特点:
– 单一界面:GitLab提供了代码、安全性、CI/CD、指标等的单一界面。你可以从GitLab中创建和部署到Kubernetes集群。
– 多环境支持:你可以在GitLab中创建多个环境,并存储用于自定义环境的密钥。
– 监控应用程序:GitLab可以监控你的Kubernetes应用程序,并显示部署标记,以便你可以在部署前后查看它们的性能变化。
– 多项目流水线:你可以在GitLab中创建多个项目流水线,并并行执行操作,以加快工作速度。
– 支持审查应用程序和金丝雀部署。
– 提供回滚按钮,并跟踪每次发布。此外,GitLab还提供了强大的API,因此你可以将其与Prometheus + Alert Manager等工具结合使用,以便在收到警报时触发回滚操作。

方案2

Spinnaker是另一个可选的工具,但它可能需要一些维护工作。如果你愿意支付一些费用,可以考虑使用Spinnaker的托管服务Armory。这将使Spinnaker的使用更加简单和高效。

方案3

Jenkins是一个功能强大的工具,可以满足所有需求。但是,随着项目和团队的增长,它在长期维护和大型项目上可能会变得困难。如果你倾向于使用Jenkins,可以考虑使用Jenkins的Blue Ocean插件来进行持续交付(CD)。这个插件看起来非常出色,我听说过很多好评。

方案4

如果你的源代码位于某个特定位置,并且正在设置要部署的容器,那么在Azure DevOps中也可以很好地解决这个问题。你可以参考这个链接了解如何在Azure DevOps中创建CI/CD流水线。

以上是一些可供选择的工具,你可以根据你的需求和偏好选择其中之一。希望这些信息对你有帮助!

正文完