Не удается подключиться к бэк-энду с помощью мини-куба - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь развернуть приложение в миникубе локально. Когда я запускаю мини-куб, я могу подключиться к интерфейсу, но НЕ к нему.

Ниже приведены файлы yaml

Ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - http:
        paths:
          - path: /
            backend:
              serviceName: client-cluster-ip-service
              servicePort: 3000
          - path: /api/
            backend:
              serviceName: server-cluster-ip-service
              servicePort: 8080

UI развертывания

apiVersion: apps/v1
kind: Deployment
metadata:
  name: client-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      component: web

  template:
    metadata:
      labels:
        component: web
    spec:
      containers:
        - name: client
          image: registry.gitlab.com/test/test1/test2/app-UI
          ports:
            - containerPort: 3000
      imagePullSecrets:
        - name: gitlab-auth

UI-сервис

apiVersion: v1
# sets up networking in kubernetes cluster
kind: Service
metadata:
  name: client-cluster-ip-service
spec:
  selector:
    component: web
  ports:
    - port: 3000
      targetPort: 3000

бэкенд развертывания

apiVersion: apps/v1
kind: Deployment
metadata:
  name: server-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      component: server
  template:
    metadata:
      labels:
        component: server
    spec:
      containers:
        - name: server
          image: registry.gitlab.com/test1/test2/test3/test4-api
          ports:
            - containerPort: 8080
      imagePullSecrets:
        - name: gitlab-auth

Backend-Service

apiVersion: v1
kind: Service
metadata:
  name: server-cluster-ip-service
spec:
  type: ClusterIP
  selector:
    component: server
  ports:
    - port: 8080
      targetPort: 8080

Я получаю сообщение об ошибке ниже в браузере

POST https://192.168.99.111/api/auth/login 404
dispatchXhrRequest  @   xhr.js:155
xhrAdapter  @   xhr.js:16
dispatchRequest @   dispatchRequest.js:49
Promise.then (async)        
request @   Axios.js:55
Axios.<computed>    @   Axios.js:74
wrap    @   bind.js:11
(anonymous) @   LoginForm.tsx:34
callback    @   createBaseForm.js:554
(anonymous) @   createBaseForm.js:579
validateFields  @   createBaseForm.js:541
LoginForm.handleSubmit  @   LoginForm.tsx:17
callCallback    @   react-dom.development.js:147
invokeGuardedCallbackDev    @   react-dom.development.js:196
invokeGuardedCallback   @   react-dom.development.js:250
invokeGuardedCallbackAndCatchFirstError @   react-dom.development.js:265
executeDispatch @   react-dom.development.js:571
executeDispatchesInOrder    @   react-dom.development.js:596
executeDispatchesAndRelease @   react-dom.development.js:695
executeDispatchesAndReleaseTopLevel @   react-dom.development.js:704
forEachAccumulated  @   react-dom.development.js:676
runEventsInBatch    @   react-dom.development.js:844
runExtractedEventsInBatch   @   react-dom.development.js:852
handleTopLevel  @   react-dom.development.js:5029
batchedUpdates$1    @   react-dom.development.js:21463
batchedUpdates  @   react-dom.development.js:2247
dispatchEvent   @   react-dom.development.js:5109
(anonymous) @   react-dom.development.js:21520
unstable_runWithPriority    @   scheduler.development.js:255
interactiveUpdates$1    @   react-dom.development.js:21519
interactiveUpdates  @   react-dom.development.js:2268
dispatchInteractiveEvent    @   react-dom.development.js:5085

1) Когда я запускаю приложение без мини-куба, приложение работает нормально.
2) Когда я запускаю приложение с мини-кубом и нажимаю https://192.168.99.111, передний конец подходит нормально.
3) Как только я пытаюсь нажать кнопку входа в систему, и приложение пытается подключиться к бэкэнд, я получаю вышеуказанную ошибку.
4) По какой-то причине он не может подключиться к бэкэнду при запуске на Minikube и я продолжаю получать ресурс не найдена ошибка.

192.168.99.111 - ip мини-куба

Я новичок в kubernetes, и любая помощь в отладке очень ценится.

Обновление

Я думаю, что это проблема с входным контроллером Когда я вижу в логах контроллера входа, он показывает

192.168.99.1 - [192.168.99.1] - - [10/Jun/2019:00:07:58 +0000] "POST /api/auth/login HTTP/1.1" 404 19 "http://192.168.99.116/auth/login?redirect=/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36" 520 0.001 [default-server-cluster-ip-service-8080] 172.17.0.8:8080 19 0.002 404 702298110b92307929f9817bb50c47ff

вместо http://192.168.99.116/auth/login?redirect=/, это должно было быть http://192.168.99.116/api/auth/login?redirect=/

Почему /api падает?

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Нет проблем с вашей входной конфигурацией.В вашем бэкэнд-приложении есть правило перенаправления себя на путь /auth/login, и оно не может быть решено через контроллер Ingress, если вы хотите добавить префикс.Вы должны настроить свой API-интерфейс для обработки этих URL-адресов с помощью кода приложения.

0 голосов
/ 10 июня 2019

Это то, что nginx.ingress.kubernetes.io/rewrite-target: / делает для вас.Он удаляет префикс в вашей конфигурации входа.Вы можете удалить эту аннотацию, чтобы сохранить /api/ в пути.

См. Это: https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/rewrite

...