我目前是否被迫使用其他网络服务器(nginx
)在GCE托管时将所有Kubernete Ingress流量重定向到https?
我希望将Golang应用程序部署到野外。作为一个学习实验,我以为我会用GCE来主持& K8s部署/扩展。我deployments
和services
都按预期返回流量并使用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
更新证书以及创建另一个抽象。
但在我做之前,我只是想先检查一下是否有其他方法?任何帮助表示感谢。
答案 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记录以解决......但它现在有效,但这是另一个故事!