You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何访问K8S集群中经Ingress暴露的Spring Boot应用的H2控制台

解决K8S中Spring Boot应用H2控制台无法访问的问题

1. 确认Spring Boot应用的H2配置

先检查应用的配置文件(application.properties或application.yml),确保H2控制台已开启并允许外部访问:

配置文件示例(properties格式)

# 开启H2控制台
spring.h2.console.enabled=true
# 允许非本地访问(默认仅localhost可访问)
spring.h2.console.settings.web-allow-others=true
# 确认控制台路径(默认就是/h2-console,可根据实际调整)
spring.h2.console.path=/h2-console

配置文件示例(yaml格式)

spring:
  h2:
    console:
      enabled: true
      settings:
        web-allow-others: true
      path: /h2-console

注意:如果测试环境使用特定配置文件(如application-review.yml),要确保上述配置在该环境文件中生效。

2. 检查Ingress路径转发规则

确保Ingress资源配置包含/h2-console的路径转发规则,以下是Nginx Ingress的配置示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp-ingress
  annotations:
    # 若应用有路径前缀,需添加重写注解(无前缀可忽略)
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - host: myapp.com
    http:
      paths:
      # 转发应用主路径(如有前缀)
      - path: /myapp(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: myapp-service
            port:
              number: 8080
      # 单独配置H2控制台的路径转发
      - path: /h2-console(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: myapp-service
            port:
              number: 8080

同时确认Ingress Controller(如Nginx Ingress)的Pod处于正常运行状态:

kubectl get pods -n <ingress-namespace>

3. 验证集群内部连通性

先在集群内确认应用本身的H2控制台可访问:

  • 进入应用Pod内部测试:
kubectl exec -it <your-app-pod-name> -- curl http://localhost:8080/h2-console

返回200状态码说明应用配置正常;若失败,回到第一步排查应用配置。

  • 通过Service测试访问:
kubectl run -it --rm --image=curlimages/curl curl-test -- curl http://myapp-service:8080/h2-console

若失败,检查Service的selector是否匹配应用Pod的labels,端口是否正确映射到应用的服务端口。

4. 检查Ingress Controller路由配置

如果使用Nginx Ingress,可查看生成的Nginx配置,确认/h2-console的路由规则存在:

kubectl exec -it <nginx-ingress-controller-pod-name> -- cat /etc/nginx/nginx.conf | grep -A 10 -B 5 h2-console

5. 浏览器访问注意事项

  • 硬刷新浏览器(Ctrl+F5)避免缓存旧页面;
  • 确认H2控制台的连接URL正确,内存库通常为jdbc:h2:mem:<your-db-name>,默认用户sa,密码为空(未配置时);
  • 尝试用浏览器隐私模式访问,排除安全插件或设置的影响。

内容的提问来源于stack exchange,提问作者Rajan Chauhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 10:15:56