有没有一种方法可以配置EKS服务以使用HTTPS?

时间:2019-06-10 23:16:59

标签: service https kubernetes eks

这是我们当前的EKS服务的配置:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: main-api
  name: main-api-svc
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-type: nlb
spec:
  externalTrafficPolicy: Cluster
  ports:
    - name: http-port
      port: 80
      protocol: TCP
      targetPort: 80
  selector:
    app: main-api
  sessionAffinity: None
  type: LoadBalancer

是否可以将其配置为使用HTTPS而不是HTTP?

2 个答案:

答案 0 :(得分:3)

要终止Amazon Elastic Kubernetes服务上的HTTPS流量并将其传递到后端:

1。 Request a public ACM certificate用于您的自定义域。

2。确定要与负载均衡器的HTTPS侦听器一起使用的ARN of the certificate

3。在您的文本编辑器中,根据以下示例创建一个 service.yaml 清单文件。然后,编辑注释以提供步骤2中的ACM ARN。

apiVersion: v1
kind: Service
metadata:
  name: echo-service
  annotations:
    # Note that the backend talks over HTTP.
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    # TODO: Fill in with the ARN of your certificate.
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:{region}:{user id}:certificate/{id}
    # Only run SSL on the port named "https" below.
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "https"

spec:
  type: LoadBalancer
  selector:
    app: echo-pod
  ports:
  - name: http
    port: 80
    targetPort: 8080
  - name: https
    port: 443
    targetPort: 8080

4。要创建 Service 对象,请运行以下命令:

$ kubectl create -f service.yaml

5。要返回 LoadBalancer 类型的服务的DNS URL,请运行以下命令:

$ kubectl get service

注意::如果群集中正在运行许多活动服务,请确保从命令输出中获取类型为 LoadBalancer 的正确服务的URL。

6。打开Amazon EC2 console,然后选择负载均衡器

7。选择您的负载均衡器,然后选择监听器

8。对于 Listener ID ,请确认您的负载均衡器端口设置为 443

9。对于 SSL证书,请确认您在YAML文件中定义的SSL证书已附加到负载均衡器。

10。 Associate your custom domain name with your load balancer name

11。最后,在Web浏览器中,使用以下HTTPS协议测试您的自定义域:

https://yourdomain.com

答案 1 :(得分:0)

您应该使用入口(而不是服务)在集群外部公开http / s 我建议使用ALB Ingress Controller

有完整的演练here

,您将看到如何设置TLS / SSL here