Вход в Openshift

#kubernetes #openshift #kubernetes-ingress

#kubernetes #openshift #kubernetes-вход

Вопрос:

У меня есть приложение, которое отлично работает в контейнерах docker, и я работаю над переходом на Openshift, но у меня возникают проблемы с входом в Openshift.

Услуги:

  1. доступ к аутентификации (keycloak) на www.website.com/auth -> пользовательский интерфейс keycloak
  2. Страница продукта доступна на www.website.com / -> статический пользовательский интерфейс веб-сайта
  3. Серверная часть доступна на 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 <служба приложений>, я получаю ответ …. мне просто нужно перенаправить путь к приложению на другой