2017-10-17 90 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上。 –

相關問題