当前位置:首页 > 问答 > 正文

其实就是想让你快速明白Ingress Controller到底是啥,怎么用,别被复杂概念绕晕了

你开了一家公司,这个公司就是你的一整套服务,比如你的网站、你的APP后台,你的公司有很多部门(这些就是Kubernetes里的Pod,你就理解成一个个运行你程序的小房间),每个部门都提供不同的服务:销售部、技术部、客服部。

外面的人(用户)想联系你的公司,他们需要打电话或者上门拜访,问题来了:

  1. 你不可能把每个部门的直拨电话都公开出去,那样太乱,用户也记不住。
  2. 你需要一个统一的对外联系方式,比如一个总机号码,一个公司大门地址。

这个“总机”和“大门”,就是Ingress Controller

它具体干两件核心的事:

第一件事:看大门,当总机接线员(路由)

用户在外面访问的是你的域名,www.yourcompany.com,Ingress Controller就守在公司网络入口。

  • 当用户访问 www.yourcompany.com/shop,Ingress Controller一看路径是 /shop,它就知道了:“哦,这是要找销售部”,于是它就把这个请求转接到销售部所在的那个小房间(Pod)。
  • 当用户访问 www.yourcompany.com/support,它一看是 /support,就明白了:“这是客服部的活儿”,然后转接到客服部。
  • 它手里有一张路由表(这个表就是Ingress规则,是你事先写好的配置文件),清清楚楚地写着哪个网址、哪个路径,对应公司内部的哪个部门服务。

这样一来,用户只需要记住你公司的总域名,通过不同的路径就能访问不同的服务,Ingress Controller完美地解决了“如何把外部请求智能地分发给内部众多服务”的问题。

其实就是想让你快速明白Ingress Controller到底是啥,怎么用,别被复杂概念绕晕了

第二件事:当保安,处理杂务(负载均衡、SSL终止等)

除了当接线员,这个前台还很能干:

  • 负载均衡:销售部可能不止一个小房间(多个Pod),同时有很多人想买东西怎么办?Ingress Controller会平均地把这些请求分发给各个销售部房间,防止某一个房间累趴下,这就叫负载均衡。
  • SSL/TLS终止:现在网站都讲究用HTTPS(就是地址栏有把小锁),建立HTTPS连接是个挺费劲的加密解密过程,Ingress Controller可以在大门口就帮里面的部门把这事儿给办了,用户和Ingress Controller之间用HTTPS加密通信,而Ingress Controller和内部部门之间可以用普通的HTTP通信,减轻了内部部门的压力。
  • 暴露服务:没有这个前台,你公司内部的服务就像藏在深闺,外人根本找不到,Ingress Controller通过一个固定的公网IP地址(或者域名)把整个公司暴露出去,让外人能访问。

怎么用?三步走,超级简单

现在你明白Ingress Controller是啥了,那怎么用它呢?非常简单,就三步:

  1. 部署一个Ingress Controller(请个前台) 你得先把这个“前台”请到你的公司(Kubernetes集群)来上班,它本身也是一个程序,所以你需要把它安装部署到你的集群里,常见的Ingress Controller有Nginx Ingress Controller、Traefik、HAProxy等,这就像你决定请一个用Nginx技术的前台,还是请一个用Traefik技术的前台,他们能力大同小异。

    其实就是想让你快速明白Ingress Controller到底是啥,怎么用,别被复杂概念绕晕了

  2. 写一个Ingress规则(给前台一张路由表) 前台来了,你得告诉他工作规则,你需要创建一个叫 Ingress 的配置文件,这个文件里就写着:

    • 当访问 my-app.com 时,请把流量转到名叫 my-app-service 的服务上。
    • 当访问 api.my-app.com/data 时,请把流量转到名叫 data-service 的服务上。 你把这个配置文件提交给Kubernetes,Kubernetes就会把这个“路由表”交给Ingress Controller。
  3. 配置DNS(告诉全世界公司的地址) 你得去域名服务商那里,把你公司的域名(my-app.com)解析到Ingress Controller所在的公网IP地址上,这就好比你在工商局注册,告诉全世界:“我们公司的地址是这个,以后找我们就来这儿”。

完成了这三步,整个流程就通了: 用户访问 my-app.com -> DNS系统把域名指向你的Ingress Controller -> Ingress Controller查看自己手里的Ingress规则 -> 根据规则,把请求转发给对应的内部服务 -> 内部服务处理完请求,把结果通过Ingress Controller返回给用户。

总结一下

忘掉那些复杂的术语,你就记住:

  • Ingress Controller = 公司的智能前台+保安
  • 它的核心工作是:根据你设定的规则(Ingress),把从外面来的请求,聪明地转发给内部正确的服务
  • 它顺带干了负载均衡、HTTPS卸载这些杂活,让你的内部服务更轻松。
  • 使用它只需要三步:部署Controller、写Ingress规则、配置DNS。

这样一来,你就不需要为每个内部服务都找一个对外暴露的方式,而是由一个统一的、功能强大的“入口”来管理所有流量,清晰、安全又高效,希望这个比喻能让你彻底明白!