为Kubernetes NodePort服务提供SSL/TLS支持

5

问题

我需要通过https将Kubernetes NodePort服务外部公开。

设置

  • 我已经在裸机上部署了Kubernetes,并通过Helm在集群上部署了Polyaxon
  • 我需要使用外部虚拟机通过浏览器访问Polyaxon的仪表板。
  • 该仪表板作为NodePort服务公开,我可以通过http连接到它。但是,在我的情况下,我无法通过https连接。
  • 在“构建”期之后,集群和虚拟机都无法访问更广泛的互联网。它们将相互连接,就这样。

Polyaxon据说通过其自己的配置支持SSL / TLS,但几乎没有关于此的文档。我已经尽力解决这个问题,也在他们的github上提出了一个问题,但到目前为止还没有得到任何帮助。

所以我现在想知道是否有更通用的Kubernetes hack可以帮助我解决这个问题。
解决方案:
我正在寻找最简单的解决方案,而不是最优雅或可扩展的解决方案。还有一些事情可能会使我的情况比普通用户更简单,他们希望使用https,即:
- 只需支持一个节点上的https,而不是每个节点。 - 我不需要(或真的不想要)域名;连接到https://<ip_address>:<port>不仅可以,而且更好。 - 自签名证书也可以。
所以我希望有一种方法可以直接操作NodePort服务,使得https在虚拟机上工作。如果这不可能,我考虑过的其他解决方案是使用Ingress Controller或某种代理,但我认为这些解决方案都有点不成熟。我对Kubernetes和网络概念都是新手,所以如果您要提出更复杂的建议,请讲得很慢:)
非常感谢您的帮助!

这可能是你正在寻找的内容:https://stackoverflow.com/questions/52043128 - Crou
你在这方面有什么进展吗?似乎可以使用stunnel和NodePort与自签名证书一起工作,并且有一个用于redis加密的docker容器:https://github.com/Runnable/redis-stunnel。我不确定证书是否能够在集群内部路由时与NodePort一起使用,需要进行测试。 - Jørgen Tvedt
1个回答

5

Ingress-controller是一种标准的方式,可以通过TLS连接从集群向客户端暴露HTTP后端。

现有的NodePort服务具有可用作Ingress后端的ClusterIP。 ClusterIP类型的服务已足够,因此您可以稍后更改服务类型,以防止通过nodeIP:nodePort进行HTTP访问。 Ingress-controller允许您终止TLS连接或将TLS流量传递到后端。

您可以使用自签名证书或使用cert-manager与Let's encrypt服务。

请注意,从0.22.0版本开始,Nginx-ingress重写语法已更改,文章中的一些示例可能已过时。

请检查以下链接:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接