Входящий ресурс не маршрутизирует правильно выставленные сервисы - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь развернуть свое приложение с помощью GKE: я добавил входной ресурс по этой ссылке https://kubernetes.io/docs/concepts/services-networking/ingress/

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

и выставил мои сервисы как NodePort: работает только сервис, сопоставленный с "/" (я тестировал оба сервиса: front и back)

(пути к этому не работают

[IP] / назад / (мои пути)

В уроке я нашел это предложение:

Вам нужен контроллер Ingress, чтобы удовлетворить Ingress, просто создавая ресурс не будет иметь никакого эффекта.

Мой вопрос:

1) В чем разница между входным ресурсом и контроллером?

2) GKE предлагает входной контроллер по умолчанию или я должен добавить это вручную, чтобы исправить мою проблему пути?

3) Что еще может быть не так с моей конфигурацией

Ps: это одна из моих услуг

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

и это то, что я получаю, когда описываю свой вход

Annotations:
  ingress.kubernetes.io/url-map:                k8s-um-default-ingress--17c7235ab3ece101
  kubernetes.io/ingress.global-static-ip-name:  app-ip
  ingress.kubernetes.io/backends:               {"k8s-be-31278--17c7235ab3ece101":"HEALTHY","k8s-be-32112--17c7235ab3ece101":"HEALTHY","k8s-be-32287--17c7235ab3ece101":"HEALTHY"}
  ingress.kubernetes.io/forwarding-rule:        k8s-fw-default-ingress--17c7235ab3ece101
  ingress.kubernetes.io/target-proxy:           k8s-tp-default-ingress--17c7235ab3ece101


Events:   Type    Reason   Age               From                     Message   ----    ------   ----              ----                    
-------

 Warning  UrlMap   46m (x5 over 4h)  loadbalancer-controller  googleapi: Error 412: Invalid fingerprint., conditionNotMet

  Normal  Service  4m (x22 over 2h)  loadbalancer-controller  no user specified default backend, using system default

1 Ответ

0 голосов
/ 11 июля 2018

1) Ingress - это ресурс Kubernetes, который инкапсулирует коллекцию правил и конфигурацию для маршрутизации внешнего трафика HTTP (S) во внутренние службы. Входной контроллер отвечает за чтение информации о входном ресурсе и соответственно обрабатывает эти данные, Для удовлетворения входного контроля требуется входной контроллер, простое создание ресурса не даст никакого эффекта.

2) По умолчанию да его GLBC , вы можете развернуть приложение, не используя входящие ресурсы. GKE использует GLBC по умолчанию входной контроллер GLBC, и вам не нужно настраивать путь, так как путь настроен в вашем входном ресурсе (файле YAML).

Ingress тесно интегрирован в Kubernetes, что означает, что ваши существующие рабочие процессы вокруг kubectl, вероятно, будут хорошо распространяться на управление входом. Обратите внимание, что входной контроллер обычно не устраняет необходимость во внешнем балансировщике нагрузки - входной контроллер просто добавляет дополнительный уровень маршрутизации и контроля за балансировщиком нагрузки.

3) Согласно вашему ресурсу Ingress yaml: - направляет запросы с путем, начинающимся с / Back /, в службу Backapp. - направляет все другие запросы в службу frontapp.

После проверки конфигурации Yaml и получаемой вами UrlMap я предлагаю вам добавить хост в соответствии с вашими правилами, поскольку IngressRule без хоста получает подстановочный знак.

...