AWS / EKS: не работает вход ALB в несколько каналов / служб - PullRequest
0 голосов
/ 05 марта 2019

Мне нужно иметь возможность использовать одно имя хоста для направления путей к различным службам.Я пробовал несколько входов, несколько путей ... Я в итоге, если не повезло, что пути идут к одному и тому же бэкэнд-сервису.

apiVersion: v1
kind: Service
metadata:
  name: appname.var
  labels:
    app.kubernetes.io/name: appname.var
    helm.sh/chart: {{ template "helmchart.chart" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}
    app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
  ports:
    - port: 80
      targetPort: 8080
  selector:
    app.kubernetes.io/name: appname.var
    app.kubernetes.io/instance: {{ .Release.Name }}
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress.var
 annotations:
    kubernetes.io/ingress.class: alb
    ingress.kubernetes.io/force-ssl-redirect: 'true'
    alb.ingress.kubernetes.io/certificate-arn:  "cert.arn"
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/backend-protocol: HTTP
    alb.ingress.kubernetes.io/healthcheck-protocol: HTTP
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80, "HTTPS": 443}]'
    alb.ingress.kubernetes.io/security-groups: api_alb
    alb.ingress.kubernetes.io/target-group-attributes: stickiness.enabled=true,stickiness.lb_cookie.duration_seconds=604800
      labels:
    app: appname.var
spec:
  type: ClusterIP
  rules:
    - host: api.domainname
      http:
        paths:
          - path: /widgets/*
            backend:
              serviceName: appname-widgets
              servicePort: 80
          - path: /*
            backend:
              serviceName: appname
              servicePort: 80

Этот же код используется для создания "appname "service и" appname-widgets ", включая вход (уникальное имя для входов).

Запросы направляются к одной или другой службе, вероятно, потому что для обоих существуют одинаковые пути.Любые идеи о том, как сделать эту работу?Мне нужно / widgets / *, чтобы перейти только к сервису виджетов, а все остальное (/ *) - к обычному сервису API.

...