Java Spring - Spring Cloud Config Server
Java Srping cung cấp tính năng cho phép quản lý file config tập trung thông qua các hệ thống quản lý version như git.
Việc deploy và thay đổi config sẽ dễ dàng hơn khi cloud config hỗ trợ lấy config theo môi trường.
Spring Cloud Config Server đứng giữa control version system (git) và Spring Cloud Config Client (các api cần dùng config).
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.cloudconfig</groupId>
<artifactId>cloud-config-server</artifactId>
<version>1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.3</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<spring-cloud.version>2020.0.3</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
server:
port: 8888 # tự tùy chỉnh
spring:
application:
name: cloud-config # tự đặt tên
cloud:
config:
server:
git:
uri: https://user@bitbucket.org/user/config-client # thay đường dẫn đến control version system
clone-on-start: true
username: username
password: password
searchPaths: '{application}'
security:
user:
name: root
password: pass@2021
logging:
file:
path: /var/log/${spring.application.name}
level:
org.springframework: info
root: info
Trong đó:
- spring.cloud.server.git.uri: config đến hệ thống quản lý version chứa các file config (trong ví dụ này mình dùng bitbucket)
- spring.cloud.server.username: user login hệ thống quản lý version chứa các file config
- spring.cloud.server.password: password login hệ thống quản lý version chứa các file config
- spring.cloud.server.searchPaths: điều kiện thỏa mãn để tìm file config (folder nào, tên application là gì). Ở đây mình để theo {application}-{profile}
- spring.security.user.name: user login khi gọi cloud config server
- spring.security.user.password: password login khi gọi cloud config server
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<springProperty scope="context" name="springAppName"
source="spring.application.name" />
<springProperty scope="context" name="LOGS"
source="logging.file.path"></springProperty>
<appender name="Console"
class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
</Pattern>
</layout>
</appender>
<appender name="RollingFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOGS}/${springAppName}-logger.log</file>
<encoder
class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
</encoder>
<rollingPolicy
class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily and when the file reaches 10 MegaBytes -->
<fileNamePattern>${LOGS}/archived/${springAppName}-logger-%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<!-- LOG everything at INFO level -->
<root level="info">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</root>
<!-- LOG at TRACE level -->
<logger name="com.cloudconfig" level="trace" additivity="false">
<appender-ref ref="RollingFile" />
<appender-ref ref="Console" />
</logger>
</configuration>
package com.cloudconfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer
public class ConfigServer {
public static void main(String[] arguments) {
SpringApplication.run(ConfigServer.class, arguments);
}
}
Nhận xét
Đăng nhận xét