2017-10-17 105 views
1

在我的Kubernetes群集中配置SSL终端时出现问题。试图找出发生这种事情的最佳地点。AWS上的Kubernetes使用NGINX入口控制器和SSL终止

我已经能够得到它的工作按照说明使用service.beta.kubernetes.io/aws-load-balancer-ssl-cert上市here,然后更新入口控制器服务于包括SSL证书的详细信息注释:

kind: Service 
apiVersion: v1 
metadata: 
    name: ingress-nginx 
    namespace: ingress-nginx 
    labels: 
    app: ingress-nginx 
    annotations: 
    service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: '*' 
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:... 
spec: 
    type: LoadBalancer 
    selector: 
    app: ingress-nginx 
    ports: 
    - name: https 
    port: 443 
    targetPort: 80 

我再有入口规则和服务设置类似于:

apiVersion: extensions/v1beta1 
kind: Ingress 
metadata: 
    name: app1 
    annotations: 
    kubernetes.io/ingress.class: nginx 
spec: 
    rules: 
    - host: app1.foo.bar 
    http: 
     paths: 
     - backend: 
      serviceName: app1 
      servicePort: 80 

--- 

apiVersion: v1 
kind: Service 
metadata: 
    name: app1 
spec: 
    type: LoadBalancer 
    ports: 
    - name: http 
    port: 80 
    targetPort: 80 
    selector: 
    app: app1 

--- 

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: app1 
spec: 
    template: 
    metadata: 
     labels: 
     app: app1 
    spec: 
     containers: 
     - image: nginx 
     name: nginx 
     ports: 
     - containerPort: 80 

当去app1.foo.bar我可以看到:

  • HTTP请求重定向到https
  • SSL证书正确应用

本来我是想证书适用于我个人的应用服务。我可以看到证书被应用于AWS中的ELB,但没有被传递。所以我的问题是:

这是正确的配置还是有更好的解决方案?

谢谢:)

回答

-1

我会建议终止对Nginx的入口控制器SSL与ELB暴露,并使用KUBE-LEGO用于自动化SSL证书管理。

https://github.com/kubernetes/ingress-nginx & https://github.com/jetstack/kube-lego

+0

谢谢你 - 如果你看到我的'入口,nginx'服务,这是使用你所列出的控制和传球请求通过时也终止SSL。这个配置对你来说看起来是否正确? – timothyclifford

+0

你在这里试图做的似乎是ELB终止,这不是我所建议的。只需将入站服务定义为常规服务,即可暴露端口80和443,而不需要任何附加功能(代理协议放在一边,因为它很有意义)。然后你的SSL终止会发生在NginX上。 –