У меня есть приложение весенней загрузки, которое имеет некоторые конечные точки, например: 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 не был отправлен.
У кого-нибудь есть идеи, как решить эту проблему.Спасибо заранее!