您的位置:  首页 > 技术 > java语言 > 正文

Spring Boot 项目想上 K8s?用 Zadig 就完事了

2021-09-22 11:00 https://my.oschina.net/koderover/blog/5265123 Zadig云原生交付 次阅读 条评论

Zadig on Github Zadig on Gitee

阅读原文 / 加入 Zadig 技术交流群

​Spring Boot 是构建 Java 后端应用程序的一种非常流行的框架,被企业和开发者广泛采用。本文介绍如何使用 Zadig 持续交付 Spring Boot 项目到 Kubernetes 上,该项目主要包含 Maven 构建的 Worker 、DB(Postgres) 以及 Redis 这三个服务,以下步骤包含从 Code 到 Ship 的整个过程的演示。

准备工作

  • 项目案例中用到的 worker 服务源代码、YAML 文件、Dockerfile 文件,可以在 GitHub Zadig 仓库 examples/voting-app 项目中找到

  • 建议把源码放到自己的 GitHub 代码仓库后再进行下面的操作

项目配置

  • 创建项目,具体内容如下图所示:

  • 接下来会看到创建成功的提示:

创建服务

  • 创建服务

创建服务有两种方式,第一种是选择平台编辑直接把 YAML 内容粘到系统中。第二种是选择从仓库导入 YAML 文件,示例中采用第二种。

    • 点击仓库托管,在弹出的窗口中选择代码仓库,同步 examples->voting-app->freestyle-k8s-specifications->worker 文件目录,加载 worker 服务 YAML 配置文件。

    • 系统会自动检测 YAML 格式是否合法,右侧会自动解析出来系统变量、自定义变量和服务组件,这里也可以继续添加自定义变量。具体过程如下图所示:

 

  • 创建构建

    • 这里可以选择 worker-e2e 这个服务组件添加构建,然后选择代码库和添加构建脚本,具体如下图所示:

       

    • 构建脚本如下

cd $WORKSPACE/zadig/examples/voting-app/workerdocker build -t $IMAGE -f Dockerfile.j .docker push $IMAGE

添加完成后,点击保存构建。然后点击仓库托管,继续添加 DB(Postgres) 和 Redis 服务,如下图所示:

    实际场景中已存在现有可用的中间件服务,在网络联通情况下可以直接使用;若同一中间件服务针对不同环境需要使用不同的服务地址,可以通过设置环境变量的方式配置

    • 添加成功后,点击下一步,完成服务配置。

    加入运行环境

    • 进入「加入运行环境」,系统会自动创建两套集成环境和三条工作流,两套集成环境可分别给开发和测试使用,三条工作流也会自动绑定对应的集成环境以达到持续交付的目的。具体如下图所示:

    工作流交付

    • 点击运行工作流 voting-app-workflow-dev 对 worker 服务进行更新,来实现 dev 环境的持续交付

    • qa 环境的持续交付类似的操作,不赘述。

    到此,您已熟悉 Zadig 的基本功能了,下面将展示如何配置自动触发工作流。

    配置自动触发工作流

    • 创建基于 GitHub 事件的触发器,修改 voting-app-workflow-dev 工作流,为 dev 环境设置 GitHub 事件触发器,系统目前支持 push 和 pull_request 两种事件,具体如下图所示:

    前提条件:需要配置 GitHub Webhook,全局 Webhook 请参考 GitHub Webhook

    • 提交 代码库 PR,在 Check runs 中会展示具体的系统工作流的状态,具体如下图所示:

    • 点击任务链接可以跳转到 Zadig 系统里查看工作流具体执行信息,如下图所示:

    • 待工作流执行完毕,可看到 dev 环境 worker 服务的镜像已经被更新了,具体如下图所示:

    通过以上步骤,我们已经完成了部署在 Kubernetes 上的 Spring Boot 项目持续交付配置,通过接入 Zadig 开发者可以方便的对服务进行查看、管理和更新,比如服务查看、Pod Debug、实时日志等。

    关于 Zadig

    Zadig 是基于 Kubernetes 设计、研发的开源分布式持续交付 (Continuous Delivery) 产品,为开发者提供云原生运行环境,支持开发者本地联调、微服务并行构建和部署、集成测试等。Zadig 内置了面向 Kubernetes、Helm、云主机、大体量微服务等复杂业务场景的最佳实践,为工程师一键生成自动化工作流 。

    欢迎大家 Star、Fork、 Watch!和众多开发者一起探讨、交流,共建开源社区!

    加入开源 Zadig 技术交流群 🔥

    • 0
      感动
    • 0
      路过
    • 0
      高兴
    • 0
      难过
    • 0
      搞笑
    • 0
      无聊
    • 0
      愤怒
    • 0
      同情
    热度排行
    友情链接