Я работаю с 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
Еще кое-что добавить:
Благодаря мехди шарифи Мне удалось это решить. Я удалил параметр re-write-target, а затем использовал подстановочные знаки, чтобы маршрутизация заработала.
В конечном итоге для API с такими путями, как / booking и / booking / 1, я должен был убедиться, что я создал две такие записи:
paths:
- path: /booking
backend:
serviceName: rbp-booking
servicePort: 3000
- path: /booking/*
backend:
serviceName: rbp-booking
servicePort: 3000