Настройте Istio Ingress с помощью AWS ELB для трафика HTTPS с помощью специального сертификата ACM - PullRequest
0 голосов
/ 19 сентября 2019

Я развернул Kubeflow в кластере EKS, но хочу настроить прослушивание HTTPS с помощью специального сертификата ACM.Kubeflow использует входной шлюз Istio для получения внешнего трафика и по умолчанию настроен только для HTTP-трафика.

Когда я проверяю файл ingress.yaml, который создает объект Ingress, я вижу, что он настроен только для HTTP:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}]'
  name: istio-ingress
spec:
  rules:
    - http:
        paths:
          - backend:
              serviceName: istio-ingressgateway
              servicePort: 80
            path: /*

То же самое существует для шлюза Istio:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: kubeflow-gateway
  namespace: kubeflow
spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - '*'
    port:
      name: http
      number: 80
      protocol: HTTP

Единственная статья, которую я могу найти по приему трафика TLS, взята из учебника по документации Istio для службы книг , но в его конфигурации используется сертификат, смонтированный непосредственно в файловой системе.в /etc/istio/ingressgateway-bookinfo-certs/tls.crt:

$ kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: bookinfo-gateway
spec:
  selector:
    istio: ingressgateway # use istio default ingress gateway
  servers:
  - port:
      number: 443
      name: https-bookinfo
      protocol: HTTPS
    tls:
      mode: SIMPLE
      serverCertificate: /etc/istio/ingressgateway-bookinfo-certs/tls.crt
      privateKey: /etc/istio/ingressgateway-bookinfo-certs/tls.key
    hosts:
    - "bookinfo.com"
EOF

Проблема в том, что, когда я обычно настраиваю AWS ELB для прослушивания трафика HTTPS, мне обычно приходится указывать сертификат SSL от ACM (Amazon Certificate Manager).Например, это снимок экрана, на котором я вручную настраиваю балансировщик нагрузки, созданный Istio для прослушивания трафика HTTPS: enter image description here Это сертификат, который я приобрел для своих зон размещения, приобретенных у Route 53. Однако ячестно говоря, не имею ни малейшего представления, как я должен указывать этот сертификат в своих конфигурациях YAML Istio или даже как его монтировать.Я знаю, что это довольно простой вопрос, но может ли кто-нибудь указать мне направление обучения или пошаговое руководство по использованию слушателей HTTPS с ACM для входа в Istio?

1 Ответ

1 голос
/ 19 сентября 2019

Я думаю, вам просто нужно добавить аннотацию.Вы можете указать, какой сертификат использовать для своего балансировщика нагрузки, например:

alb.ingress.kubernetes.io / certificate-arn: arn: aws: acm: eu-central-1: 1231234564: Certificate / 4564abc12-d3c2-4455-8c39-45354cddaf03 (замените ARN, который вы получаете от ACM)

И я полагаю, что вам может потребоваться прослушать порт 443.

Документы на доступные аннотации доступны на https://kubernetes -sigs.github.io / AWS-ALB-Ingress-контроллер / руководство / входящий / аннотаций /

...