SCCA 简介
SCCA 全称 spring-cloud-config-admin,微服务下 Spring Boot 应用(包含 Spring Cloud)统一的配置管理平台。
- Github 地址:spring-cloud-config-admin
- 核心贡献者:程序员DD | stone-jin
- 标签:轻量、易用、视觉好、交互好
部署 SCCA
1、运行 MySQL,已有,请忽略此步骤
代码语言:javascript复制docker run --name mariadb -e MYSQL_ROOT_PASSWORD=scca-pwd -d mariadb
2、创建配置文件,假设路径为 ~/scca/bootstrap.properties
代码语言:javascript复制# server
spring.application.name=scca-server
server.port=8080
# scca-rest-server api url prefix
scca.rest.context-path=/xhr
# scca-ui-server embed scca-rest-server
scca.ui.use-embed-scca-rest-server=true
# Datasource
spring.datasource.url=jdbc:mysql://mariadb:3306/config-db
spring.datasource.username=root
spring.datasource.password=scca-pwd
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# embed config server
# warning :create env set contextPath
spring.cloud.config.server.prefix=/scca-config-server
encrypt.key=anoyi
3、运行 SCCA
代码语言:javascript复制docker run -d --name scca
--link mariadb:mariadb
-p 8080:8080
-v ~/scca/bootstrap.properties:/bootstrap.properties
-e SPRING_PARAMS="spring.config.location=/bootstrap.properties"
registry.cn-hangzhou.aliyuncs.com/micro-java/micro-core-config
应用 SCCA
在使用 SCCA 之前,了解三个基本概念:
- 环境:例如:开发环境、测试环境、生产环境等
- 项目:每个 Spring Boot 应用都是一个项目
- 版本:对应 Git 仓库的分支即可,例如:master、1.0.0 等
假设,现在有一个 Spring Boot 应用 【 samples-server 】,配置如下:
代码语言:javascript复制server:
port: 8081
spring:
grpc:
enable: true
port: 6565
如何应用到 SCCA 上呢?
1、新建环境
img
2、创建项目
img
3、添加配置
img
4、依赖 SCCA 启动的 Spring Boot 应用
首先,添加 Maven 依赖:
代码语言:javascript复制 <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>
然后,添加配置文件 resources/bootstrap.properties
,此配置文件可以作为通用配置模板:
# 配置中心:SCCA 地址 SCCA 配置项 spring.cloud.config.server.prefix
spring.cloud.config.uri=http://127.0.0.1:8080/scca-config-server
# 环境
spring.cloud.config.profile=dev
# 项目
spring.application.name=samples-server
# 版本
spring.cloud.config.label=master
最后,启动应用即可!
img
SCCA 进阶
img
SCCA 能够统一管理所有 Spring Boot 应用的配置,那么就给运维带来了极大的便利!
1、首先,可以定义通用性的 Dockerfile
代码语言:javascript复制FROM openjdk:8-jre-alpine
ENV TZ="Asia/Shanghai" JVM_PARAMS="" APP_CONFIG_URL="" APP_ENV="" APP_NAME="" APP_VERSION=""
ADD target/*.jar /server.jar
CMD java $JVM_PARAMS -Djava.security.egd=file:/dev/./urandom -jar /server.jar --spring.cloud.config.uri=$APP_CONFIG_URL --spring.cloud.config.profile=$APP_ENV --spring.application.name=$APP_NAME --spring.cloud.config.label=$APP_VERSION
代码语言:javascript复制JVM 相关参数配置
2、然后,构建通用的 Jenkins 流水线
img
Jenkins 使用 Maven 将代码打包,构建 Docker 镜像,然后推送到镜像仓库,接着使用 Ansible 通过不同变量的设置,将服务部署到 Kubernetes 集群,最后通过 shell 脚本校验服务是否成功部署。