Назад | Перейти на главную страницу

404s для конечных точек службы при использовании входа с Gcloud

Я работаю с k8s и gcloud над развертыванием мультисервисного приложения, в котором Ingress отвечает за маршрутизацию запросов к определенной службе. K8s и инфраструктура в целом - это для меня новая область обучения, так что до сих пор это было методом проб и ошибок, но теперь я наткнулся на стену.

Я экспериментировал и строил свое развертывание с помощью minikube, и я создал файл yaml, который успешно развернет все локально на minikube без ошибок. Вы можете увидеть полный yaml-файл развертывания здесь: https://github.com/mwinteringham/restful-booker-platform/blob/kubes/kubes/deploy.yml

Проблема, с которой я столкнулся, заключается в том, что когда я запускаю развертывание в gcloud, я постоянно получаю 404-е. С текущей конфигурацией я могу получить доступ к rbp-ui, обновив мой / etc / hosts, чтобы он указывал на rbp.info, но пытаюсь получить доступ к любым другим конечным точкам службы. Я получаю 404, что означает, что я не могу пройти мимо экрана входа в систему.

Конфигурация Ingress приведена ниже, и я считаю, что мне чего-то не хватает, но я понятия не имею, что именно.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: rbp-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: rbp.info
    http:
      paths:
      - path: /booking
        backend:
          serviceName: rbp-booking
          servicePort: 3000
      - path: /room
        backend:
          serviceName: rbp-room
          servicePort: 3001
      - path: /search
        backend:
          serviceName: rbp-search
          servicePort: 3002
      - path: /
        backend:
          serviceName: rbp-ui
          servicePort: 3003          
      - path: /auth
        backend:
          serviceName: rbp-auth
          servicePort: 3004
      - path: /report
        backend:
          serviceName: rbp-report
          servicePort: 3005
      - path: /*
        backend:
          serviceName: rbp-ui
          servicePort: 3003

Еще кое-что добавить:

  1. Я оставил запуск на ок. 10 минут, чтобы убедиться, что начальные 404-е сообщения при запуске выполнены
  2. Все службы имеют допустимую конечную точку проверки работоспособности, поэтому gcloud сообщает, что все внутренние службы исправны.

Благодаря мехди шарифи Мне удалось это решить. Я удалил параметр re-write-target, а затем использовал подстановочные знаки, чтобы маршрутизация заработала.

В конечном итоге для API с такими путями, как / booking и / booking / 1, я должен был убедиться, что я создал две такие записи:

paths:
- path: /booking
  backend:
    serviceName: rbp-booking
    servicePort: 3000
- path: /booking/*
  backend:
    serviceName: rbp-booking
    servicePort: 3000