支持 Kubernetes NodePort 服务的 SSL/TLS

JJL*_*JJL 6 networking kubernetes

问题

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

设置

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

Polyaxon 据称通过其自己的配置支持 SSL/TLS,但对此的文档很少。我已经尽最大努力以这种方式解决这个问题,并且还在他们的 github 上遇到了一个问题,但到目前为止还没有任何运气。

所以我现在想知道是否有更通用的 Kubernetes hack 可以帮助我。

解决方案

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

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

所以我希望有某种方法可以直接操作 NodePort 服务,以便 https 可以在虚拟机上工作。如果这是不可能的,我考虑过的其他解决方案是使用入口控制器或某种代理,但这些解决方案在我看来都有点不成熟。一般来说,我是 Kubernetes 和网络思想的新手,所以如果你要提出更复杂的东西,请说得很慢:)

非常感谢您的帮助!

VAS*_*VAS 4

Ingress-controller 是通过 TLS 连接从集群到客户端公开 HTTP 后端的标准方法。

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

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

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

检查链接: