2017-09-20 4 views
0

は、私はappのように定義される(AWS上で実行されている)私のKubernetesクラスタ上で実行されているという名前の展開があるとします。AWSでHTTPSを使用してKubernetesデプロイメントを世界中に公開する方法は何ですか?

apiVersion: apps/v1beta1 # for versions before 1.6.0 use extensions/v1beta1 
kind: Deployment 
metadata: 
    name: nginx-deployment 
spec: 
    replicas: 3 
    template: 
    metadata: 
     labels: 
     app: nginx 
    spec: 
     containers: 
     - name: nginx 
     image: nginx:1.7.9 
     ports: 
     - containerPort: 80 

(ソース:https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#creating-a-deployment

私はこれらのポッドを公開しますAWS ELBを使用しています。さらに、HTTPS経由でこのサービスを提供する必要があります(おおまかにお勧めします)。利便性の問題として、AWSの証明書マネージャー(ACM)を利用して、自分で証明書を購入し管理するのではなく、常緑樹の証明書を無料で入手したいと考えています。 kubectl expose deployment nginx-deployment --type=LoadBalancer --port=80 --target-port=80 --name=nginx-svc

アンELBが作成されますが、それは、HTTPを全く知らないTCPロードバランサであると私はACMを設定することができません:

私は、このコマンドを使用してサービスを作成することにより、ポッドを公開しようとした場合

それへの証明書。

どのようにしてKubernetesがHTTPロードバランサを作成し、それに証明書を設定するようにサービスを作成できますか?

+0

私は同じ問題を自分自身で解決しようとしています。私はまだ答えはありませんが、私はあなたが入り口https://kubernetes.io/docs/concepts/services-networking/ingress/を作成することを検討することをお勧めします。イングレスは、外部からクラスタへのルートを作成し、TLS証明書のサポートを含みます。 – RobotNerd

+0

彼は返事をありがとう。私は実際にそれを理解し、以下を読んで、それがあなたのために働くかどうかを教えてください –

答えて

0

実際にはそれほど実証されていませんが、実際にこれを行うことは可能です。そのようなYAMLのnginxの-svc.yamlファイルを作成し、この機能を利用するためにhttps://github.com/kubernetes/kubernetes/blob/master/pkg/cloudprovider/providers/aws/aws.go#L125

:あなたはGitHubの上、ここでそれを担当してモジュールのソースコードを見ることができます

apiVersion: v1 
kind: Service 
metadata: 
    name: nginx-svc 
    annotations: 
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-west-1:<account number>:certificate/<certificate id> 
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http 
spec: 
    type: LoadBalancer 
    ports: 
    - port: 443 
    targetPort: 80 
    selector: 
    app: nginx 

と使用それを作成するkubectl: kubectl create -f nginx-svc.yaml

お待ちください!

関連する問題