Весенняя загрузка админа Kubernetes Ingress - PullRequest
0 голосов
/ 21 февраля 2020

Я пытаюсь добавить интерфейс администратора с весенней загрузкой для некоторых микросервисов, которые развернуты в кластере kubernetes. Приложение администрирования весенней загрузки имеет следующую конфигурацию:

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 -}}

, когда я пытаюсь увидеть администратора весенней загрузки 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

Он не добавляет путь / admin, заданный ingess

Как я могу решить эту проблему и настроить дополнительный путь для обслуживания сервера c содержание в запросе с нужного URL?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 21 февраля 2020

Проблема в том, что ваш интерфейс администратора для весенней загрузки не может знать, что вы используете подурл "/ admin".

nginx.ingress.kubernetes.io/rewrite-target: /$1 попросите nginx переписать ваш URL, соответствующий второй группе. Поэтому, когда вы нажимаете: https://XXXXX/admin/ui nginx перепишите ваш URL-адрес на https://XXXXXX/ui и затем отправьте его на загрузку с пружиной.

Я не очень хорошо знаю загрузку с пружиной, но у вас должен быть способ предоставить он субурл, так что вместо того, чтобы /ui обслуживать его на /$BASE_URL/ui.

Тогда, если он будет работать, вам может понадобиться изменить способ nginx переписать URL-адрес следующим образом:

  • path: ^(/admin/)(.+)\
  • nginx.ingress.kubernetes.io/rewrite-target: $1/$2
0 голосов
/ 22 февраля 2020

Наконец-то я нашел решение.

У администратора при загрузке Spring есть инструмент для этого, называемый "publi c URL"

      spring:
        application:
          name: administrator-interface
        boot:
          admin:
            context-path: "/ui"
            ui:
              public-url: "https://XXX/admin/ui"
      server:
        use-forward-headers: true

, при такой конфигурации я говорю администратору весенней загрузки, что я хочу соединиться с контекстным / пользовательским интерфейсом, но при попытке загрузить ресурсы он должен сделать запрос в /admin/ui.

Теперь я могу соединиться с интерфейсом через https: / XXX / ui и отправляет запрос для загрузки ресурсов из https://XXX/admin/ui добавление префикса, установленного ingress

Спасибо @ Noé

...