0

我在 OpenShift Pod 中运行 Spring Boot 2.0.0 应用程序。为了执行就绪和活跃度探测,我依赖于 spring boot 执行器健康检查。我的应用程序属性文件具有以下属性:

server.address=127.0.0.1
management.server.address=0.0.0.0
server.port=8080
management.server.port=8081
management.endpoints.enabled-by-default=false
management.endpoint.info.enabled=true
management.endpoint.health.enabled=true
management.endpoints.web.exposure.include=health,info
management.endpoint.health.show-details=always
management.security.enabled=false

以下是readiness和liveness探针的相关配置。

livenessProbe:
    failureThreshold: 3
    httpGet:
      path: /mmcc
      port: 8081
      scheme: HTTP
    initialDelaySeconds: 35
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 15


readinessProbe:
    failureThreshold: 3
    httpGet:
      path: /jjkjk
      port: 8081
      scheme: HTTP
    initialDelaySeconds: 30
    periodSeconds: 10
    successThreshold: 1
    timeoutSeconds: 15

我的期望是,我的准备和活跃度探测应该会因这些随机 url 而失败,但它们会成功。不知道我在这里缺少什么。请帮助。

4

1 回答 1

1

西蒙的回答给了我一个起点,我寻找curl -vvv localhost:8081/jjkjk输出。该 URL 将我重定向到登录 url,所以我认为这是因为我的类路径中有 spring 安全性。所以我在我的属性文件中添加了:

management.endpoints.web.exposure.include=health,info

并添加

@Configuration
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests()
            .anyRequest().permitAll()
    }

}

这通过启用没有凭据的 url 访问解决了我的问题。

于 2021-01-14T23:01:48.850 回答