可昕之家

可昕之家

张先生

平淡如水,爱护家人,好好工作

34 文章数
0 评论数

K8S怎么保障ingress的https证书和springboot证书一致(springboot-admin例子)

张清磊
2025-03-16 / 0 评论 / 21 阅读 / 0 点赞

例子:

今天在我的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。

错误如下20250316b550d9325f33485b923bc6d5465e3fb3.png

经过AI+搜索,我需要将我的springboot服务需要设置为https。于是

我重新设置了配置如下

20250316a65dbb46c0934b219bf223c8fb32b789.png

我增加了https,以及设置了public-url,同时service也需要同时监控暴漏https的端口,这里就不细说了

通过ingress的访问后,我发现访问后变成了:

Bad Request: This combination of host and port requires TLS

20250316ea3b5d4b6c364e8eaf7c89110fee7b49.png

通过deepseek AI的检索,我终于知道了问题。

解决访问问题:

在 Ingress 中添加注解 nginx.ingress.kubernetes.io/backend-protocol: "HTTPS",强制 Ingress 控制器使用 HTTPS 协议与后端服务通信

完美解决问题,最后我的ingress的配置如下:提供参考

202503169f76dcc6aceb45a4a459fb612ad49503.png

如下:

nginx.ingress.kubernetes.io/backend-protocol: HTTPS
nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
nginx.ingress.kubernetes.io/ssl-redirect: 'true'

至此成功监控

如下

202503166f62be2a825a46a6ade8120a4d3169d7.png

关于如何使用springbootadmin监控微服务

参考文章如下:

跳转

总结

  1. ingress的证书需要和后端服务证书一致,这个是前提

  2. 通过增加

    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"

    来强制ingress和后端进行https通信

  3. 适用于有https场景的需求,通过ingress暴漏域名

上一篇 下一篇
评论
最新回复
    暂无内容
光阴似箭
今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月
文章目录
今日天气