Маршрутизация на основе входного пути Kubernetes не работает должным образом - PullRequest
0 голосов
/ 15 марта 2020

Я установил NGINX Вход в кластер kubernetes. Когда я пытаюсь получить доступ к концу микро-службы через Ingress Controller, он не работает должным образом

  • Путь 1 -> / клиент
  • Путь 2 -> / pra c

Когда я пытаюсь получить доступ к одной из услуг ex. http://test.practice.com/prac/practice/getprac, не работает

enter image description here

но когда я пытаюсь получить доступ без входного пути http://test.practice.com/practice/getprac, это работает

enter image description here

Я не могу понять, почему при входном пути он не работает, и то же самое происходит для других служб

Микросервис 1 (порт 9090 )

apiVersion: apps/v1
kind: Deployment
metadata:
  name: customer
  namespace: practice
  labels: 
    app: customer
spec:
  replicas: 5
  selector:
    matchLabels: 
      app: customer
  template: 
    metadata:
      labels: 
        app: customer
    spec: 
      imagePullSecrets:
      - name: testkuldeepsecret
      containers:
      - name: customer
        image: kuldeep99/customer:v1
        ports:
        - containerPort: 9090
          hostPort: 9090

---
apiVersion: v1
kind: Service
metadata:                     
  name: customer-service
  namespace: practice
  labels: 
spec:                         
  ports: 
  - port: 9090 
    targetPort: 9090
    protocol: TCP
    name: http
  selector:
    app: customer

Микро сервис 2 (порт 8000)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: prac
  namespace: practice
  labels: 
    app: prac
spec:
  replicas: 4
  selector:
    matchLabels: 
      app: prac
  template: 
    metadata:
      labels: 
        app: prac
    spec: 
      imagePullSecrets:
      - name: testkuldeepsecret
      containers:
      - name: prac
        image: kuldeep99/practice:v1
        ports:
        - containerPort: 8000
          hostPort: 8000

---
apiVersion: v1
kind: Service
metadata:                     
  name: prac-service
  namespace: practice
  labels: 
spec:                         
  ports: 
  - port: 8000 
    targetPort: 8000
    protocol: TCP
    name: http
  selector:
    app: prac

Сервис (обслуживание клиентов и сервис c сервис)

NAME               TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
customer-service   ClusterIP   10.97.203.19    <none>        9090/TCP   39m
ngtest             ClusterIP   10.98.74.149    <none>        80/TCP     21h
prac-service       ClusterIP   10.96.164.210   <none>        8000/TCP   15m
some-mysql         ClusterIP   None            <none>        3306/TCP   2d16h

Вход

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: practice-ingress
  namespace: practice
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec: 
  rules:
  - host: practice.example.com
    http: 
      paths:
      - backend:
          serviceName: customer-service
          servicePort: 9090
        path: /customer
      - backend:
          serviceName: prac-service
          servicePort: 8000
        path: /prac

1 Ответ

3 голосов
/ 15 марта 2020

Вы установили эту nginx ingress

nginx.ingress.kubernetes.io/rewrite-target: / аннотацию для правильной работы, вам необходимо установить эту nginx ingress .

Альтернативным способом решения этой проблемы является настройка contextPath на /prac в приложении Spring

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...