我们有Spring Boot Admin版本2.0.3和相应的客户端版本。
我们的Spring Boot实例已部署到Pivotal Cloud Foundry。
一切正常,直到我们部署新版本的Spring Boot实例。将为该实例生成一个新的内部URL,并将其注册到admin。但是它并没有从管理员注销已删除的实例。
因此它使spring boot admin处于不一致状态。例如:
在尝试重试注册实例后,如何使其自身注销。
我尝试设置:
spring.boot.admin.client.auto-deregistration = true
但是它并没有达到预期的效果。
答案 0 :(得分:0)
设置auto-deregistration=true
使您的客户端应用程序向端点/instances/{id}
上的服务器发送http删除调用。服务器上也必须为此端点禁用CSRF检查。 Spring Boot管理文档中的示例安全性配置中缺少此配置。 (请参见https://github.com/codecentric/spring-boot-admin/issues/1251)
要解决此问题,请替换
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.ignoringAntMatchers(adminContextPath + "/instances", adminContextPath + "/actuator/**");
使用
.csrf()
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
.ignoringRequestMatchers(
new AntPathRequestMatcher(adminContextPath + "/instances", HttpMethod.POST.toString()),
new AntPathRequestMatcher(adminContextPath + "/instances/*", HttpMethod.DELETE.toString()),
new AntPathRequestMatcher(adminContextPath + "/actuator/**")
);