今天在我的K8S启动了spring-boot-admin-starter-server,准备监控我的微服务集群。我的springboot服务
配置
server:
port: 8088
spring:
security:
user:
name: admin
password: admin
profiles:
active: dev
application:
name: kexin-admin-server
server:
port: 8088
spring:
security:
user:
name: admin
password: admin
profiles:
active: dev
application:
name: kexin-admin-server
server:
port: 8088
spring:
security:
user:
name: admin
password: admin
profiles:
active: dev
application:
name: kexin-admin-server
server:
port: 8088
spring:
security:
user:
name: admin
password: admin
profiles:
active: dev
application:
name: kexin-admin-server
然后我通过ingress走https域名访问,但是我在登录后,发现界面访问失败,一片空白,抓包发现其中的css等加载访问请求是http,但是我的主域名是https。
错误如下
经过AI+搜索,我需要将我的springboot服务需要设置为https。于是
我重新设置了配置如下
我增加了https,以及设置了public-url,同时service也需要同时监控暴漏https的端口,这里就不细说了
通过ingress的访问后,我发现访问后变成了:
Bad Request: This combination of host and port requires TLS
通过deepseek AI的检索,我终于知道了问题。
在 Ingress 中添加注解 nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
,强制 Ingress 控制器使用 HTTPS 协议与后端服务通信
完美解决问题,最后我的ingress的配置如下:提供参考
如下:
nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
nginx.ingress.kubernetes.io/ssl-redirect: 'true'
至此成功监控
如下
关于如何使用springbootadmin监控微服务
参考文章如下:
ingress的证书需要和后端服务证书一致,这个是前提
通过增加
nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
来强制ingress和后端进行https通信
适用于有https场景的需求,通过ingress暴漏域名