Ingress с Google Kubernetes, правила не работают должным образом - PullRequest
1 голос
/ 12 июля 2020

Я сослался на приведенную ниже ссылку от Google для моей реализации https://cloud.google.com/kubernetes-engine/docs/how-to/load-balance-ingress

Я использую ingress-gce для обеспечения доступа к интерфейсу и бэкэнду.

интерфейс - это приложение на основе реакции, где служба имеет тип NodePort backedn - это приложение на основе nodeJS, где служба имеет тип NodePort

, ниже - входящая конфигурация

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: "nginx"
    kubernetes.io/ingress.global-static-ip-name: ia-dev-ip
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  name: ia-prod-ingress
  namespace: default
spec:
  rules:
    - http:
        paths:
          - path: /(.*)
            backend:
              serviceName: ia-prod-landingpage-deploy-service
              servicePort: 80
          - path: /cms(/|$)(.*)
            backend:
              serviceName: ia-prod-cms-deploy-service
              servicePort: 80

ниже приведены подробности i получать, когда я делаю kubectl, описывая ing ​​ia-prod-ingress

Name:             ia-prod-ingress
Namespace:        default
Address:          xx.xxx.xx.xx
Default backend:  default-http-backend:80 (aa.aa.aa.aa:8080)
Rules:
  Host  Path  Backends
  ----  ----  --------
  *
        /(.*)           ia-prod-landingpage-deploy-service:80 (bb.bb.bb.bb:80)
        /cms(/|$)(.*)   ia-prod-cms-deploy-service:80 (cc.cc.cc.cc:8080)
Annotations:
  kubectl.kubernetes.io/last-applied-configuration:  {"apiVersion":"extensions/v1beta1","kind":"Ingress","metadata":{"annotations":{"kubernetes.io/ingress.class":"nginx","kubernetes.io/ingress.global-static-ip-name":"ia-dev-ip","nginx.ingress.kubernetes.io/rewrite-target":"/$1"},"name":"ia-prod-ingress","namespace":"default"},"spec":{"rules":[{"http":{"paths":[{"backend":{"serviceName":"ia-prod-landingpage-deploy-service","servicePort":80},"path":"/(.*)"},{"backend":{"serviceName":"ia-prod-cms-deploy-service","servicePort":80},"path":"/cms(/|$)(.*)"}]}}]}}

  kubernetes.io/ingress.class:                  nginx
  kubernetes.io/ingress.global-static-ip-name:  ia-dev-ip
  nginx.ingress.kubernetes.io/rewrite-target:   /$1
Events:
  Type    Reason  Age                  From                      Message
  ----    ------  ----                 ----                      -------
  Normal  CREATE  20m                  nginx-ingress-controller  Ingress default/ia-prod-ingress
  Normal  UPDATE  3m30s (x7 over 19m)  nginx-ingress-controller  Ingress default/ia-prod-ingress

, когда я посещаю URL-адреса с IP-адресом, который я получаю от ingress-gce, как показано ниже

http://ipaddress/ - > Внешнее приложение загружается, как ожидалось.

http://ipaddress/cms -> Я ожидаю, что серверное приложение ответит. однако даже на http://ipaddress/cms загружается интерфейсное приложение ..

любая идея, какое исправление необходимо для доступа к бэкэнду?

Ниже приведен yaml-файл конфигурации входа, который помог мне решить правильные пути ко всем компонентам


apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: "nginx"
    kubernetes.io/ingress.global-static-ip-name: ia-dev-ip
    nginx.ingress.kubernetes.io/rewrite-target: /$1
  name: ia-prod-ingress
  namespace: default
spec:
  rules:
    - host: xx.yy.zzz.yy.xip.io
      http:
        paths:
          - path: /(.*)
            backend:
              serviceName: ia-prod-landingpage-deploy-service
              servicePort: 80
          - path: /cms/(.*)
            backend:
              serviceName: ia-prod-cms-deploy-service
              servicePort: 80
          - path: /tablegenerator/(.*)
            backend:
              serviceName: ia-prod-metabase-deploy-service
              servicePort: 80
          - path: /wrapperservice/(.*)
            backend:
              serviceName: ia-prod-wrapperservice-deploy-service
              servicePort: 80
...