spring-boot - Spring Boot 管理员 Kubernetes Ingress
问题描述
我正在尝试向部署在 kubernetes 集群中的一些微服务添加一个 spring boot 管理界面。Spring Boot 管理应用程序具有以下配置:
spring:
application:
name: administrator-interface
boot:
admin:
context-path: "/ui"
server:
use-forward-headers: true
kubernetes 集群有一个入口,用作 api 网关:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ template "fullname" . }}
labels:
app: {{ template "name" . }}
chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
annotations:
{{- range $key, $value := .Values.ingress.annotations }}
{{ $key }}: {{ $value | quote }}
{{- end }}
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
{{- range $host := .Values.ingress.hosts }}
- host: {{ $host }}
http:
paths:
- path: /admin/(.+)
backend:
serviceName: administrator-interface-back
servicePort: 8080
{{- end -}}
{{- if .Values.ingress.tls }}
tls:
{{ toYaml .Values.ingress.tls | indent 4 }}
{{- end -}}
{{- end -}}
当我尝试查看 spring boot admin ui 时,出现以下错误:
资源管理器中的 URL:https://XXXXXX(thisisgivenBYDNS)/admin/ui
GET https://XXXXXX/ui/assets/css/chunk-common.6aba055e.css net::ERR_ABORTED 404
URL 错误,因为它应该是https://XXXXXX/admin/ui/assets/css/chunk-common.6aba055e.css
它没有添加 ingess 给出的 /admin 路径
我该如何解决这个问题并配置一个额外的路径来提供来自正确 URL 的请求中的静态内容?
提前致谢
解决方案
问题是您的 Spring Boot 管理界面无法知道您正在使用“/admin”子网址。
nginx.ingress.kubernetes.io/rewrite-target: /$1
要求 nginx 重写与第二组匹配的 url。因此,当您点击时:https://XXXXX/admin/ui
nginx 将您的 url 重写为https://XXXXXX/ui
然后将其发送到 spring boot。
我不太了解spring boot,但你应该有办法为他提供一个suburl,而不是为/ui
它提供服务/$BASE_URL/ui
。
然后天气它是如何工作的,您可能需要通过以下方式更改 nginx 重写 url 的方式:
path: ^(/admin/)(.+)\
nginx.ingress.kubernetes.io/rewrite-target: $1/$2
推荐阅读
- ruby-on-rails - 如何在 AWS CodeBuild 上运行 docker-compose?
- python - Scrapy on Linkedin 已爬取 0 页
- javascript - Office.context.mailbox.displayNewMessageForm 在移动设备中不起作用
- html - 列表元素的以下兄弟姐妹
- java - Spring Boot - JSON 对象数组到 Java 数组
- sql-server - 必须声明标量变量“@EmailID”
- sql - SSRS 从去年 1 月提取数据
- r - 在R语言中,如果rhandsontable的行名很长,会在屏幕上只显示一部分
- wordpress - 在没有 Ciomand Line 访问和提供商支持的情况下在 Wordpress 上安装 SSL
- python - 如何在三个维度上比较 3D 矢量与平面的方向