#kubernetes #openshift #kubernetes-ingress
#kubernetes #openshift #kubernetes-вход
Вопрос:
У меня есть приложение, которое отлично работает в контейнерах docker, и я работаю над переходом на Openshift, но у меня возникают проблемы с входом в Openshift.
Услуги:
- доступ к аутентификации (keycloak) на www.website.com/auth -> пользовательский интерфейс keycloak
- Страница продукта доступна на www.website.com / -> статический пользовательский интерфейс веб-сайта
- Серверная часть доступна на www.website.com/api -> пользовательский интерфейс серверного API
4. Интерфейс доступен на www.website.com/app -> это должно перенаправить на www.website.com/auth/realm …
Все работает, кроме пункта 4. (перенаправление на www.website.com/auth/realm …). Когда я запускаю www.website.com/app Я получаю ошибку 404 — Не найдено (перенаправление не происходит). Настройка в docker отлично работает с приведенной ниже конфигурацией nginx. Только в Openshift с текущей конфигурацией входа я получаю ошибку 404.
Вот моя конфигурация nginx, которая работает для настройки docker:
proxy_http_version 1.1;
proxy_redirect off;
proxy_pass_request_headers on;
proxy_set_header Host $host;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_buffering off;
location / {
set $upstream_host 127.0.0.1;
set $upstream_port 27002;
proxy_pass http://$upstream_host:$upstream_port$request_uri;
}
location /auth {
set $upstream_host 127.0.0.1;
set $upstream_port 27005;
proxy_pass https://$upstream_host:$upstream_port$request_uri;
}
location = /app {
return 302 /app/;
}
location ~ ^(/app)(/.*)$ {
set $upstream_host 127.0.0.1;
set $upstream_port 27004;
proxy_pass http://$upstream_host:$upstream_port$2$is_args$args;
proxy_set_header X-Forwarded-Prefix $1;
}
Вот моя конфигурация входа:
kind: Ingress
apiVersion: networking.k8s.io/v1beta1
metadata:
name: example
namespace: xzy
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: website.com
http:
paths:
- path: /app
pathType: ImplementationSpecific
backend:
serviceName: service-frontend
servicePort: 27004
- path: /api
pathType: ImplementationSpecific
backend:
serviceName: service-backend
servicePort: 27003
- path: /
pathType: ImplementationSpecific
backend:
serviceName: service-productpage
servicePort: 27002
- path: /auth
pathType: ImplementationSpecific
backend:
serviceName: service-auth
servicePort: 27001
status:
loadBalancer: {}
Комментарии:
1. Убедитесь, что вы
/app
действительно обслуживаете/app
путь. Он не удаляется при передаче его на серверную часть… Я был укушен этим в прошлом.2. да, это так… когда я делаю curl <служба приложений>, я получаю ответ …. мне просто нужно перенаправить путь к приложению на другой