Nginx-ingress使用

最近更新时间:2022-04-28 21:57:12

查看PDF

本文档将介绍如何部署Nginx-ingress controller及配置Ingress规则,以实现集群外部请求的路由转发。

前提条件

在进行Nginx-ingress controller部署前,请确认所选集群满足以下前提条件:

  1. 集群Kubernetes版本为1.18及以上;
  2. 集群中未部署过其他Nginx-ingress controller。

注:对于2022年1月13日前,通过控制台部署过老版本Nginx-ingress controller的用户,建议按照以下操作提示创建新版controller,并在业务低峰期时将老版ingress规则切换由新版controller管理。切换后新版controller支持由组件管理方式进行多实例管理,且对应社区版本(v1.1.0)支持更多优化特性。

切换方式建议如下:

  1. 通过组件管理模块,指定IngressClass,创建Nginx-ingress controller实例。
  2. Nginx-ingress controller默认支持IngressClass为nginx的Ingress规则。由一期通过控制台部署的controller管理的ingress规则(默认指定ingressClass为nginx),可直接由新版controller接管,仅需切换域名解析规则,即可将访问流量切换到新版controller对应的service上。
  3. 选择业务低峰期,将原始Ingress规则中域名映射的IP,由旧版controller对应的service IP,切换为新版controller对应的service IP。

部署Nginx-ingress controller

  1. 登录容器服务控制台,选择指定集群进入集群管理页面。

  2. 选择服务管理 > Ingress,进入Ingress管理页面。若此前未创建过Nginx-ingress controller,可通过新建按钮跳转至组件管理列表进行controller安装。

    image20220113201225484.png

  3. 选择组件管理,进入组件管理页面。完成第一个实例安装后,组件状态将切换为已安装。对于多controller实例的场景(例如一个用于公网,一个用于内网),可进入实例列表进行多controller实例部署。

    image20220113201559586.png

  4. 选择ingress-nginx,进入controller实例列表页。点击新建,创建nginx-ingress controller实例。

image20220428192934815.png

  • 配置IngressClass名称:指定 Nginx-ingress controller实例使用的 IngressClass 名称,构成对应实例Kubernetes资源的名称。

  • 命名空间:为Nginx-ingress controller实例部署指定命名空间。

  • 访问范围:根据业务访问需求,为Nginx-ingress controller配置公网/私网访问,将分别为controller创建公网/私网LB作为集群外流量入口。

    • 修改LB配置:默认状态下,会创建普通LoadBalancer模式的Service,LB会绑定各节点的NodePort作为后端RS,流量会经由节点的NodePort。若您有获取客户端来源IP、提升转发性能等需求,可通过修改LB配置开启LB直通Pod,外部请求将不经过Nodeport转发直接到达Nginx-ingress实例pod。

      开启LB直通Pod:检查集群中kube-system命名空间下cloud-controller-manager版本,更新至v1.29-mp及更新版,方可支持LB直通Pod配置。

    • 选择公网:需为LB绑定的EIP指定带宽和计费方式。

      image20220113210257883.png

    • 选择内网:需指定LB所在子网。

  • 配置部署方式和调度策略:Nginx-ingress支持DaemonSet和Deployment两种部署方式,为保证Nginx-ingress服务性能,您可以通过指定部署方式和调度策略,将controller实例调度到特定节点上。调度策略配置可参考工作负载调度策略配置

  • 完成配置后,点击确定,即可完成Nginx-ingress实例部署。

  1. 切换至实例详情,指定Nginx-ingress实例,即可查看当前实例下创建的相关Kubernetes资源。

创建Ingress规则

Nginx-ingress controller部署完成后,即可创建业务需要的ingress规则。Ingress规则配置方式如下:

  1. 基本信息
  • Ingress名称:用户自定义Ingress的名称,不超过63个字符,只能包含小写字母、数字、和“-”,并且必须以小写字母开头,小写字母或数字结尾。
  • IngressClass:指定此ingress规则目标匹配的Nginx ingress实例的IngressClass。
  • 命名空间:选择Ingress规则所在的命名空间。
  • 描述:创建Ingress的相关信息,用户自定义填写。
  1. 监听器配置

配置监听端口与协议,支持HTTP和HTTPS。

  1. 转发规则配置

根据业务需求,配置服务的访问路径、名称、端口。

  • 域名:指定服务对外暴露的域名。域名支持通配符,如*.example.com。
  • URL路径:指定服务访问的URL路径。若使用根路径,则配置为“/”。
  • 后端Service:每个访问路径都关联一个服务,从对应命名空间下已创建服务中进行选择。
  • Service访问端口:选择服务暴露的端口。

image20211008143357021.png

  1. TLS配置

当监听协议指定为HTTPS时,需通过TLS配置为域名指定SSL证书,其中证书将通过Secret资源来指定。

  • 创建Secret:您可通过导入证书内容和私钥的方式一键创建Secret。

image20211008144635258.png

  • 配置证书:为ingress规则中指定域名配置证书。

image20220113220317396.png

  1. 配置注解

您可以通过配置注解来实现Nginx-ingress的高阶功能,详情可参见Annotations

文档内容是否对您有帮助?

根本没帮助
文档较差
文档一般
文档不错
文档很好

在文档使用中是否遇到以下问题

内容不全,不深入
内容更新不及时
描述不清晰,比较混乱
系统或功能太复杂,缺乏足够的引导
内容冗长

更多建议

0/200

评价建议不能为空

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

问题反馈