云服务器内容精选

  • 高级Rewrite配置 对于一些复杂高级的Rewrite需求,可以通过如下注解来实现,其本质也是修改Nginx的配置文件(nginx.conf),可以实现上面提到的“nginx.ingress.kubernetes.io/rewrite-target”注解的功能,但是自定义程度更高,适合更加复杂的Rewrite需求。 nginx.ingress.kubernetes.io/server-snippet:在nginx.conf的“server”字段中添加自定义配置。 nginx.ingress.kubernetes.io/configuration-snippet:在nginx.conf的“location”字段中添加自定义配置。 snippet配置在NGINX Ingress控制器版本为2.4.6版本及以上时(对应社区版本为v1.9.3)不再默认启用,详情请参见Changelog。如果您仍需要使用snippet配置,可以通过allow-snippet-annotations启用。 通过以上两个注解可以在nginx.conf中的“server”或“location”字段中插入Rewrite指令,完成URL的重写,示例如下: annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/configuration-snippet: | rewrite ^/stylesheets/(.*)$ /something/stylesheets/$1 redirect; # 添加 /something 前缀 rewrite ^/images/(.*)$ /something/images/$1 redirect; # 添加 /something 前缀 如上两条规则在访问URL中添加了“/something”路径,即: 当用户访问rewrite.bar.com/stylesheets/new.css时,重写为rewrite.bar.com/something/stylesheets/new.css 当用户访问rewrite.bar.com/images/new.jpg时,重写为rewrite.bar.com/something/images/new.jpg
  • 注意事项 建议其他资源不要使用Ingress自动创建的ELB实例,否则在删除Ingress时,ELB实例会被占用,导致资源残留。 添加Ingress后请在CCE页面对所选ELB实例进行配置升级和维护,不可在ELB页面对配置进行更改,否则可能导致Ingress服务异常。 Ingress转发策略中注册的URL需与后端应用提供访问的URL一致,否则将返回404错误。 独享型ELB规格必须支持应用型(HTTP/HTTPS),且网络类型必须支持私网(有私有IP地址)。 同集群使用多个Ingress对接同一个ELB端口时,监听器的配置项(例如监听器关联的证书、监听器HTTP2属性等)均以第一个Ingress配置为准。
  • 简介 Nginx Ingress:基于社区的Nginx Ingress Controller进行了优化,为精选开源插件,提供丰富的Ingress配置,如果您对网关定制有强烈的需求,可以选择Nginx Ingress。 ELB Ingress:基于华为弹性负载均衡ELB(Elastic Load Balance),全托管,免运维,支持千万级并发链接,百万级新建连接。支持对接共享型负载均衡、独享性负载均衡实例。
  • 功能对比 比较项 Nginx Ingress ELB Ingress 产品定位 七层流量治理,提供丰富的高级路由功能。 七层流量治理,提供丰富的高级路由功能。与云原生深度集成,提供高可用、高性能、超安全、多协议的全托管免运维负载均衡服务。 具备弹性能力,流量突发时支持扩展计算资源。 同时支持千万级并发连接,百万级新建连接。 基础路由 基于内容、源IP的路由。 支持HTTP标头改写、重定向、重写、限速、跨域、会话保持等。 支持请求方向转发规则和响应方向转发规则,其中响应方向转发规则可以通过扩展Snippet配置实现。 转发规则按照最长路径匹配,匹配到多条路径时,转发路径最长的优先匹配。 基于内容、源IP的路由。 支持HTTP标头改写、重定向、重写、限速、会话保持等。 支持请求方向转发规则和响应方向转发规则。 转发规则按照优先级从高到低开始匹配,匹配到多条路径时,转发规则编号的数值越小优先级越高。 支持协议 支持HTTP和HTTPS协议。 支持WebSocket、WSS和gRPC协议。 支持HTTP和HTTPS协议。 支持gRPC协议。 配置变更 非后端端点变更需要Reload进程,对长连接有损。 端点变更使用Lua实现热更新。 Lua插件变更需要Reload进程。 申明式API,变更后由云服务之间的OpenAPI能力将配置加载到ELB负载均衡,实现动态加载。 认证鉴权 支持Basic Auth认证方式。 支持oAuth协议。 支持TLS身份认证。 性能 性能依赖手动调优,需要进行系统参数调优和Nginx参数调优。 需要配置合理的副本数和资源限制。更多信息,请参见通过控制台创建Nginx Ingress。 支持千万级并发连接,百万级新建连接。 可观测能力 支持通过Access Log采集日志。 支持通过Prometheus进行监控和告警配置。 支持云服务访问日志(对接LTS)。 支持审计关键操作。 支持使用Metrics输出监控指标(对接云监控)。 支持告警规则配置(对接云监控)。 运维能力 自行维护组件,定期同步社区新版本。 通过配置HPA进行扩缩容。 需要主动配置规格进行调优。 全托管、免运维。 自动弹性,免配置支持超大容量。 处理能力随业务峰值自动伸缩。 安全 支持HTTPS协议。 支持黑白名单功能。 HTTPS(集成SSL)支持全链路HTTPS、SNI多证书、RSA、ECC双证、TLS 1.3协议和TLS算法套件选择。 支持WAF防护墙防护。 支持DDos防护。 支持黑白名单功能。 支持自定义安全策略。 服务治理 服务发现支持K8s。 服务灰度支持金丝雀发布。 服务高可用支持限流。 服务发现支持K8s。 服务灰度支持金丝雀发布。 服务高可用支持限流。 云原生集成 自行运维组件,与华为云CCE、CCI Serverless、UCS等容器服务结合使用。更多信息,请参见路由概述。 全托管自动运维,与华为云CCE、CCI Serverless、UCS等容器服务结合使用。
  • Ingress类型 表1 Ingress类型注解 参数 类型 描述 支持的集群版本 kubernetes.io/ingress.class String nginx:表示使用Nginx Ingress。 cce:表示使用自研ELB Ingress。 通过API接口创建Ingress时必须增加该参数。 v1.23及以上集群使用ingressClassName参数代替,详情请参见通过Kubectl命令行创建Nginx Ingress。 仅v1.21及以下集群 上述注解的使用方法详情请参见通过Kubectl命令行创建Nginx Ingress。
  • 域名正则化 Nginx Ingress支持配置“nginx.ingress.kubernetes.io/server-alias”注解实现域名配置正则表达式。 请参见通过kubectl连接集群,使用kubectl连接集群。 创建名为“ingress-test.yaml”的YAML文件,此处文件名可自定义。 vi ingress-test.yaml 以正则表达式~^www\.\d+\.example\.com$,abc.example.com为例,表示使用www.{一个或多个数字}.example.com和abc.example.com域名也可正常访问Ingress。 1.23及以上版本集群 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/server-alias: '~^www\.\d+\.example\.com$,abc.example.com' name: ingress-test namespace: default spec: rules: - host: foo.bar.com http: paths: - backend: service: name: nginx-93244 #替换为您的目标服务名称 port: number: 80 #替换为您的目标服务端口 path: / pathType: ImplementationSpecific ingressClassName: nginx 1.21及以下版本集群 apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: annotations: nginx.ingress.kubernetes.io/ server-alias: '~^www\.\d+\.example\.com$,abc.example.com' name: ingress-test namespace: default spec: rules: - host: foo.bar.com http: paths: - path: '/' backend: serviceName: nginx-test #替换为您的目标服务名称 servicePort: 80 #替换为您的目标服务端口 ingressClassName: nginx 执行以下命令,创建Ingress。 kubectl create -f ingress-test.yaml 预期输出: ingress.networking.k8s.io/ingress-test created 查看Nginx Ingress Controller的配置。 执行以下命令,查看Nginx Ingress Controller服务的Pod kubectl get pods -n kube-system | grep nginx-ingress-controller 预期输出: cceaddon-nginx-ingress-controller-68d7bcc67-dxxxx 1/1 Running 0 18h cceaddon-nginx-ingress-controller-68d7bcc67-cxxxx 1/1 Running 0 18h 执行以下命令,查看Nginx Ingress Controller的配置 kubectl exec -n kube-system cceaddon-nginx-ingress-controller-68d7bcc67-dxxxx cat /etc/nginx/nginx.conf | grep -C3 "foo.bar.com" 预期输出: ## start server foo.bar.com server { server_name foo.bar.com abc.example.com ~^www\.\d+\.example\.com$ ; listen 80 ; listen [::]:80 ; -- } } ## end server foo.bar.com 执行以下命令,获取Ingress对应的IP。 kubectl get ingress 预期输出: NAME CLASS HOSTS ADDRESS PORTS AGE nginx-test nginx foo.bar.com 10.3.xx.xx 80 14m 执行以下命令,测试不同规则下的服务访问。 执行以下命令,通过Host: foo.bar.com访问服务。 curl -H "Host: foo.bar.com" 10.3.xx.xx/ 预期可正常访问网页。 执行以下命令,通过Host: www.123.example.com访问服务 curl -H "Host: www.123.example.com" 10.3.xx.xx/ 预期可正常访问网页。 执行以下命令,通过Host: www.321.example.com访问服务 curl -H "Host: www.321.example.com" 10.3.xx.xx/ 预期可正常访问网页。
  • 配置重定向规则 表2 重定向规则注解 参数 类型 描述 nginx.ingress.kubernetes.io/permanent-redirect String 将访问请求永久重定向至某个目标网址(状态码为301)。 nginx.ingress.kubernetes.io/permanent-redirect-code String 修改永久重定向的返回状态码为指定值。 nginx.ingress.kubernetes.io/temporal-redirect String 将访问请求临时重定向至某个目标网址(状态码为302)。 nginx.ingress.kubernetes.io/ssl-redirect String 是否只能通过SSL访问(当Ingress包含证书时默认为true),将HTTP请求重定向至HTTPS。 nginx.ingress.kubernetes.io/force-ssl-redirect String 是否强制重定向到HTTPS,即使Ingress未启用TLS,通过HTTP访问时,请求将会被强制重定向(状态码为308)到HTTPS。 具体使用场景和说明请参见Nginx Ingress配置重定向规则。
  • 创建一致性哈希负载均衡规则 表5 一致性哈希负载均衡注解 参数 类型 描述 nginx.ingress.kubernetes.io/upstream-hash-by String 为后端启用一致性哈希进行负载均衡,参数值支持nginx参数、文本值或任意组合,例如: nginx.ingress.kubernetes.io/upstream-hash-by: "$request_uri"代表按照请求uri进行hash。 nginx.ingress.kubernetes.io/upstream-hash-by: "$request_uri$host"代表按照请求uri和域名进行hash。 nginx.ingress.kubernetes.io/upstream-hash-by: "${request_uri}-text-value"代表按照请求uri和文本值进行hash。 具体使用场景和说明请参见Nginx Ingress使用一致性哈希负载均衡。
  • 约束与限制 建议其他资源不要使用Ingress自动创建的ELB实例,否则在删除Ingress时,ELB实例会被占用,导致资源残留。 添加Ingress后请在CCE页面对所选ELB实例进行配置升级和维护,不可在ELB页面对配置进行更改,否则可能导致Ingress服务异常。 Ingress转发策略中注册的URL需与后端应用提供访问的URL一致,否则将返回404错误。 IPVS模式集群下,Ingress和Service使用相同ELB实例时,无法在集群内的节点和容器中访问Ingress,因为kube-proxy会在ipvs-0的网桥上挂载LB类型的Service地址,Ingress对接的ELB的流量会被ipvs-0网桥劫持。建议Ingress和Service使用不同ELB实例。 请勿将Ingress与使用HTTP的Service对接同一个ELB下的同一个监听器,否则将产生端口冲突。 独享型ELB规格必须支持应用型(HTTP/HTTPS),且网络类型必须支持私网(有私有IP地址)。 同集群使用多个Ingress对接同一个ELB端口时,监听器的配置项(例如监听器关联的证书、监听器HTTP2属性等)均以首次创建监听器的Ingress配置为准。
  • 通过MCI访问服务 MCI对象创建成功后,您可以通过 http://IP:port/path 访问后端工作负载,其中IP:port为MCI关联ELB的IP和端口,path为MCI对象中定义的路径。 MCI对象中还可以设置外部域名,这样您就可以通过域名来访问到ELB,进而访问到后端服务。 spec: rules: - host: www.example.com # 域名 http: paths: - path: / backend: serviceName: nginx # 准备一个名为nginx的联邦service servicePort: 80 # 端口号为80 域名访问依赖于域名解析,需要您将域名解析指向ELB实例的IP地址,例如您可以使用云解析服务 DNS来实现域名解析。
  • 创建MCI对象 使用kubectl连接集群联邦,详细操作请参见使用kubectl连接集群联邦。 创建并编辑 mci.yaml 文件,文件内容定义如下所示,参数定义请参见表1。 vi mci.yaml apiVersion: networking.karmada.io/v1alpha1 kind: MultiClusterIngress metadata: name: nginx-ingress namespace: default annotations: karmada.io/elb.conditions.nginx-svc: '[{ "type": "header", "headerConfig": { "key":"x-header", "values": [ "green" ] } }]' karmada.io/elb.id: 90f9f782-1243-41cc-a57d-6157f6cb85bf karmada.io/elb.projectid: 65382450e8f64ac0870cd180d14e684b karmada.io/elb.health-check-flag: "on" karmada.io/elb.health-check-option.nginx-svc: '{"protocol":"TCP"}' spec: ingressClassName: public-elb rules: - host: demo.localdev.me http: paths: - backend: service: name: nginx-svc # 准备一个名为nginx-svc的联邦service port: number: 8080 # 端口号为8080 path: /web pathType: Prefix MCI对象的结构体定义与networking.kubernetes.io/v1版本Ingress一致,不同之处在于后端服务需要填写为联邦Service,即在UCS控制台创建的Service,具体请参见集群内访问(ClusterIP)。 在配置MCI文件内容的过程中需要遵守的约束条件如下: apiVersion,kind,name必须指定。 spec下不允许填写TLS和DefaultBackend字段。 rules、paths不能为空。 host必须是DNS名称,不可以是IP地址。 service中所指定的后端服务必须是存在的、且输入的相关信息(如端口)是正确的,否则会导致访问服务失败。若您已经创建了参数信息错误的MCI对象,请参考4中的命令更新该MCI对象。 paths中,配置的高级转发策略(karmada.io/elb.conditions.{service name})越多的后端(backend)在paths中的位置应该越靠前。因为backend在paths中配置的位置越靠前,其转发优先级越高。 示例:如果为后端X配置两条转发策略a和b,为后端Y配置一条转发规则a,则此时paths中X的配置顺序应在Y之前,否则,同时符合a、b两条转发规则的流量将按照优先级顺序全部转发至Y中。 backend下不允许填写resource字段。 path值需要是绝对路径;不合法的path值:invalidPathSequences = []string{"//", "/./", "/../", "%2f","%2F"},invalidPathSuffixes = []string{"/..", "/."}。 pathType合法值:Exact、Prefix、ImplementationSpecific。 表1 关键参数说明 参数 是否必填 参数类型 描述 karmada.io/elb.id 是 String MCI关联的elb的id,不允许为空。长度为1-32个字符。 karmada.io/elb.projectid 是 String MCI关联的elb所属的项目ID,获取方法请参见获取项目ID。长度为1-32个字符。 karmada.io/elb.port 否 String MCI关联的elb的端口,不填默认为80。支持值为1-65535。 karmada.io/elb.health-check-flag 否 String 是否启用健康检查,可选值为: on:开启 off:不开启 不填写时默认为off。 karmada.io/elb.health-check-option 否 HealthCheck Object 健康检查参数,详情请参见HealthCheck。 说明: 健康检查参数配置示例: karmada.io/elb.health-check-option.nginx-svc: '{"protocol":"TCP","delay":"5","connect_port":"80","timeout":"1","max_retries":"1","path":"/wd"}' karmada.io/elb.conditions.{service name} 否 Array of Condition Object 高级转发策略,详情请参见Condition。{service name}请修改为联邦Service的名称。 karmada.io/elb.lb-algorithm.{service name} 否 String 转发算法: ROUND_ROBIN:加权轮询算法。 LEAST_CONNECTIONS:加权最少连接算法。 SOURCE_IP:源IP算法。 不填写时默认为ROUND_ROBIN。 {service name}请修改为联邦Service的名称。 ingressClassName 是 String ingressClass名称。取值必须为public-elb。 host 否 String 为服务访问域名配置,默认为"",表示域名全匹配。请确保所填写的域名已注册并备案,一旦配置了域名规则后,必须使用域名访问。 backend 否 Backend Object 后端,是Service 和端口名称的组合, 。 对于发往MCI的 HTTP(和 HTTPS)请求,如果与规则中的主机和路径匹配, 则会被发送到所列出的后端。 注意: 后端在paths中的配置顺序决定了策略的转发优先级。 示例:如果为后端X配置两条转发策略a和b,为后端Y配置一条转发规则a,则此时paths中X的配置顺序应在Y之前,否则,同时符合a、b两条转发规则的流量将按照优先级顺序全部转发至Y中。 path 是 String 为路由路径,用户自定义设置。所有外部访问请求需要匹配host和path。 说明: 此处添加的访问路径要求后端应用内存在相同的路径,否则转发无法生效。 例如,Nginx应用默认的Web访问路径为“/usr/share/nginx/html”,在为Ingress转发策略添加“/test”路径时,需要应用的Web访问路径下也包含相同路径,即“/usr/share/nginx/html/test”,否则将返回404。 pathType 是 String 路径类型。 ImplementationSpecific: 匹配方法取决于具体Ingress Controller的实现。在CCE中会使用ingress.beta.kubernetes.io/url-match-mode指定的匹配方式。 Exact:精确匹配 URL 路径,且区分大小写。 Prefix:前缀匹配,且区分大小写。该方式是将URL路径通过“/”分隔成多个元素 ,并且对元素进行逐个匹配。 如果URL中的每个元素均和路径匹配,则说明该URL的子路径均可以正常路由。 说明: Prefix匹配时每个元素均需精确匹配,如果URL的最后一个元素是请求路径中最后一个元素的子字符串,则不会匹配 。例如:/foo/bar匹配/foo/bar/baz,但不匹配/foo/barbaz。 通过“/”分隔元素时,若URL或请求路径以“/”结尾,将会忽略结尾的“/”。例如:/foo/bar会匹配/foo/bar/。 关于Ingress路径匹配示例,请参见示例。 表2 HealthCheck参数说明 参数 是否必填 参数类型 描述 protocol 否 String 健康检查使用的协议,支持TCP/HTTP。 connect_port 否 Int 健康检查使用的端口。支持值为1-65535。 delay 否 Int 健康检查的延迟时间,以秒为单位,1-50。 timeout 否 Int 健康检查的超时时间,以秒为单位,1-50。 path 否 String 健康检查的请求URL,当type为HTTP/HTTPS时生效。 以"/"开头,默认为"/"。支持使用字母、数字和短划线(-)、正斜线(/)、半角句号(.)、百分号(%)、半角问号(?)、井号(#)和and(&)以及扩展字符集。长度为1-80个字符。 max_retries 否 Int 最大重试次数,取值范围1-10。 表3 Condition参数说明 参数 是否必填 参数类型 描述 type 是 String 高级转发策略类型,当前仅支持header。 headerConfig 是 headerConfig Object 高级转发策略对象,详情请参见headerConfig。 表4 headerConfig参数说明 参数 是否必填 参数类型 描述 key 是 String 转发Header头。 长度限制1-40字符,只允许包含字母、数字、短划线和下划线。 values 是 String数组 转发Header头对应的值。 长度限制1-128字符,不支持空格, 双引号,支持以下通配符:*(匹配0个或更多字符)和?(正好匹配1个字符)。 执行如下命令创建MCI对象。 kubectl apply -f mci.yaml 回显如下。 multiClusterIngress.networking.karmada.io/nginx-ingress created 创建完成后,可以执行如下命令操作MCI对象。其中nginx-ingress为MCI对象的名称。 获取MCI对象:kubectl get mci nginx-ingress 更新MCI对象:kubectl edit mci nginx-ingress 删除MCI对象:kubectl delete mci nginx-ingress
  • 准备工作 如您在同一VPC下没有可用的ELB,需要先创建ELB实例,具体请参考创建独享型负载均衡器。该ELB实例需要满足以下条件: ELB为独享型。 ELB必须支持应用型(HTTP/HTTPS)。 ELB网络类型必须支持私网(有私有IP地址)。 MCI为跨集群后端工作负载提供统一入口和七层网络访问,因此需要在联邦中提前部署可用的工作负载(Deployment)和服务(Service)。若您无可用工作负载和服务,请参考无状态负载和集群内访问(ClusterIP)创建。
  • 约束与限制 支持设置超时时间的场景如下: 超时时间类型 支持的ELB类型 支持的集群版本 空闲超时时间 独享型 v1.19集群:v1.19.16-r30及以上版本 v1.21集群:v1.21.10-r10及以上版本 v1.23集群:v1.23.8-r10及以上版本 v1.25集群:v1.25.3-r10及以上版本 其他更高版本集群 请求超时时间 独享型 响应超时时间 独享型 空闲超时时间 共享型 v1.23集群:v1.23.13-r0及以上版本 v1.25集群:v1.25.8-r0及以上版本 v1.27集群:v1.27.5-r0及以上版本 v1.28集群:v1.28.3-r0及以上版本 其他更高版本的集群 请求超时时间 共享型 响应超时时间 共享型 更新Ingress时,如果删除超时时间配置,不会修改已有监听器的超时时间配置。
  • 通过控制台创建 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏中选择“服务”,切换至“路由”页签,在右上角单击“创建路由”。 设置Ingress参数。本示例中仅列举必选参数,其余参数可根据需求参考通过控制台创建ELB Ingress进行设置。 名称:自定义服务名称,可与工作负载名称保持一致。 负载均衡器:选择弹性负载均衡的类型、创建方式。 类型:可选择“共享型”或“独享型”。 创建方式:本文中以选择已有ELB为例进行说明,关于自动创建的配置参数请参见负载均衡器。 监听器配置: 前端协议:支持HTTP和HTTPS。本文以HTTP协议为例。 对外端口:开放在负载均衡服务地址的端口,可任意指定。 高级配置: 配置 说明 空闲超时时间 客户端连接空闲超时时间。在超过空闲超时时间一直没有请求, 负载均衡会暂时中断当前连接,直到下一次请求时重新建立新的连接。 请求超时时间 等待客户端请求超时时间。包括两种情况: 读取整个客户端请求头的超时时长,如果客户端未在超时时长内发送完整个请求头,则请求将被中断。 两个连续body体的数据包到达LB的时间间隔,超出请求超时时间将会断开连接。 响应超时时间 等待后端服务器响应超时时间。请求转发后端服务器后,在等待超过响应超时时间没有响应,负载均衡将终止等待,并返回 HTTP504错误码。 图1 配置超时时间 转发策略配置:填写域名匹配规则及需要访问的目标Service。请求的访问地址与转发规则匹配时(转发规则由域名、URL组成,例如:10.117.117.117:80/helloworld),此请求将被转发到对应的目标Service处理。 单击“确定”,创建Ingress。
  • 配置参数说明 表1 nginx-ingress主要参数配置 参数 描述 controller.image.repository ingress-nginx镜像地址,建议与CCE提供的Nginx Ingress插件镜像一致,也可自定义。 Nginx Ingress插件镜像:Nginx Ingress插件的镜像地址可通过已安装插件实例的YAML文件查看。例如“华东-上海一”区域的插件镜像地址为“swr.cn-east-3.myhuaweicloud.com/hwofficial/nginx-ingress”,该地址需要根据集群所在区域进行替换。 自定义:自定义地址需要保证镜像可拉取。 controller.image.registry 镜像仓库域名,该参数需要与controller.image.image同时填写。 如已填写controller.image.repository,则无需再填写该参数,建议将controller.image.registry和controller.image.image设为空值。 controller.image.image 镜像名称。该参数需要与controller.image.registry同时填写。 如已填写controller.image.repository,则无需再填写该参数,建议将controller.image.registry和controller.image.image设为空值。 controller.image.tag ingress-nginx镜像版本,建议与CCE提供的Nginx Ingress插件镜像一致,也可自定义。 Nginx Ingress插件的镜像版本可通过已安装插件实例的YAML文件查看,需要根据插件版本进行替换。 controller.ingressClass 设置Ingress Controller所对应的IngressClass的名称。 说明: 同一个集群中不同套Ingress Controller名称必须唯一,且不能设置为nginx和cce(nginx是集群默认Nginx Ingress Controller的监听标识,cce则是使用ELB Ingress Controller的配置)。 示例:ccedemo controller.image.digest 建议为空值,该参数非空时可能无法拉取CCE提供的Nginx Ingress插件镜像。 controller.ingressClassResource.name 需要与ingressClass值相同。 示例:ccedemo controller.ingressClassResource.controllerValue 同一个集群中不同套Ingress Controller的监听标识必须唯一,且不能设置为k8s.io/ingress-nginx(k8s.io/ingress-nginx是默认Nginx Ingress Controller的监听标识)。 示例:k8s.io/ingress-nginx-demo controller.config nginx配置参数,配置参数范围请参考社区文档。不在范围内的参数配置不会生效。 建议增加如下配置: "keep-alive-requests": "100" controller.extraInitContainers init容器,在主容器启动前执行,可用于Pod参数的初始化配置。 配置参数示例请参见高并发业务场景参数优化。 controller.admissionWebhooks.enabled 是否开启admissionWebhooks,可以对Ingress对象进行有效性校验,避免因配置错误导致ingress-controller不断重新加载资源,导致业务中断。 此处设置为false,表示不开启。如需开启,请参见admissionWebhook配置示例。 controller.admissionWebhooks.patch.enabled 同上,表示是否开启admissionWebhooks。此处设置为false。 controller.service.annotations Key: value类型,此处需加上ELB ID,如下所示: kubernetes.io/elb.id: 5083f225-9bf8-48fa-9c8b-67bd9693c4c0 独享型负载均衡还需要加上elb.class,如下所示: kubernetes.io/elb.class: performance controller.resources.requests.cpu Nginx controller的CPU资源申请值,可根据需求自定义。 controller.resources.requests.memory Nginx controller的内存资源申请值,可根据需求自定义。 defaultBackend.image.repository default-backend镜像地址,建议与CCE提供的Nginx Ingress插件镜像一致,也可自定义。 Nginx Ingress插件镜像:Nginx Ingress插件的镜像地址可通过已安装插件实例的YAML文件查看。例如“华东-上海一”区域的插件镜像地址为“swr.cn-east-3.myhuaweicloud.com/hwofficial/defaultbackend”,该地址需要根据集群所在区域进行替换。 自定义:自定义地址需要保证镜像可拉取。 defaultBackend.image.tag default-backend镜像版本,建议与CCE提供的Nginx Ingress插件镜像一致,也可自定义。 更多参数配置说明请参见ingress-nginx。