一、基于 K8S/Jenkins 平台的微服务发布解决方案

2.1 发布流程设计

1、开发同学提交代码;

2、Jenkins自动触发构建(代码拉取/编译/执行Dockerfile业务逻辑/镜像推送);

3、通过控制器/HELM部署应用到测试环境;

4、测试验证后通过Jenkins再次构建发布到PROD环境;

5、服务暴露/访问/验证;

基于kubernetes完整的DevOps流程:

Aspose.Words.92c93c4b-d6ae-4638-8148-703d690945eb.002

涉及技术栈:

Gitlab,Jenkins,Harbor,Kubernetes(Kubectl / Helm / Yaml / NFS / Ingress / LB),Maven...

Aspose.Words.92c93c4b-d6ae-4638-8148-703d690945eb.003

小结:

综上所述,使用 Jenkins Pipeline 实现自动化部署需要遵循以上几个步骤。通过 Pipeline 定义管道、定义步骤、定义触发条件、集成和自动化测试以及环境管理,我们可以实现一个标准化的自动化部署方案。这种方案可以为开发团队提供更快、更高效、 更稳定的构建和部署过程,从而提高团队的生产力和质量。

2.2 流水线自动发布微服务项目

2.2.1 将微服务项目自动化部署到 K8s 平台的需求

1、完全自动化部署,无需过多人工干预。

2、可以选择部署/回滚某个、某些微服务。

3、在部署/升级微服务时,可对微服务某些特性做配置,例如:namespace、 branch、apptype、replicas、requests/limits。

2.2.2 实现思路

在微服务架构中,会涉及几个、几十个微服务,如果每个服务都创建一个item,会增加 维护的成本,因此需要编写一个 通用的Pipeline项目 ,将这些 微服务部署 差异化的部分 使用Jenkins参数化,然后由人工 交互确认 发布微服务,构建完成后采用 企微/钉钉 通知

研发同学只负责维护应用Dockerfile,其余控制器文件制定一系列标准,使用 Helm 完成 YAML 文件的高效复用和微服务部署。

例:JAVA应用标准:底层镜像JDK8,指定生成jar包位置,jar包名称使用项目名, svc名称,ingress路由.....

2.3 可观察性

2.3.1 基础设施层

  • 资源监控可以快速查看负载的CPU、内存、网络等指标的使用率。

2.3.2 容器性能层

  • 提供集群、容器的部分性能指标监控,并集成在容器服务控制台中展示。

2.3.3 应用性能层

  • 无侵入式应用探测。

  • 侵入式应用APM监控。

2.3.4 用户业务层

  • 日志层观测/监控。

  • 域名拨测/核心接口探测/上下游业务监控。

2.4 总结

总的来说,基于 K8S/Jenkins 平台的微服务发布解决方案可以实现自动化流程,提高发布效率和质量。

  • 实现了快速、高效、稳定的微服务部署;

  • 提供了全面的监控和管理功能,帮助开发团队流程更加流畅;

  • Jenkins Pipeline 还提供了一种可编程的方法来定义构建、测试和部署步骤,使得各 种部署过程都是标准化的,避免了系统的错误率;

  • 更少的人为干预,更多的标准化流程保证了生产环境的稳定性;