1. 程式人生 > >Docker環境下使用SpringBootAdmin2.x教程

Docker環境下使用SpringBootAdmin2.x教程

() 包括 end 3.0 詳細 ide basic 部署 final

Spring Boot Admin 2.x是一個用於監測管理微服務應用的程序,通過Eureka註冊中心發現服務,然後獲取服務的運行狀態、日誌信息、並提供一套UI界面供系統運維人員檢查,同時結合Spring Security進行登錄權限認證

首先上完整的Github項目代碼: liumapp/spring-boot-admin-in-docker

然後是完整的Wiki文檔: 使用文檔

所需依賴

  • spring boot 2.0.2

  • spring cloud Finchley.RELEASE

  • codecentric的spring-boot-admin 2.0.2

  • docker及docker-compose

  • maven

快速啟動
更新admin-server和admin-client的application.yml配置文件

spring:
profiles:
active: docker
使用以下命令安裝docker鏡像

./build-image.sh
使用以下命令啟動docker容器

docker-compose up -d
等待幾十秒後,用瀏覽器訪問 http://localhost:8766

登錄用戶名是 : admin

登錄密碼是 : adminadmin

你可以在admin-server的application.yml中更改賬號密碼

使用以下命令停止容器:

docker-compose down
使用以下命令刪除docker鏡像:

./rm-image.sh
日誌管理
首先請clone項目到本地

如果您只希望了解跟日誌管理相關的內容,那麽請使用git命令切換到v1.2.0的tag

git checkout v1.2.0
在這個版本下,我們基於v1.0.0的版本,對admin-client進行了一些配置上的改動:

logging:
file: /usr/local/tomcat/project/spring-boot-admin-in-docker/log/admin-client.log
pattern:
file: "%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(%5p) %clr(${PID}){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n%wEx"

management:
endpoints:
web:
exposure:
include: "*"
上面的改動中,我們通過management開放了所有的actuator節點信息,因為在springboot2.x系列下,默認只開放了三個,如果您希望在admin-server中查詢到詳細信息,您需要全部開啟他們

然後logging.file指向日誌文件的存放地址,請確保該目錄具有可寫權限

之後再依次運行admin-eureka、admin-client跟admin-server

訪問瀏覽器的 http://localhost:8766/ ,在點擊admin-client進入詳情頁,我們可以發現所有的配置信息包括日誌信息將會羅列出來

配置Spring Security
如果您只希望了解跟Spring Security相關的內容首先請將項目切換到v1.3.0版本

git checkout v1.3.0
在之前的版本中,我們並沒有引入spring security

這意味著admin-server管理控制臺隨便是誰都可以登錄,這在本地開放環境下是沒有什麽影響的

但是如果發布到線上呢?

所以接下來要實現的功能,就是給admin-server添加一個登錄登出的界面跟按鈕

首先我們要對admin-server引入spring security

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
隨後進行配置:

spring:
security:
user:
name: "admin"
password: "adminadmin"

eureka:
metadata-map:
user.name: "admin"
user.password: "adminadmin"
user.name與user.password便是登錄的賬號與密碼

接下來修改啟動類的代碼:

@Configuration@EnableAutoConfiguration
br/>@EnableAutoConfiguration
br/>@EnableAdminServer

public static void main(String[] args) {
    SpringApplication.run(AdminServerMain.class, args);
}

@Configuration
public static class SecuritySecureConfig extends WebSecurityConfigurerAdapter {

    private final String adminContextPath;

    public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
        this.adminContextPath = adminServerProperties.getContextPath();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(adminContextPath + "/");

        http.authorizeRequests()
                .antMatchers(adminContextPath + "/assets/**").permitAll()
                .antMatchers(adminContextPath + "/login").permitAll()
                .anyRequest().authenticated()
                .and()
                .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
                .logout().logoutUrl(adminContextPath + "/logout").and()
                .httpBasic().and()
                .csrf()
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                .ignoringAntMatchers(
                        adminContextPath + "/instances",
                        adminContextPath + "/actuator/**",
                        adminContextPath + "/logout"
                );
        // @formatter:on
    }

}

}
啟動類代碼主要是參考spring boot admin官方手冊上的

但是他們的官方手冊有一個bug:

當你完全按照官方手冊上來的做,你會發現點擊“log out”按鈕的時候,會報403異常

我附上的代碼把這個bug解決掉了

接下來配置admin-client端,只需要在其註冊到eureka的時候,附上admin-server配置的賬號密碼即可:

eureka:
instance:
metadata-map:
user.name: "admin"
user.password: "adminadmin"
Docker環境下運行
接下來我們利用docker-compose將admin-client、admin-server以及admin-eureka部署到docker環境下面運行

如果您只希望了解跟Docker環境下運行的內容,請利用git命令,將項目代碼切換到v2.1.0版本

git checkout v2.1.0
版本切換後,項目目錄下面會多出三個文件:build-image.sh、rm-image.sh和docker-compose.yml

build-image.sh

腳本文件,用於安裝三個微服務(admin-client、admin-server和admin-eureka)的docker鏡像

rm-image.sh

腳本文件,用於刪除三個微服務的docker鏡像

ps:要刪除鏡像,必須在鏡像生成的容器處於stop狀態下才可以執行

docker-compose.yml

在執行完build-image.sh之後,通過docker-compose編排工具,啟動容器的配置文件

具體啟動命令為:

docker-compose up -d
停止命令為:

docker-compose down
利用docker-compose up -d命令啟動成功後,我們可以訪問瀏覽器的admin-server界面

您也可以通過Docker的容器工具:kitmatic來查看容器的運行狀態

Author:liumapp

Home-page:http://www.liumapp.com

Email:[email protected]

Docker環境下使用SpringBootAdmin2.x教程