# 通过控制台创建ELB Ingress
Ingress是Kubernetes中的一种资源对象，用来管理集群外部访问集群内部服务的方式。您可以通过Ingress资源来配置不同的转发规则，从而根据转发规则访问集群内Pod。本文以[Nginx工作负载](https://support.huaweicloud.com/usermanual-cce/cce_10_0047.html#cce_10_0047__section155246177178)为例，为您介绍如何使用控制台创建ELB Ingress。
#### 前提条件
- 集群中需提前部署可用的工作负载用于对外提供访问。若您无可用工作负载，可参见[创建无状态负载（Deployment）](https://support.huaweicloud.com/usermanual-cce/cce_10_0047.html)、[创建有状态负载（StatefulSet）](https://support.huaweicloud.com/usermanual-cce/cce_10_0048.html)或[创建守护进程集（DaemonSet）](https://support.huaweicloud.com/usermanual-cce/cce_10_0216.html)部署工作负载。
- 为提供对外访问的工作负载配置Service，ELB Ingress支持的Service类型请参见[ELB Ingress支持的Service类型](https://support.huaweicloud.com/usermanual-cce/cce_10_0094.html#cce_10_0094__section3565202819276)。
 
#### 约束与限制
- 仅1.17及以上集群支持使用独享型ELB。
- 建议其他资源不要使用Ingress自动创建的ELB实例，否则在删除Ingress时，ELB实例会被占用，导致资源残留。
- 添加Ingress后请在CCE页面对所选ELB实例进行配置升级和维护，不可在ELB页面对配置进行更改，否则可能导致Ingress服务异常。
- Ingress转发策略中注册的URL需与后端应用提供访问的URL一致，否则将返回404错误。
- IPVS模式集群下，ELB Ingress和Service使用相同ELB实例时，无法在集群内的节点和容器中访问Ingress，因为kube-proxy会在ipvs-0的网桥上挂载LB类型的Service地址，ELB的流量会被ipvs-0网桥劫持。建议ELB Ingress和Service使用不同ELB实例。
- 请勿将Ingress与[使用HTTP的Service](https://support.huaweicloud.com/usermanual-cce/cce_10_0683.html)对接同一个ELB下的同一个监听器，否则将产生端口冲突。
- 独享型ELB规格必须支持应用型（HTTP/HTTPS），且网络类型必须支持私网（有私有IP地址）。
- 同集群使用多个Ingress对接同一个ELB端口时，监听器的配置项（例如监听器关联的证书、监听器HTTP/2属性等）均以首次创建监听器的Ingress配置为准。
 
#### 添加ELB Ingress
本节以nginx作为工作负载并添加ELB Ingress为例进行说明。
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 选择左侧导航栏的"服务"，在右侧选择"路由"页签，单击右上角"创建路由"。
3. 设置Ingress参数。 
   - **名称：**自定义Ingress名称，例如ingress-demo。
   
   - **命名空间**：ELB Ingress所在命名空间。
   
   - **对接Nginx：** 此选项只有在安装了[NGINX Ingress控制器](https://support.huaweicloud.com/usermanual-cce/cce_10_0034.html)插件后才会显示。如显示了"对接Nginx"，则说明您安装了NGINX Ingress控制器插件，创建ELB Ingress时不能打开该项开关，如果打开则是使用Nginx Ingress Controller，具体请参见[通过控制台创建Nginx Ingress](https://support.huaweicloud.com/usermanual-cce/cce_10_0390.html)。
   
   - **协议版本**：选择ELB Ingress的协议版本，仅IPv4/IPv6双栈集群支持。
   
   - **负载均衡器：** 选择弹性负载均衡的类型、创建方式。
     ELB类型可选择"独享型"或"共享型"。独享型ELB规格需要支持应用型（HTTP/HTTPS），且网络类型必须支持私网。
     创建方式可选择"选择已有"或"自动创建"。不同创建方式的配置详情请参见[表1]。
     ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
     当集群使用共享VPC时，不支持自动创建共享型ELB。
      表1ELB配置 
     | 创建方式   | 配置                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
     |:---|:---|
     | 选择已有   | 仅支持选择与集群在同一个VPC下的ELB实例。如果没有可选的ELB实例，请单击"创建负载均衡器"跳转到ELB控制台创建。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
     | 自动创建 | - 实例名称：请填写ELB名称。  - 企业项目（仅独享型ELB支持）：该参数仅对开通企业项目的企业客户账号显示。企业项目是一种云资源管理方式，企业项目管理服务提供统一的云资源按项目管理，以及项目内的资源管理、成员管理。  - 可用区（仅独享型ELB支持）：可以选择在多个可用区创建负载均衡实例，提高服务的可用性。如果业务需要考虑容灾能力，建议选择多个可用区。  - 前端子网（仅独享型ELB支持）：用于分配ELB实例对外服务的IP地址。  - 后端子网（仅独享型ELB支持）：用于与后端服务建立连接的IP地址。  - 网络型规格/应用型规格/规格（仅独享型ELB支持）： - 弹性规格：适用于业务用量波动较大的场景，按实际使用量收取每小时使用的容量费用。v1.21.10-r10、v1.23.8-r10、v1.25.3-r10及以上版本集群支持使用弹性规格。  - 固定规格：适用于业务用量较为稳定的场景，按固定规格折算收取每小时使用的容量费用。    - 弹性公网IP：选择"自动创建"时，可配置公网带宽的计费方式及带宽大小。  - 资源标签：通过为资源添加标签，可以对资源进行自定义标记，实现资源的分类。您可以在TMS中创建"预定义标签"，预定义标签对所有支持标签功能的服务资源可见，通过使用预定义标签可以提升标签创建和迁移效率。  - 全域弹性公网（仅独享型ELB支持）：选择绑定全域弹性公网IP实例，实现公网带宽资源在实例间分配与使用，控制全域弹性公网IP与公网间通信的速率。关于全域弹性公网更多信息，请参见[全域公网带宽概述](https://support.huaweicloud.com/usermanual-eip/eip_ibw_0002.html)。   |
        
     
   
   - **监听器配置：** Ingress为负载均衡器配置监听器，监听器对负载均衡器上的请求进行监听，并分发流量。配置完成后ELB实例侧将会创建对应的监听器，名称默认为k8s_\<协议类型\>_\<端口号\>，例如"k8s_HTTP_80"。
     - 前端协议：ELB监听器的前端协议，是客户端与负载均衡监听器建立流量分发连接所使用的协议。
     
     - 对外端口：开放在负载均衡服务地址的端口，可任意指定。如果选择已有的负载均衡器，不同集群之间的监听器端口不支持复用，同一个集群中多个Ingress可使用相同的监听器端口，但实际生效的监听器配置将以最早创建的Ingress配置为准，详情请参见[同一集群中多个Ingress使用同一个ELB的配置说明](https://support.huaweicloud.com/usermanual-cce/cce_10_0954.html)。
     
     - 访问控制：
       - 继承ELB已有配置：CCE不对ELB侧已有的访问控制进行修改。
       
       - 允许所有IP访问：不设置访问控制。
       
       - 白名单：仅所选IP地址组可以访问ELB地址。
       
       - 黑名单：所选IP地址组无法访问ELB地址。
       
       
       ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
       v1.25.16-r10、v1.27.16-r10、v1.28.15-r0、v1.29.10-r0、v1.30.6-r0、v1.31.1-r0及以上版本的集群中，使用独享型ELB时访问控制可同时选择多个IP地址组，最多同时选择5个。
       
     
     - 证书来源：支持TLS密钥和ELB服务器证书。
       - TLS密钥：创建密钥证书的方法请参见[创建密钥](https://support.huaweicloud.com/usermanual-cce/cce_10_0153.html)。
       
       - ELB服务器证书：使用在ELB服务中创建的证书。
        
     
     - SSL解析方式：证书来源选择"ELB服务器证书"时支持该配置。在v1.28.15-r60、v1.29.15-r20、v1.30.14-r20、v1.31.10-r20、v1.32.6-r20、v1.33.5-r10及以上版本的集群支持。
       - 单向认证：仅进行服务器端认证。如需认证客户端身份，请选择双向认证。
       
       - 双向认证：双向认证需要负载均衡实例与访问用户互相提供身份认证，从而允许通过认证的用户访问负载均衡实例，后端服务器无需额外配置双向认证。
        
     
     - CA证书：SSL解析方式选择"双向认证"时需要添加CA证书，用于认证客户端身份。CA证书又称客户端CA公钥证书，用于验证客户端证书的签发者；在开启HTTPS双向认证功能时，只有当客户端能够出具指定CA签发的证书时，HTTPS连接才能成功。
     
     - 服务器证书：负载均衡器创建HTTPS协议监听时需要绑定证书，以支持HTTPS数据传输加密认证。
       ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
       同一个ELB实例的同一个端口配置HTTPS时，一个监听器只支持配置一个密钥证书。若使用两个不同的密钥证书将两个Ingress添加到同一个ELB下的同一个监听器，ELB侧实际只生效最先添加的证书。
       
     
     - SNI：SNI（Server Name Indication）是TLS的扩展协议，在该协议下允许同一个IP地址和端口号下对外提供多个基于TLS的访问域名，且不同的域名可以使用不同的安全证书。开启SNI后，允许客户端在发起TLS握手请求时就提交请求的域名信息。负载均衡收到TLS请求后，会根据请求的域名去查找证书：若找到域名对应的证书，则返回该证书认证鉴权；否则，返回缺省证书（服务器证书）认证鉴权。
       ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
       - 当选择HTTPS协议时，才支持配置"SNI"选项。
       
       
       
       - 该功能仅支持1.15.11及以上版本的集群。
       
       - 用于SNI的证书需要指定域名，每个证书只能指定一个域名。支持泛域名证书。
       
       - 对接到同一个ELB端口的ingress，请勿配置域名相同但证书不同的SNI，否则将会被覆盖。
         
     
     - 安全策略：安全策略包含HTTPS可选的TLS协议版本和配套的加密算法套件，CCE默认值为TLS-1-2。 关于安全策略的详细说明，请参见[安全策略](https://support.huaweicloud.com/usermanual-elb/elb_ug_jt_0022.html)。
       ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
       - 选择HTTPS协议时，才支持配置"安全策略"选项。
       
       - 该功能仅支持1.17.9及以上版本的集群。
         
     
     - 后端协议： 当[监听器配置]为HTTP协议时，仅可选择"HTTP"。
       当[监听器配置]为HTTPS协议时，可选择"HTTP"、"HTTPS"或"GRPC"。仅独享型ELB支持选择GRPC协议，且需开启HTTP/2，系统将自动为您添加**kubernetes.io/elb.http2-enable:true**注解。当前GRPC功能仅在部分区域开放，请以控制台呈现为准。
       当[监听器配置]为QUIC协议时，可选择"HTTP"、"HTTPS"。
       
     
     - 高级配置：
       
       | 配置                | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                           | 使用限制                                               |
       |:---|:---|:---|
       | 获取监听器端口号             | 开启后可以将ELB实例的监听端口从报文的HTTP头中带到后端云服务器。                                                                                                                                                                                                                                                                                                                                                                                                        | 独享型ELB实例支持配置。                                      |
       | 获取客户端请求端口号         | 开启后可以将客户端的源端口从报文的HTTP头中带到后端云服务器。                                                                                                                                                                                                                                                                                                                                                                                                             | 独享型ELB实例支持配置。                                     |
       | 重写X-Forwarded-Host | 开启后将以客户端请求头的Host重写X-Forwarded-Host传递到后端云服务器。                                                                                                                                                                                                                                                                                                                                                                                               | 独享型ELB实例支持配置。                                      |
       | 重写X-Real-IP          | 开启后将以客户端的源IP地址重写X-Real-IP传递到后端服务器。                                                                                                                                                                                                                                                                                                                                                                                                           | 独享型ELB实例支持配置。                                        |
       | 数据压缩               | 开启将对特定文件类型进行压缩；关闭则不会对任何文件类型进行压缩。 - Brotli支持压缩所有类型。  - Gzip支持压缩的类型如下： text/xml text/plain text/css application/javascript application/x-javascript application/rss+xml application/atom+xml application/xml application/json。    | 独享型ELB实例支持配置。                                     |
       | 空闲超时时间（秒）           | 客户端连接空闲超时时间。在超过空闲超时时间一直没有请求， 负载均衡会暂时中断当前连接，直到下一次请求时重新建立新的连接。                                                                                                                                                                                                                                                                                                                                                                                   | 共享型ELB实例的端口使用UDP协议时不支持此配置。                          |
       | 请求超时时间（秒）          | 等待客户端请求超时时间。包括两种情况： - 读取整个客户端请求头的超时时长，如果客户端未在超时时长内发送完整个请求头，则请求将被中断。  - 两个连续body体的数据包到达LB的时间间隔，超出请求超时时间将会断开连接。                                                                                                                                                               | 仅协议为HTTP/HTTPS的监听器支持该字段。                           |
       | 响应超时时间（秒）           | 等待后端服务器响应超时时间。请求转发后端服务器后，在等待超过响应超时时间没有响应，负载均衡将终止等待，并返回 HTTP504错误码。                                                                                                                                                                                                                                                                                                                                                                        | 仅支持协议为HTTP/HTTPS的监听器。                               |
       | 开启HTTP/2            | 客户端与ELB之间的HTTPS请求的HTTP/2功能的开启状态。 开启后，可提升客户端与ELB间的访问性能，但ELB与后端服务器间仍采用HTTP1.X协议。                                                                                                                                                                                                                                                                                                                                                              | 当[监听器配置]为HTTPS协议时支持配置。 |
          
       
     
     - 重定向至HTTPS：[前端协议]选择使用HTTP时，支持重定向至HTTPS。开启后可单击"修改"，对HTTPS协议的端口进行配置，详细配置说明请参见HTTPS协议的[监听器配置]。
      
   
   - **灰度发布：** 路由创建完成后，可在路由操作列中创建灰度发布策略。详情请参见[为ELB Ingress配置灰度发布](https://support.huaweicloud.com/usermanual-cce/cce_10_0736.html)章节。
   
   - **转发策略配置：** 请求的访问地址与转发规则匹配时（转发规则由域名、对外端口、URL组成，例如：10.117.117.117:80/helloworld），此请求将被转发到对应的目标Service处理。单击![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001551360517.png "点击放大")按钮可添加多条转发策略。
     - 域名：实际访问的域名地址，不配置时可通过IP地址访问Ingress。请确保所填写的域名已注册并备案，一旦配置了域名规则后，必须使用域名访问。
     
     - 路径匹配规则：
       - 前缀匹配：例如映射URL为/healthz，只要符合此前缀的URL均可访问。例如/healthz/v1，/healthz/v2。
       
       - 精确匹配：表示只有URL完全匹配时，访问才能生效。例如映射URL为/healthz，则必须为此URL才能访问。
       
       - 正则匹配：按正则表达式方式匹配URL。例如正则表达式为**/\[A-Za-z0-9_.-\]+/test**。只要符合此规则的URL均可访问，例如/abcA9/test，/v1-Ab/test。正则匹配规则支持POSIX与Perl两种标准。
        
     
     - 路径：需要注册的访问路径，例如：/healthz。
       ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
       此处添加的访问路径要求后端应用内存在相同的路径，否则转发无法生效。
       例如，Nginx应用默认的Web访问路径为"/usr/share/nginx/html"，在为Ingress转发策略添加"/test"路径时，需要应用的Web访问路径下也包含相同路径，即"/usr/share/nginx/html/test"，否则将返回404。
       
     
     - 目标服务名称：请选择已有Service，页面列表中的查询结果已自动过滤不符合要求的Service。如果没有满足要求的Service请根据[Ingress支持的Service类型](https://support.huaweicloud.com/usermanual-cce/cce_10_0094.html#cce_10_0094__section1674954315446)新建。
     
     - 目标服务访问端口：可选择目标Service的访问端口。目标Service的访问端口必须是TCP协议。
     
     - 负载均衡配置：
       - 分配策略：可选择加权轮询算法、加权最少连接或源IP算法。
         ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
         - 加权轮询算法：根据后端服务器的权重，按顺序依次将请求分发给不同的服务器。它用相应的权重表示服务器的处理性能，按照权重的高低以及轮询方式将请求分配给各服务器，相同权重的服务器处理相同数目的连接数。常用于短连接服务，例如HTTP等服务。
         
         - 加权最少连接：最少连接是通过当前活跃的连接数来估计服务器负载情况的一种动态调度算法。加权最少连接就是在最少连接数的基础上，根据服务器的不同处理能力，给每个服务器分配不同的权重，使其能够接受相应权值数的服务请求。常用于长连接服务，例如数据库连接等服务。
         
         - 源IP算法：将请求的源IP地址进行Hash运算，得到一个具体的数值，同时对后端服务器进行编号，按照运算结果将请求分发到对应编号的服务器上。这可以使得对不同源IP的访问进行负载分发，同时使得同一个客户端IP的请求始终被派发至某特定的服务器。该方式适合负载均衡无cookie功能的TCP协议。
           
       
       - 会话保持类型：默认不启用。支持以下类型：
         - 负载均衡器cookie：同时需填写"会话保持时间"，范围为1-1440分钟。
         
         - 应用程序cookie：同时需填写"cookie名称"，长度范围为1-1024。
         
         
         ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
         - 当[分配策略]使用源IP算法时，不支持设置会话保持。
         
         - v1.21以下的集群中独享型负载均衡无法使用会话保持能力，如果需要使用会话保持能力，推荐使用共享型负载均衡。
           
       
       - 健康检查：设置负载均衡的健康检查配置，启用时支持以下配置。
         
         | 参数      | 说明                                                                                                                                                                                                                                                                                                                                                                                               |
         |:---|:---|
         | 协议       | 支持TCP/HTTP/HTTPS/GRPC协议。仅独享型ELB支持选择HTTPS/GRPC协议。其中选择HTTPS协议需要使用独享型ELB且集群版本为v1.28.15-r90、v1.29.15-r50、v1.30.14-r50、v1.31.14-r10、v1.32.9-r10、v1.33.7-r10、v1.34.3-r0及以上。GRPC依赖ELB能力，使用该功能前请提交工单申请开通ELB相关能力。 - 检查路径（仅HTTP/HTTPS/GRPC健康检查协议支持）：指定健康检查的URL地址。检查路径只能以/开头，长度范围为1-80。                      |
         | 端口        | 健康检查默认使用业务端口（Service的NodePort或容器端口）作为健康检查的端口；您也可以重新指定端口用于健康检查，重新指定端口会为服务增加一个名为cce-healthz的服务端口配置。 - 节点端口：使用共享型负载均衡或不关联ENI实例时，节点端口作为健康检查的检查端口；如不指定将随机一个端口。取值范围为30000-32767。  - 容器端口：使用独享型负载均衡关联ENI实例时，容器端口作为健康检查的检查端口。取值范围为1-65535。   |
         | 检查周期（秒）    | 每次健康检查响应的最大间隔时间，取值范围为1-50。                                                                                                                                                                                                                                                                                                                                                                        |
         | 超时时间（秒） | 每次健康检查响应的最大超时时间，取值范围为1-50。                                                                                                                                                                                                                                                                                                                                                                        |
         | 最大重试次数    | 健康检查最大的重试次数，取值范围为1-10。                                                                                                                                                                                                                                                                                                                                                                            |
            
         
        
     
     - 操作：可单击"删除"按钮删除该配置。
     
     - 执行动作：支持"重定向至URL"和"重写URL"，仅独享型ELB支持。
       - 重定向至URL：当访问请求满足转发策略时，会将请求重定向至指定的URL，并返回指定的状态码。
       
       - 重写URL：当访问请求满足转发策略时，会根据匹配规则重写URL路径。支持使用正则表达式匹配的结果作为重写路径，您需要选择路径匹配规则为"正则匹配"。例如，转发规则中的URL配置为正则表达式/first/(.\*)/(.\*)/end，重写路径配置为/${1}/${2}。当客户端发送请求的路径为/first/aaa/bbb/end时，转发规则会匹配到/first/(.\*)/(.\*)/end，重写路径中的${1}会替换为aaa，${2}会替换为bbb，最终后端服务器接收到的请求路径为/aaa/bbb。
        
      
   
   - **注解** ：Ingress有一些CCE定制的高级功能，通过注解annotations实现。在使用kubectl创建时，会用到注解，具体请参见[添加Ingress时自动创建ELB](https://support.huaweicloud.com/usermanual-cce/cce_10_0252.html#cce_10_0252__section3675115714214)和[添加Ingress时对接已有ELB](https://support.huaweicloud.com/usermanual-cce/cce_10_0252.html#cce_10_0252__section32300431736)。
   
   
   
   
4. 配置完成后，单击"确定"。创建完成后，在Ingress列表可查看到已添加的Ingress。 
   在ELB控制台可查看通过CCE自动创建的ELB，名称默认为"cce-lb-\<ingress.UID\>"。单击ELB名称进入详情页，在"监听器"页签下即可查看Ingress对应的监听器及转发策略。
   ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/notice_3.0-zh-cn.png)
   Ingress创建后请在CCE页面对所选ELB实例进行配置升级和维护，不要在ELB控制台对ELB实例进行维护，否则可能导致Ingress服务异常。
   图1ELB路由设置   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001946062001.png "点击放大")
   
   
5. 访问工作负载（例如名称为defaultbackend）的"/healthz"接口。 
   1. 获取工作负载"/healthz"接口的访问地址。访问地址由负载均衡实例IP、对外端口、映射URL组成，例如：10.\*\*.\*\*.\*\*:80/healthz。
   
   2. 在浏览器中输入"/healthz"接口的访问地址，如：http://10.\*\*.\*\*.\*\*:80/healthz，即可成功访问工作负载，如[图2]。
      图2访问defaultbackend"/healthz"接口   
      ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000001199181230.png "点击放大") 
   
   
   
   
 
#### 相关文档
- 如果您需要获取客户端源IP，详情请参见[不同场景下容器内获取客户端源IP](https://support.huaweicloud.com/bestpractice-cce/cce_bestpractice_00035.html)。
- 如果您需要使用更多ELB Ingress的高级功能，请参见[ELB Ingress注解（Annotations）配置合集](https://support.huaweicloud.com/usermanual-cce/cce_10_0695.html)。
- 如果出现从外部无法访问Ingress的问题，请参见[集群外部访问Ingress异常](https://support.huaweicloud.com/cce_faq/cce_faq_00313.html)逐步排查根因。
- 如果ELB Ingress配置HTTPS证书后存在访问异常，请参见[为ELB Ingress配置了HTTPS证书后访问异常的原因有哪些？](https://support.huaweicloud.com/cce_faq/cce_faq_00455.html)排查证书配置是否正确。
 
