Ingress ресурс не дает доступа к незащищенным сервисам - PullRequest
0 голосов
/ 26 июня 2018

Привет! В настоящее время я пытаюсь развернуть свое приложение с помощью движка Google Kubernetes Я выставил свои фронтальные и тыловые сервисы как NodePort, я создал глобальный статический IP-адрес с именем «ip». и я создал входной ресурс. Входной ресурс работал нормально, пока я не добавил правила пути.

вот мой входной ресурс

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: ip
  labels:
    app: myapp
    part: ingress
spec:
 rules:
  - http:
      paths:
      - path: /*
        backend:
          serviceName: backapp
          servicePort: 9000
      - path: /front/*
        backend:
          serviceName: frontapp
          servicePort: 3000

А вот и мои услуги назад:

apiVersion: v1 вид: Сервис метаданные:

  labels:
    app: myapp
    part: back
  name: backapp
  namespace: default
spec:
  clusterIP: 10.*.*.*
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 30646
    port: 9000
    protocol: TCP
    targetPort: 9000
  selector:
    app:  myapp
    part: back
  sessionAffinity: None
  type: NodePort

спереди:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: myapp
    part: front
  name: frontapp
  namespace: default
spec:
  clusterIP: 10.*.*.*
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 31609
    port: 3000
    protocol: TCP
    targetPort: 3000
  selector:
     app: myapp
     part: front
  sessionAffinity: None
  type: NodePort

Каждый раз, когда я пытаюсь http://external -ingress-ф / передний

http://external -ingress-ip / front / home

http://external -ingress-IP / пользователей

http://external -ingress-ф / ...

Все, что я получаю, это default backend - 404

Итак, мой вопрос: что не так с моей конфигурацией, что изменилось, когда я добавил пути?

1 Ответ

0 голосов
/ 29 июня 2018

A Kubernetes NodePort - это самый простой способ получить внешний трафик непосредственно к вашему сервису.

NodePort, как следует из названия, открывает определенный порт для всех узлов (виртуальных машин) и любого трафика, который отправляется на этот порт и пересылается на сервис.

Вернуться к вашей проблеме. Попробуйте использовать эту конфигурацию. Это немного более понятно и содержит только необходимые параметры.

Имейте в виду, что ingress.global-static-ip-name и targetPort обоих Сервисов соответствуют вашим значениям портов Pod.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: $IP # Reserved IP address
  labels:
    app: myapp
    part: ingress
spec:
 rules:
  - http:
      paths:
      - path: /*
        backend:
          serviceName: backapp
          servicePort: 9000
      - path: /front/*
        backend:
          serviceName: frontapp
          servicePort: 3000`

Также необходимо определить отдельные сервисы для обработки входящего трафика:

 apiVersion: v1
 kind: Service
 metadata:
   labels:
     app: myapp
     part: back
   name: backapp
   namespace: default
 spec:
   ports:
   - port: 9000
     protocol: TCP
     targetPort: 9000 # Port on the pod with 'back' application
   selector:
     app: myapp
     part: back
   type: NodePort

И вторая конфигурация для веб-служб:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: myapp
    part: front
  name: frontapp
  namespace: default
spec:
  ports:
  - port: 3000
    protocol: TCP
    targetPort: 3000 # Port on the pod with 'front' application
  selector:
     app: myapp
     part: front
  type: NodePort

Если с новой конфигурацией все будет не так, пожалуйста, напишите комментарий с подробной информацией.

(Я бы хотел сказать Спасибо Антону Костенко за помощь и за работу файлов конфигурации)

...