spring cloud config開發使用

背景

    隨着程序項目愈來愈多,愈來愈複雜:功能開關、參數配置、第三方服務地址、內部調用、白名單、黑名單等。java

    配置修改後實時生效,灰度發佈,分環境、分集羣管理配置、版本控制、回滾機制。git

    在這樣的大環境下,傳統的經過配置文件、數據庫等方式已經愈來愈沒法知足開發人員對配置管理的需求。spring

一、config server配置

引入config server的依賴

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-config-server</artifactId>
</dependency>

application.yml配置

spring:
  application:
    name: configserver
  cloud:
    config:
      server:
        git:
          uri: https://xxx #配置git倉庫地址
          username: xxx #用戶名
          password: xxx #密碼
server:
  port: 8081

啓動類

@SpringBootApplication
@EnableConfigServer
public class ProviderApplication {
	public static void main(String[] args) {
		SpringApplication.run(ProviderApplication.class, args);
	}
}

二、config client配置

引入依賴

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-config-client</artifactId>
</dependency>

bootstrap.yml配置

server:
  port: 8080
spring:
  application:
    name: cc
  profiles:
    active: api
  cloud:
    config:
      uri: http://localhost:8081 #配置中心
      label: cc_dev #版本、分支
      profile: api
management:
  security:
    enabled: false

    bootstrap.yml讀取配置中心的cc_dev分支中的cc.yml、cc-api.yml。數據庫

    Config Server提供的HTTP接口來獲取數據:     bootstrap

curl    http://localhost:8081/{application}/{profile}/{label}

三、git文件

    master(生產分支):cc.yml、cc-api.yml。。api

    cc_dev(開發分支):cc.yml、cc-api.yml。安全

    cc_test(測試分支):cc.yml、cc-api.yml。服務器

    cc_uat(預生產分支):cc.yml、cc-api.yml。app

四、持續集成,與Jenkins結合

    Jenkins進行自動化時,對應的git分支和服務器的環境保持一致。curl

    

環境 dev(開發) test(測試) uat(預生產) prod(生產)
git分支 dev test uat master
服務器

dev1_ip

dev2_ip

dev3_ip

test1_ip

test2_ip

test3_ip

uat_ip prod_ip

    開發、測試環境對應多套環境,如dev1,dev2,dev3,test1,test2,test3。預生產、生產有且僅有一套環境。

    預生產是生產環境的配置的克隆或者小一號環境。通過預生產就能夠合併到生產環境中去了。

    注意:

     若是遇到緊急突發需求v2,而uat上已經有了v1。v1對應uat分支,v2對應uat_temp分支。

  • 這時能夠將Jenkins中的uat分支修改成uat_temp,先對緊急需求進行測試。
  • uat測試完成後,再將Jenkins的uat_temp分支切回uat分支。

五、多項目共用配置文件

    cc和dd項目共用配置文件。

    cc的配置文件:

server:
  port: 8080
spring:
  application:
    name: cc
  profiles:
    active: api
  cloud:
    config:
      uri: http://localhost:8081 #配置中心
      label: dev #版本、分支
      profile: api
management:
  security:
    enabled: false

    dd的配置文件

server:
  port: 8080
spring:
  application:
    name: dd
  profiles:
    active: api
  cloud:
    config:
      uri: http://localhost:8081 #配置中心
      label: dev #版本、分支
      profile: api
management:
  security:
    enabled: false

    配置中心文件

    其中application.yml、application-env.yml是公共配置。cc開始的爲cc項目中的配置。dd開始的爲dd項目中的配置。

六、Security 安全

  6.1 config server端

    引入依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

    application.yml配置

security:
  basic:
    enabled: true
  user:
    name: admin
    password: admin

6.2 config client

    application.yml配置

spring:
  cloud:
    config:
      uri: http://admin:admin@localhost:8888 #配置中心
      label: prod   #版本、分支
      profile: env
相關文章
相關標籤/搜索