EKS 服务 SSL 端点

EKS 服务 SSL 端点

创建service使用 EKS 时,它通过 AWS 负载均衡器使用 http 公开。

kubectl apply -f service.yaml- 将创建一个由 EKS 管理的负载均衡器,并且无法修改。任何修改,无论有效与否,都将被 AWS 在某些时候覆盖。

我正在尝试将服务公开为 HTTPS。

修改 aws 负载均衡器以使用 acm 证书在 https 中侦听 443,将提供一个临时解决方案,当 EKS 将负载均衡器刷新回“出厂设置”时,该解决方案将被重置。

最好的方法似乎是创建一个ingress可以支持 HTTPS 的负载均衡器。请遵循以下文章:

https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html

https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html

listen-ports并被certificate-arn添加到 ingress yaml 中

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  namespace: game-2048
  name: ingress-2048
  annotations:
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80},{"HTTPS":443}]' # Added by me
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-1:411686525067:certificate/8adf7812-a1af-4eae-af1b-ea425a238a67

spec:
  ingressClassName: alb
  rules:
    - http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: service-2048
              port:
                number: 80

EKS将创建一个ALB具有主机名的,例如:k8s--------d4ees4dc9b-1296497080.eu-central-1.elb.amazonaws.com该主机名位于 下amazonaws.com

当添加到 yaml 配置时,certificate-arn将创建具有端口 443 监听器的 ALB,并附加指定的 ACM 证书。

但是,由于 ALB 主机位于amazonaws.com域下,证书不匹配,我又回到了原点。

如何让 EKS 创建 https ALB?

在更高级别上,我管理 DNS并将为 ALB 主机cloudflare创建 CNAME 代理记录api.mydomain.comk8s--------d4ees4dc9b-1296497080.eu-central-1.elb.amazonaws.com

为了使 DNS 代理正常工作,双方都必须支持 https。

答案1

问题中描述的配置就是您需要获得SSL endpoint

一旦配置了监听 https/443 的 ALB 以及适合alb.ingress.kubernetes.io/certificate-arn您的非 aws 的ALB domain.com

A代理人domain.com从到 的CNAME 记录(cloudflare)k8sd4ees4dc9b-1296497080.eu-central-1.elb.amazonaws.com将启用domain.com通过 ALB 到 的连接,并且具有 ALB 提供的有效 SSL 认证。

使用 SSL 连接到 aws 生成地址将调用 SSL 不匹配警告,这是正常的,也理应如此。

另一种选择是使用 aws PCA,但这需要更复杂的配置。

相关内容