Прослушиватель нескольких доменов для входящего контроллера подсистемы балансировки нагрузки приложений

#amazon-web-services #kubernetes #amazon-eks #aws-application-load-balancer

Вопрос:

Я работаю с контроллером балансировки нагрузки AWS K8s (https://github.com/kubernetes-sigs/aws-load-balancer-controller) и мне нужен совет. Мне нужно, чтобы он отвечал на два разных имени хостов с помощью двух разных SSL-сертификатов с подстановочными знаками и направлял трафик одной и той же целевой группе.

Вот мой текущий вход.файл yaml:

 ---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  namespace: gradle
  name: gradle-proxy-dev
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internal
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/certificate-arn: "<scrubbed cert ARN>"
    alb.ingress.kubernetes.io/inbound-cidrs: "<scrubbed>"
    alb.ingress.kubernetes.io/ssl-policy: "ELBSecurityPolicy-TLS-1-2-2017-01"
    alb.ingress.kubernetes.io/healthcheck-path: /info/version
    alb.ingress.kubernetes.io/success-codes: "200"
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
    alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
    alb.ingress.kubernetes.io/load-balancer-attributes: routing.http2.enabled=true
spec:
  rules:
    - http:
        paths:
          - path: /*
            backend:
              serviceName: ssl-redirect
              servicePort: use-annotation
          - path: /*
            backend:
              serviceName: gradle-proxy
              servicePort: 80
 

В настоящее время у него нет проблем с ответом на URL-адрес gradle.internal.domain.com, но выдает ошибку SSL, когда я направляю трафик для gradle.new.domain.com, что имеет смысл, поскольку единственный сертификат предназначен для *.internal.domain.com.

В консоли EC2 я могу прикрепить второй сертификат и добавить правило для пересылки трафика для хоста «gradle.new.domain.com» в созданную целевую группу, но у меня возникли проблемы с тем, чтобы понять, как это зафиксировать в конфигурации входного yaml.

Ответ №1:

Я нашел свое решение здесь в том, что мне не нужны были какие-либо причудливые правила, мне просто нужно было добавить второй SSL-сертификат с подстановочными знаками в конфигурацию входа.