SpringCloud微服务实战——搭建企业级开发框架(三十四):SpringCloud + Docker + k8s实现微服务集群打包部署-打包配置

Java43

SpringCloud微服务包含多个SpringBoot可运行的应用程序,在单应用程序下,版本发布时的打包部署还相对简单,当有多个应用程序的微服务发布部署时,原先的单应用程序部署方式就会显得复杂且不可控。那么我们就会思考使用简单的部署方式,解决自动化发布、自动化部署、微服务监控等问题。
我们使用目前行业通用的解决方案,Jenkins+GitLab+Maven+Docker+Kubernetes来实现可持续自动化部署微服务的功能。下面将从工程中Maven打包文件配置、Dockfile文件编写开始到Kubernetes配置来说明如何实现SpringCloud微服务可持续自动化部署功能。

在项目打包部署时,我们系统的配置文件需要根据不同的环境来区分开发、测试、生产环境的配置,在之前的SpringBoot工程中,我们用到spring.profiles.active配置属性,使用application.yml、application-dev.yml、application-test.yml、application-sit.yml、application-uat.yml、application-prod.yml来区分不同环境的配置文件。在SpringCloud中,我们用到了Nacos注册中心,Nacos的Config默认读取的是bootstrap.yml配置文件,如果将Nacos Config的配置写到application.yml里面,工程启动时就会一直报错。下面是SpringCloud加载配置文件的顺序:

  • bootstrap.yml(bootstrap.properties)先加载,用于应用程序上下文的引导阶段,可以用来配置application.yml中使用到的参数,由父Spring ApplicationContext加载。
  • application.yml(application.properties)后加载,用于配置各工程模块中使-用到的参数。

所以在SpringCloud工程中我们通过使用bootstrap.yml、bootstrap-dev.yml...等不同的配置文件来区分不同的环境,有些框架是放到同一个yml配置文件中,然后不同的配置放到不同的spring.profiles.active下面,类似于下面这种:

spring:
  profiles: dev
     开发配置项: 开发配置项
spring:
  profiles: test
     测试配置项: 测试配置项

但是,在实际开发过程中,我们开发、测试的配置文件有时会经常修改,而生产部署环境确很少改动,当多人员开发时,难免会有部分人员不小心将配置文件改动影响到生产环境配置,即使没有影响,开发人员在改动时也要小心翼翼,害怕哪里改错。当我们将这些配置分开时,开发、测试的配置文件无论如何改动,都不会影响到生产环境文件,这正是我们想要的结果。所以我们将不同环境的配置放到不同的配置文件中。我们将配置文件分为bootstrap.yml、bootstrap-dev.yml、bootstrap-test.yml、bootstrap-prod.yml

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
Java

Dubbo实战教程

"Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC(一种远程调用) 分布式服务框架(SOA),致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。" RPC翻译过来叫做...
Java

Storm3

```java;gutter:true; package storm.scheduler; import java.lang.management.ManagementFactory; import ...
Java

Java(8)数组

数组 数组存储相同类型值的序列。 声明数组 数组是一种数据结构,用来存储同一类型值的集合。通过一个整型下标(index,或称索引)可以访问数组中的每一个值。例如,如果a是一个整型数组, a[i]就是数...
Java

Grafana 安装

环境 CentOS 8 1. 安装 sudo nano /etc/yum.repos.d/grafana.repo 写入配置 ```txt [grafana] name=grafana baseurl...
Java

一文学会Java的交互式编程环境jshell

什么是交互式编程环境?重点词 交互,在这样的编程环境中,你每输入一行代码,环境都会给你一个反馈,这就是交互式的编程环境。这种编程环境并不太适合工程化的复杂性需求,但在一些快速验证、简单计算之类的场景下...
Java

TCP网络协议

TCP 面向连接:三次握手,四次挥手 可靠:超时重发解决丢包,包序号解决乱序、重复包 实现:滑动窗口、拥塞控制 TCP/IP四层协议 应用层:telnet,ftp,自实现网络应用程序 netstat ...
Java

如何痛快地写一篇博客

如何痛快地写一篇博客 当各位踏入咱们的科技领域时,一定也有想写一篇博客的想法吧。可能在博客园,也可能在自建网站。但是,写博客要用markdown,不同于word,它的图片功能全部需要提供链接。而且直接...
Java

DHCP 动态主机设置协议 分析

在TCP/IP网络中,每个接口都需要一个IP地址、子网掩码和广播地址( IPv6中没有),简单来说就是需要网络配置信息。如果想访问外部网络可以通过DNS获取外部地址,再通过路由间接转发出去。但是在"家...