在GCE上使用Kubernete Ingress重定向/强制TLS

时间:2017-07-12 04:28:57

标签: nginx kubernetes google-compute-engine

我目前是否被迫使用其他网络服务器(nginx)在GCE托管时将所有Kubernete Ingress流量重定向到https?

我希望将Golang应用程序部署到野外。作为一个学习实验,我以为我会用GCE来主持& K8s部署/扩展。我deploymentsservices都按预期返回流量并使用Lets Encrypt for TLS终止创建了证书。

我现在正在实施Ingress,因为Service LoadBalancers似乎已被弃用。在这个阶段,我使用Ingress的静态IP用于backend请求 - 如下所示

apiVersion: extensions/v1beta1 kind: Ingress metadata: name: web-ingress annotations: kubernetes.io/ingress.global-static-ip-name: "kubernetes-ingress" ingress.kubernetes.io/ssl-redirect: "true" spec: tls: - secretName: web-ssl backend: serviceName: web servicePort: 80

当然,我希望所有的http流量都通过https / TLS。分配ingress.kubernetes.io/ssl-redirect: "true"条目没有任何区别。作为一个偷偷摸摸的尝试,我想我可以将servicePort更改为443.由于我的服务接受80/443端口上的请求,因此返回了有效的响应,但http并未强制为https。

在这个阶段,我猜我需要"咬紧牙关"并创建一个nginx Ingress Controller。如果我需要更多服务点,这也将有助于使用Lego更新证书以及创建另一个抽象。

但在我做之前,我只是想先检查一下是否有其他方法?任何帮助表示感谢。

2 个答案:

答案 0 :(得分:2)

需要Ingress控制器来实现Ingress清单。没有它,安装Ingress清单不会做任何事情。 Afaik,部署Ingress是HTTP重定向的最佳方式。

您可以使入口将HTTP流量重定向到HTTPS。查看此tutorial for TLS with traefik和此tutorial for TLS with nginx

答案 1 :(得分:-1)

我已经成功安装了一个Nginx Ingress控制器来强制通过https://mydigest.co/进行https,所以目前很高兴作为一个蛤蜊​​。

获取dns SRV记录以解决......但它现在有效,但这是另一个故事!