URL порта хоста в Swagger, похоже, исчез после добавления дополнительного пути в K8s Ingress - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть приложение весенней загрузки, которое имеет некоторые конечные точки, например: product / version

Затем я развернул приложение в сети K8s и выставил его, используя Ingress, как показано ниже:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - http:
      paths:
      - path: /productApp
        backend:
          serviceName: productappservice
          servicePort: 80

Я добавил путь к входу, чтобы мое приложение работало под my-host:8080/productApp/

В конфигурации Deployment мне нужно добавить дополнительный context-path в мое приложение, используя ConfigMap для сопоставленияс URL-адресом, доступным для входа:

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: product-app
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: product-app
    spec:
      containers:
        - name: product-app
          image: my-docer-registry/product-app:latest
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
          env:
            - name: server.servlet.context-path
              valueFrom:
                configMapKeyRef:
                  name: product-app-values
                  key: server.servlet.context-path

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: product-app-values
data:
   server.servlet.context-path: '/productApp'

Итак, теперь мое приложение работает под my-host:8080/productApp/, и когда я попытался вызвать API ex: my-host:8080/productApp/product/version, оно работало нормально.

Проблема возникла, когда я работаю с Swagger.У меня есть чванство под: my-host:8080/productApp/swagger-ui.html, и когда я попытался вызвать product/version API, он вернул TypeError: Failed to fetch.Затем я понял, что URL-адрес хоста, на который отправляет запрос swagger, больше не my-host:8080, а только my-host:

curl -X GET "http://my -host /productApp / product / version"-H" принять: application / json; charset = UTF-8 "

и вот пример json:

{
    "swagger": "2.0",
    "info": {
        "version": "0.0.1-SNAPSHOT",
        "title": "Product App REST API"
    },
    "host": "my-host",
    "basePath": "/productApp",
    "tags": [{
        "name": "Product App API",
        "description": "REST API of Product App"
    },
    {
        "name": "version API",
        "description": "Version information of application and REST API"
    }],
    "paths": {
        .....
    }
}

ЧтоЯ ожидаю, что здесь URL-адрес хоста должен быть my-host:8080, а не только my-host, поэтому запрос в swagger не был отправлен.

У кого-нибудь есть идеи, как решить эту проблему.Спасибо заранее!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...