使用kubernetes中的Jenkins&Deployment构建租户特定的docker镜像

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

我的应用结构

我正在开发基于租户的面向服务架构的应用程序,并使用kubernetes和Jenkins进行部署。在我的应用程序中,它包含15-20个使用spring boot开发的微服务。每个微服务需要为不同的客户单独部署。如果我有5个客户,我需要为这5个客户部署15个微服务。这是关于我的租赁模型的描述。

部署规划

对于这个应用程序,我计划使用kubernetes和Jenkins来部署和实现CI / CD管道。

我的发现

我的应用程序的性质是通过使用spring cloud配置服务器活动配置文件功能,从相同的代码为不同的客户构建映像。意味着在我的docker文件中,我通过定义哪个是活动配置文件来启动特定图像。如下,

java -jar -Dspring.profiles.active=<Profile_Name> dbdata-0.0.1-SNAPSHOT.jar

这里我在配置服务器中配置配置文件。所以我在这里使用相同的代码来创建属于每个客户的多个图像。

混乱

如果我遵循这种风格,我如何使用Jenkins从相同的代码库创建和启动不同的图像?是否可以使用相同代码存储库中的Jenkins启动多个图像?

总之,如何根据上述应用程序结构了解多个映像创建和部署?

jenkins kubernetes
1个回答
1
投票

由于您有几个微服务,最好使用Helm + Chartmuseum等工具来简化这些服务的管理。在这种情况下,您将为每个租户提供单独的版本(和Kubernetes命名空间)。如果每个租户需要不同的泊坞窗图像,则可以使用不同的泊坞窗图像标签。

至于Jenkins部分,我没有看到任何问题(你可以从1个repo构建任意数量的docker图像):

  • 创建工作以生成和上传docker图像
  • 创建工作以生成和上传头盔图表
  • 创建在Kubernetes中部署/更新版本的作业

如果它们仅在命令行中有所不同,则不需要构建不同的docker镜像。可以在Kubernetes资源描述中覆盖此命令行(或env变量)。

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