我目前是否被迫使用额外的网络服务器( 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 .
在这个阶段,我猜我需要"bite the bullet"并创建一个 nginx Ingress Controller
. 如果我需要更多服务点,这也将有助于使用 Lego
更新证书以及创建另一个抽象 .
但在我这样做之前,我只是想先检查一下是否没有别的办法?任何帮助表示感谢 .
2 回答
需要Ingress控制器来实现Ingress清单 . 没有它,安装Ingress清单不会做任何事情 . Afaik,部署Ingress是HTTP重定向的最佳方式 .
您可以使入口将HTTP流量重定向到HTTPS . 看看这个tutorial for TLS with traefik,这个tutorial for TLS with nginx .
我已经成功安装了一个Nginx Ingress控制器来强制https通过https://mydigest.co/所以目前很高兴作为一个蛤蜊 .
得到dns SRV记录然后解决....好吧现在有效但这是另一个故事!