为Kubernetes NodePort服务支持SSL / TLS

时间:2019-03-06 17:03:23

标签: networking kubernetes

问题

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

设置

  • 我已经在裸机上部署了Kubernetes,并通过Helm在集群中部署了Polyaxon
  • 我需要使用群集外部的虚拟机通过浏览器访问Polyaxon的仪表板
  • 该仪表板作为NodePort服务公开,我可以通过http连接到它。我不能能够通过https连接,这对我来说是一个硬要求。
  • 在最初的“扩展”期之后,群集和虚拟机都将无法访问更广泛的Internet。他们将彼此连接,仅此而已。

Polyaxon可以通过自己的配置支持SSL / TLS,但是关于它的文档很少。我已经尽了最大的努力来解决该问题,并在他们的github上碰了an issue,但到目前为止还没有运气。

所以我现在想知道是否可能有一个更通用的Kubernetes黑客可以在这里帮助我。

解决方案

我正在寻找最简单的解决方案,而不是最优雅或可扩展的解决方案。还有一些事情可能会使我的情况比想要https的普通用户更简单,即:

  • 可以在一个节点上而不是每个节点上支持https
  • 我不需要(或真的想要)域名;在https://<ip_address>:<port>连接不仅可以,而且更可取
  • 也可以使用自签名证书

因此,我希望有某种方法可以直接操作NodePort服务,以便https将在虚拟机上运行。如果这不可能,那么我考虑过的其他解决方案都在使用Ingress Controller或某种代理,但是在我看来,这些解决方案都有些生硬。我是一个兼具Kubernetes和网络思想的新手,因此,如果您要提出更复杂的内容,请说得很慢:)

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

入口控制器,这是通过TLS连接从群集到客户端公开HTTP后端的标准方法。

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

您可以使用自签名证书,也可以将cert-manager与Let's encrypt服务一起使用。

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

检查链接: