当前位置: 首页 > 知识库问答 >
问题:

Spring开机管理Kubernetes入口

郭曾笑
2023-03-14

我试图将spring boot admin接口添加到kubernetes集群中部署的一些微服务中。spring boot admin应用程序具有以下配置:

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 -}}
GET https://XXXXXX/ui/assets/css/chunk-common.6aba055e.css net::ERR_ABORTED 404

我如何解决这个问题并配置一个传统路径来为来自正确URL的请求中的静态内容提供服务?

提前致谢

共有1个答案

夔桐
2023-03-14

问题是您的spring boot admin界面无法知道您使用的是“/admin”suburl。

nginx.ingress.kubernetes.io/rewrite-target://$1要求nginx重写与第二组匹配的url。因此,当您点击:https://xxxxx/admin/uinginx时,将url重写为https://xxxxxx/ui,然后将其发送到spring Boot。

我不太了解spring boot,但是您应该有一种方法来为它提供一个郊区,所以它不是服务于/ui,而是服务于/$base_url/ui

  • 路径:^(/admin/)(.+)\
  • nginx.ingress.kubernetes.io/rewrite-target:$1/$2
 类似资料:
  • 编辑/解决方案: 我明白了,部分归功于@anemyte的评论。尽管属性不是问题所在(尽管它确实需要更正),但仔细观察后,我发现了问题的真正原因:正在使用的网络接口、端口转发和(糟糕的)运气。 不幸的是,客户机服务选择用它们的桥接接口IP向Eureka注册作为广告IP而不是内部swarm IP--可能是因为在这种情况下(Spring Cloud在内部使用)将返回该IP。 这导致我错误地认为Sprin

  • 有人能帮我走台阶吗...(我在互联网的帮助下尝试了多种方法...不知道我错过了什么?) 注意:根据讨论论坛,我在ingress YAML的部署部分中添加了“hostnetwork:true”来解决“没有主机参数不能工作”,并注释了“type:nodeport”。 更新信息: kubectl描述了更新后的入口路由:在这里,我有ngnix--它工作得很好(我猜ingress和nginx都在相同的命名空

  • 内存管理机制 easySwoole启动后内存管理的底层原理与普通PHP-CLI程序一致,与平时常用的FastCGI模式的内存管理略有区别 内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,内存占用逐步增加,严重的时候耗尽系统的所有内存导致程序崩溃 局部变量 在事件回调函数返回后,所有局部对象和变量会全部回收,不需要unset。如果变量是一个资源类型,那

  • 本文向大家介绍深入理解Spring Boot的日志管理,包括了深入理解Spring Boot的日志管理的使用技巧和注意事项,需要的朋友参考一下 前言 Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持, 如:Java Util Logging,Log4J, Log4J2和Logback。每种Logger都可以通过配置使用控制台或者文件输出

  • 我试图在独立servlet容器(关键tc服务器)上部署spring-boot应用程序,但遇到了spring-boot管理页面的问题。当我使用命令运行应用程序时,我有正确的boot spring-boot admin UI页面,但是当我在tcServer上部署war时,在根路径上,我看到spring-boot admin页面中没有任何应用程序:我如何启用admin页面: jvm 1[2017.08.

  • 读完本文后您应该可以自己创建chart,并创建自己的私有chart仓库。 Helm是一个kubernetes应用的包管理工具,用来管理charts——预先配置好的安装包资源,有点类似于Ubuntu的APT和CentOS中的yum。 Helm chart是用来封装kubernetes原生应用程序的yaml文件,可以在你部署应用的时候自定义应用程序的一些metadata,便与应用程序的分发。 Helm