将ACM颁发的证书应用于由EKS创建的负载均衡器

梗概

使用EKS创建的负载均衡器上应用由ACM发行的证书,将其转为HTTPS应用(网站)。

EKS:亚马逊弹性容器服务(Amazon Elastic Container Service)用于Kubernetes
ACM:亚马逊证书管理器(AWS Certificate Manager)

EKS创建负载均衡器吗?

EKS或者说Kubernetes,它们是一种在后台创建各种AWS资源的机制。

好像有各种各样的负载均衡器和弹性网络接口之类的东西被创建出来了。

在创建集群时,我们选择IAM角色来授予该权限,对吗?

请为Amazon EKS和Kubernetes控制平面选择一个IAM角色,以便代表您管理AWS资源。

スクリーンショット 2018-06-19 16.03.28.png

在创建时的负载均衡器

假设我们按照这个样子从宣言中创建服务。

$ kubectl create -f service.yml
kind: Service
apiVersion: v1
metadata:
  name: eks-service
spec:
  type: LoadBalancer
  selector:
    app: rails-api
  ports:
  - protocol: TCP
    port: 80
    targetPort: 3000

当创建了服务时,EKS会同时创建负载均衡器。

为了确认这一点,请输入以下命令。

$ kubectl describe services

找到这样的项目

LoadBalancer Ingress: xxxxxxxxxx.us-east-1.elb.amazonaws.com

xxxxx.us-east-1.elb.amazonaws.com 是应用程序的终端节点。

当您将其粘贴到浏览器中并按下Enter键时,请尝试一下。

http://xxxxxxxxxx.us-east-1.elb.amazonaws.com

我认为可以确认是通过连接在一起的。

小学生才允许使用http对吧

因为可能会被说这样,所以我决定使用https。

修改服务的清单文件。

kind: Service
apiVersion: v1
metadata:
  name: eks-service
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: <ACMで作成した証明書のARN>
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"
spec:
  type: LoadBalancer
  selector:
    app: rails-api
  ports:
  - protocol: TCP
    port: 443
    targetPort: 3000
    • ACMで作成した証明書をロードバランサに適用

あらかじめ作成しておいてください

ロードバランサより内側での通信はhttpで行う

プライベートサブネットにインスタンスを置いている場合などはこんな感じの設定でOK

443ポートでhttpsな通信を受け付ける

印象

    • kubernetesの公式サイトをちゃんと見ていない僕「手動で証明書適用しないとだめなのかな…」

 

    kubernetesの公式サイトをちゃんと見たあとの僕「全部書いてるやん!!!」

据说,关于无需手动努力获得证书的方法,Kubernetes的官方文档中提供了解答。

AWS 上的 SSL 支持

只需在宣言中简单记录,非常轻松方便。

这个还是测试版本吗?这个部分还有点让人担心啊。

最后

不管怎样,官方翻译是最强大的,虽然是英文,但我们还是努力去读吧。虽然我一直在使用谷歌翻译。

广告
将在 10 秒后关闭
bannerAds