Kubernetes Ingress 与具有外部 IP 的服务

Kubernetes Ingress vs. Service with externalIPs

如果我在(小型)Kubernetes 1.13 集群上公开一个(单个)Web 服务(比如 http://a.b.c.dhttps://a.b.c.d),使用 Ingress 比使用 Ingress 有什么好处Service 类型 ClusterIP 单独使用 externalIPs [ a.b.c.d ]

地址a.b.c.d被路由到我的一个集群节点。 Ingress 需要安装和维护一个 ingress controller,所以我想知道什么时候这是合理的。

  • ClusterIP 类型的每个服务都有自己的 public IP 地址,而 Ingress 只需要一个 IP,即使您想提供对数十个服务的访问。
  • 您也可以根据Ingress提供的基于主机和路径的路由,将客户端请求转发到相应的服务。
  • 由于 Ingresses 在第 7 层(应用层)运行,它还可以提供基于 cookie 的会话等功能,这是通过服务无法实现的。

我现在遇到了第一个具体示例,在其中我看到使用 Ingress 而不是 ServiceexternalIPs 的具体好处。

Kubernetes 集群内的私有 Docker 注册表通常需要 TLS 凭据。使用 Docker 图像 registry:2 必须安装这些凭据,例如从 ConfigMap 进入容器并在容器中有某些环境变量(例如 REGISTRY_HTTP_TLS_CERTIFICATE)指向它们。

只要能够容忍对集群内注册表的不安全访问,使用 Ingress 管理起来就会变得更容易。证书可以放入 Secret 中,Ingress 资源可以指向 (kubectl explain ingress.spec.tls.secretName)。不再需要对挂载或环境变量给予额外的详细关注。 TLS 连接将在入口控制器处终止。