建议如何使用Helm和Kubernetes设置个人服务

问题描述 投票:-1回答:1

这比一个特定的技术问题更多的是建议。

我做了一些搜索,但很难找到完全相同的问题。如果您认为这是另一个问题的重复,请给我一些链接! :-)

上下文

正如许多开发人员(我猜),我有一个“阿里巴巴的洞穴”服务器托管我的博客和多项服务:GitLab,Minio,我的自由职业账户的计费系统等...

根据我的可能性,所有服务都在Ubuntu服务器上使用不同的方式设置:apt-get install,tar抽取或Capistrano部署用于个人项目。

这是有效的,但对我来说这是一个难以维护的地狱。某些项目无法升级,因为系统依赖项与另一个项目相互冲突或者在我的操作系统上根本不可用,或者更新可能会对某些项目产生副作用。例如,我的个人项目所需的PHP升级完全破坏了手动安装的PHP服务,因为不支持新版本。

需求

我正在学习Kubernetes和Helm排行榜。目标是设置一个新的CoreOS服务器和一个Kubernetes生态系统,其中包含我的所有应用程序和项目。

有了它,我将能够:

  • 用完全独立的应用程序摆脱维护地狱。
  • 由于具有CI部署的简单git项目,可以轻松维护配置

如何使用Helm?

我做了一个测试,创建了一个基本的图表与helm create my-network,创建一个基本的nginx应用程序,完美的添加我的网络主页!

但现在我想添加并连接一些应用程序,让我们从Gitlab开始。

我找到了两种方法来添加它:

  1. 只需在我自己的图表之外运行带有yaml值文件的helm upgrade --install gitlab gitalb/gitlab命令进行配置。
  2. 由于requirements.yaml,添加gitlab作为依赖

两者都有效,给我几乎相同的结果。

第一个解决方案似乎更“独立”,但我真的不知道如何在CI下构建/测试它(我希望升级自动化)。

第二个允许我使用单个values.yaml文件配置所有文件,但我不知道在升级期间它是做什么的(gitlab的升级过程是在我的图表升级过程中运行的吗?)并且所有这些都合并到一个“项目”中。

GitLab就是一个例子,但我希望以这种方式添加更多“即用型”应用程序。

你有什么建议给我的?解决方案1还是2?我应该为这两种解决方案真正做些什么,尤其是升级/备份?

如果你有一个完全不同的第三个解决方案来建议使用Helm,请随意! :-)

谢谢

docker kubernetes gitlab kubernetes-helm
1个回答
2
投票

我的经验一般是为每件/服务使用单独的helm install更好。如果这些服务具有依赖性(“微服务X需要Redis缓存”),那么这些都是放在requirements.yaml文件中的好东西。

一个大的“图表图表”遇到了几个问题:

  • Helm会压缩依赖关系,所以如果服务X需要Redis而服务Y也需要Redis,那么图表图表设置将安装一个Redis并让它共享;但在实践中,这通常不是你想要的。
  • 分离出“共享”与“每服务”配置有点奇怪。使用单独的图表,您可以使用helm install -f两次来提供两个单独的值文件,但在图表图表中,更难获得一组真正的全局设置以及一组每个组件设置而不会重复所有内容。
  • 有一个标准的命名约定,包含Helm helm install --name和特定的组件名称。这看起来很正常,如果它是service-x-redis,如果它是service-x-service-x有点奇怪,如果你有一个全球发布名称the-world-service-x有点奇怪。
  • 可以有充分的理由想要启动多个独立的某些副本,或仅测试一个特定服务的部署脚本,如果您的唯一部署是“绝对一切”,那就更难了。

对于您的用例,您还可以考虑非Docker系统管理工具(Ansible,Chef,Salt Stack)是否可以重现您现有的手部署,而无需完全重建您的系统架构; Kubernetes非常令人兴奋,但旧方法也很有效。

© www.soinside.com 2019 - 2024. All rights reserved.