【问题标题】:Configure Istio Ingress using AWS ELB for HTTPS traffic with a custom ACM certificate使用 AWS ELB 为带有自定义 ACM 证书的 HTTPS 流量配置 Istio Ingress
【发布时间】:2020-01-20 03:22:30
【问题描述】:

我在 EKS 集群上部署了 Kubeflow,但想使用自定义 ACM 证书配置 HTTPS 侦听。 Kubeflow 使用 Istio 的入口网关来接收外部流量,并且默认情况下仅配置用于 HTTP 流量。

当我检查创建 Ingress 对象的 ingress.yaml 文件时,我看到它仅配置为 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 documentation tutorial for its book service,但它的配置似乎是使用直接挂载到文件系统 /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 流量时,我通常必须从 ACM(Amazon 证书管理器)指定 SSL 证书。例如,这是我手动配置 Istio 创建的负载均衡器以侦听 HTTPS 流量的屏幕截图: 这是我为从 Route 53 购买的托管区域获得的证书。但是,老实说,我不知道应该如何在 Istio YAML 配置中指定此证书,甚至不知道如何挂载它。我知道这是一个有点基本的问题,但是有人可以为我指明如何将 HTTPS 侦听器与 ACM 一起用于 Istio 入口的教程或演练的方向吗?

【问题讨论】:

    标签: amazon-web-services ssl https kubernetes istio


    【解决方案1】:

    我认为您只需要添加注释即可。 您可以像这样指定要用于负载均衡器的证书

    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:eu-central-1:1231234564:certificate/4564abc12-d3c2-4455-8c39-45354cddaf03 (替换为您从 ACM 获得的 ARN)

    而且我相信你可能需要监听 443 端口。

    https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/ 上提供的可用注释文档

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-04
    • 2021-03-24
    • 2016-07-10
    • 2020-12-05
    • 2016-09-03
    • 2022-06-16
    • 2020-11-09
    • 1970-01-01
    相关资源
    最近更新 更多