微服務下配置管理中心 SCCA

img


SCCA 簡介

SCCA 全稱 spring-cloud-config-admin,微服務下 Spring Boot 應用(包含 Spring Cloud)統一的配置管理平臺。java


部署 SCCA

一、運行 MySQL,已有,請忽略此步驟mysql

docker run --name mariadb -e MYSQL_ROOT_PASSWORD=scca-pwd -d mariadb

二、建立配置文件,假設路徑爲 ~/scca/bootstrap.propertiesgit

# 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

三、運行 SCCA程序員

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 以前,瞭解三個基本概念:github

  • 環境:例如:開發環境、測試環境、生產環境等
  • 項目:每一個 Spring Boot 應用都是一個項目
  • 版本:對應 Git 倉庫的分支便可,例如:master、1.0.0 等

假設,如今有一個 Spring Boot 應用 【 samples-server 】,配置以下:spring

server:
  port: 8081

spring:
  grpc:
    enable: true
    port: 6565

如何應用到 SCCA 上呢?sql

一、新建環境docker

img

二、建立項目shell

img

三、添加配置bootstrap

img

四、依賴 SCCA 啓動的 Spring Boot 應用

首先,添加 Maven 依賴:

<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 應用的配置,那麼就給運維帶來了極大的便利!

一、首先,能夠定義通用性的 Dockerfile

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
參數 描述
JVM_PARAMS JVM 相關參數配置
APP_CONFIG_URL 配置中心的地址,對應 spring.cloud.config.uri
APP_ENV 應用發佈的環境,對應 spring.cloud.config.profile
APP_NAME 服務名稱,對應 spring.application.name
APP_VERSION 服務版本,對應 spring.cloud.config.label

二、而後,構建通用的 Jenkins 流水線

img

Jenkins 使用 Maven 將代碼打包,構建 Docker 鏡像,而後推送到鏡像倉庫,接着使用 Ansible 經過不一樣變量的設置,將服務部署到 Kubernetes 集羣,最後經過 shell 腳本校驗服務是否成功部署。

掃碼關注我:

本文由博客一文多發平臺 OpenWrite 發佈!

相關文章
相關標籤/搜索