使用 Kubernetes 部署 Spring Boot

Posted

技术标签:

【中文标题】使用 Kubernetes 部署 Spring Boot【英文标题】:Deploy the Spring boot with Kubernetes 【发布时间】:2020-01-16 07:42:04 【问题描述】:

我正在我工作的项目中开始实施,但我有一些疑问。

    我有一个项目,其中包含多个 spring 配置文件,并且我可能希望对每个配置文件进行复制。

    例子:

    开发和登台(1 个副本) 生产(3 个副本)

    我应该如何处理这种情况,为每个配置文件创建一个部署文件?

    您通常将 Kubernetes .yml 保存在哪里?在项目内的“kubenetes”文件夹中,还是仅用于存储这些文件的存储库中?

【问题讨论】:

【参考方案1】:

您应该将它们与您的代码一起存储在构建文件夹中。如果您在多个平台(AKS、EKS、GKE、OpenShift..)上部署,您可以为每个平台创建一个子文件夹。

环境特定配置的数量应保持在最低限度。 因此,我建议对 CI/CD 管道中的文件使用一些模板。 (以头盔为例)

如果您不想担心这些文件,可以查看 Spinnaker。

【讨论】:

然后您会在项目的根目录下创建一个目录并将文件放入其中吗?你有多个个人资料的例子吗?【参考方案2】:

我会考虑使用Helm 图表来管理您的部署。这就是我们如何管理我们的 Spring Boot 应用程序(在我当前的项目中大约有 20 个),并让我们使用ConfigMaps 在部署的每个阶段(开发、质量保证、生产)中注入不同的环境设置,包括配置文件。

【讨论】:

您通常将 Kubernetes .yml 保存在哪里?在项目中的“kubenetes”文件夹中,还是仅用于存储这些文件的存储库中? Você teria algum exemplo? 我们不会在 Helm 设置中使用 kubernetes.yml。每个应用程序都有自己的 chart.yml 和相应的部署描述符 YAML 文件(例如,如果一个应用程序被部署为一个简单的服务,它会得到一个 service.yml;对于我们的守护程序集,它们会得到一个 daemonset.yml 等) . 使用这个策略你可以使用jenkins管道持续部署吗? 是的,我们有一个 Jenkins 作业来构建我们的启动应用程序和标签,并将新的 Docker 映像推送到存储库。我们所有的 Helm 图表都是源代码控制的,并被打包到我们交付给客户的单个 tar 文件中。我们维护一组“仅限工厂”的 Helm 图表,用于设置我们期望在生产中设置的内容(即数据库凭据、SSL 证书等)。 你有github上的例子吗?

以上是关于使用 Kubernetes 部署 Spring Boot的主要内容,如果未能解决你的问题,请参考以下文章

部署 spring-cloud-kubernetes kubernetes-hello-world-example 失败

部署微服务的时候,Spring Cloud 和 Kubernetes 哪个更好?

使用 docker 和 azure 容器注册表在 azure kubernetes 中部署 Angular 和 Spring Boot 应用程序

如何确定部署在 Kubernetes 上的 Spring Boot 应用程序中出现 CrashLoopBackOff 错误的原因

kubernetes容器内的代理不会拦截任何HTTP流量

Dockerize vue js前端和spring boot后端并部署在kubernetes集群上