是否可以将 EKS 服务配置为使用 HTTPS?

5 service https kubernetes amazon-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
Run Code Online (Sandbox Code Playgroud)

有没有办法将其配置为使用 HTTPS 而不是 HTTP?

Moh*_*med 6

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

1.    为您的自定义域申请公共 ACM 证书

2. 确定要与负载均衡器的 HTTPS 侦听器一起使用的证书ARN

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
Run Code Online (Sandbox Code Playgroud)

4. 要创建服务对象,请运行以下命令:

$ kubectl create -f service.yaml
Run Code Online (Sandbox Code Playgroud)

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

$ kubectl get service
Run Code Online (Sandbox Code Playgroud)

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

6. 打开Amazon EC2 控制台,然后选择负载均衡器

7. 选择您的负载均衡器,然后选择Listeners

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

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

10.    将您的自定义域名与您的负载均衡器名称相关联

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

https://yourdomain.com
Run Code Online (Sandbox Code Playgroud)


Era*_*oni 0

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

这里有一个完整的演练

您可以在此处查看如何设置 TLS/SSL