Ingress 流量接入管理
所有文档

          云原生微服务应用平台 CNAP

          Ingress 流量接入管理

          Ingress 基本概念

          Ingress 是 Kubernetes 提供的一种 7 层流量接入方式,它通过连接外部负载均衡器与容器内部服务的方式对流量进行管理,相比 LoadBalancer Service,Ingress 可以简化主机对外开放端口的管理,同时利用外部负载均衡的能力提供更完善了路由和安全规则。

          Ingress 公开了从集群外到集群内部的 HTTP 和 HTTPS 路由。流量路由由 Ingress 资源上定义的规则控制。下面是一个将所有流量都发送到同一个 Service 的简单 Ingress 示例。

          image.png

          可以将 Ingress 配置为服务提供外部可访问的 URL、负载均衡流量、终止 SSL/TLS,以及提供基于名称的虚拟主机等能力。 Ingress 控制器 通常负责通过负载均衡器来实现 Ingress,尽管它也可以配置边缘路由器或其他前端来帮助处理流量。

          Ingress 不会公开任意端口或协议。 将 HTTP 和 HTTPS 以外的服务公开到 Internet 时,通常使用 Service.Type=NodePort 或 Service.Type=LoadBalancer 类型的服务。

          详情请参考官方文档:Kubernetes Ingress

          Ingress 主要有两部分组成:

          • Ingress 对象:提供 Ingress kubernetes 对象,能够通过 yaml 进行创建和更新,用于将服务与域名对应起来;
          • Ingress Controller:部署在集群中的公共组件,将 Ingress 服务的配置转化成外部负载均衡的配置,对负载均衡器进行管理和更新。

          NginxIngressController 是社区最常用的 IngressController,能够满足用户基础及高级功能需求。包括:7 层 HTTP 流量转发及负载均衡、简单路由服务、基于域名的扇出路由、配置 HTTPS、Websocket、会话粘滞等。详细功能列表及使用方式可参考官方文档:NginxIngressController

          环境准备

          CNAP 通过组件中心提供了在用户集群中部署 NginxIngressController 的功能,同时 NginxIngressController 需要通过一个 LoadBalancer 类型的 Service 作为集群的流量入口。创建 LoadBalancer Service 会同步在公有云创建普通型 BLB 承接 4 层流量并绑定 EIP。在使用 NginxIngressController 后,单个用户集群仅需创建一个 BLB 及 EIP 即可实现对集群内所有 Service 的流量接入,维护成本低,使用更方便。

          部署 NginxIngressController

          1. 进入“组件中心”,选择“添加组件”

          image.png

          1. 选择“NginxIngressController”

          image.png

          1. 填写组件信息

          image.png

          组件信息包括:

          • 组件名称:支持小写字母、数字、- 字符,首尾必须字母或数字,长度在 2-26
          • 组件描述:长度小于 140 个字符的任意字符串
          • 集群:该下拉框会展示所有用户当前可用的集群
          • 副本数:期望部署的 Nginx 实例的副本数
          • 访问类型:

            • 公网访问:会创建 BLB 及 EIP,可在集群外通过 EIP 访问
            • VPC 内访问:仅创建 BLB,仅可在集群所在 VPC 内利用 Ingress 实现流量接入
          • 规则类型:

            • IPv4:默认值,为用户创建 IPv4 类型的 EIP 及 BLB
            • IPv6:要求用户所选择的集群支持 IPv6,为用户创建 IPv6 类型的 EIP 和 BLB
          • BLB 类型:

            • 新建:为用户新建 BLB
            • 已有:可在下拉框中选择一个已存在的 BLB
          • 所在网络:用户可选择目标的 VPC 及子网
          • 高级配置:高级配置目前支持配置节点选择器, 用户可以配置控制 Nginx 实例的运行节点
          1. 确认部署状态

          填写组件信息并确认后,CNAP 发起在集群中部署 NginxIngressController, 部署过程一般需要持续 3~5 分钟,且组件状态为 “部署中”。 当完成部署后,组件状态变更为“运行中”,且组件列表会展示为 IngressController 创建的 EIP。

          image.png

          新建应用路由

          在完成部署 NginxIngressController 后,用户可以在“应用托管” - “流量接入” 界面下新建应用路由,用于配置将流量指向目标的部署组访问方式(Service)。

          1. 进入“新建应用路由”界面

          注意需要选择目标部署组所在的工作空间

          image.png

          1. 填写基本信息

          image.png

          • 名称:应用路由规则名称
          • 别名:应用路由规则的别名
          • 环境名称:用户需要选择工作空间下的环境
          • 集群:如果环境已绑定集群,那么该项不可编辑;否则用户可以在该下拉框选择集群并与环境绑定
          • 描述:应用路由规则的描述
          1. 填写路由规则

          image.png

          一个应用路由可以包含多条路由规则,每条路由规则主要包括:

          • 域名:填写该应用路由所关联的域名
          • 协议:HTTP 或 HTTPS,如果用于选择 HTTPS 则需要选择托管在百度证书服务上的 TLS 证书
          • 路径:路由规则对应的路径信息

            • 子路径:非必填,为相对于根域名的路径
            • 访问方式:从下拉列表选择流量接入的目标访问方式(Service)
            • 端口:从下拉列表选择访问方式向外暴露的端口
          1. 根据需要填写高级配置

          image.png

          高级配置主要包括:

          • 超时
          • 重定向
          • 限速
          • 认证
          • 会话粘滞
          • 灰度发布
          • 跨域资源共享
          • 自定义

          具体的配置项及可选值请参考:NginxIngressController 配置

          1. 根据 Yaml 确认配置正确性

          用户在编辑应用路由过程中可以随时点击查看 Yaml 来查看当前应用路由配置项所对应的 Yaml 内容,在 Yaml 查看界面也可以通过点击 返回表单以表单形式编辑路由规则:

          image.png

          image.png

          1. 点击“提交”完成路由规则创建
          2. 根据配置的路由规则及 NginxIgressController 的访问 IP 即可验证路由转发规则

          image.png

          上一篇
          运维配置
          下一篇
          运维中心