ELB Ingress配置HTTP/HTTPS头字段
- 配置HTTP/HTTPS头字段依赖ELB能力,使用该功能前请确认当前区域是否支持使用HTTP/HTTPS头字段,详情请参见HTTP/HTTPS头字段。
- 删除HTTP/HTTPS头字段配置或对应的annotation,将不会对ELB侧配置进行修改。
头字段 |
功能开关 |
功能说明 |
---|---|---|
X-Forwarded-Port |
获取监听器端口号 |
开启获取监听器端口号开关,ELB可通过X-Forwarded-Port头字段获取监听器的端口号,传输到后端服务器的报文中。 |
X-Forwarded-For-Port |
获取客户端请求端口号 |
开启获取客户端请求端口号开关,ELB可通过X-Forwarded-For-Port头字段获取客户端请求的端口号,传输到后端服务器的报文中。 |
X-Forwarded-Host |
重写X-Forwarded-Host |
开启后将以客户端请求头的Host重写X-Forwarded-Host传递到后端云服务器。 |
前提条件
- 已创建Kubernetes集群,且集群版本满足以下要求:
- v1.23集群:v1.23.13-r0及以上版本
- v1.25集群:v1.25.8-r0及以上版本
- v1.27集群:v1.27.5-r0及以上版本
- v1.28集群:v1.28.3-r0及以上版本
- 其他更高版本的集群
- 如果您需要通过命令行创建,需要使用kubectl连接到集群,详情请参见通过kubectl连接集群。
通过控制台创建
- 登录CCE控制台,单击集群名称进入集群。
- 在左侧导航栏中选择“服务”,切换至“路由”页签,在右上角单击“创建路由”。
- 设置Ingress参数。本示例中仅列举必选参数,其余参数可根据需求参考通过控制台创建ELB Ingress进行设置。
- 名称:自定义服务名称,可与工作负载名称保持一致。
- 负载均衡器:选择弹性负载均衡的类型、创建方式。
- 类型:本例中仅支持选择“独享型”。
- 创建方式:本文中以选择已有ELB为例进行说明,关于自动创建的配置参数请参见负载均衡器。
- 监听器配置:
- 前端协议:支持HTTP和HTTPS。本文以HTTP协议为例。
- 对外端口:开放在负载均衡服务地址的端口,可任意指定。
- 高级配置:
配置
说明
使用限制
获取监听器端口号
开启后可以将ELB实例的监听端口从报文的HTTP头中带到后端云服务器。
独享型ELB实例支持配置。
获取客户端请求端口号
开启后可以将客户端的源端口从报文的HTTP头中带到后端云服务器。
独享型ELB实例支持配置。
重写X-Forwarded-Host
开启后将以客户端请求头的Host重写X-Forwarded-Host传递到后端云服务器。
独享型ELB实例支持配置。
图1 配置HTTP/HTTPS头字段
- 转发策略配置:填写域名匹配规则及需要访问的目标Service。请求的访问地址与转发规则匹配时(转发规则由域名、URL组成,例如:10.117.117.117:80/helloworld),此请求将被转发到对应的目标Service处理。
- 单击“确定”,创建Ingress。
通过kubectl命令行创建
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-test annotations: kubernetes.io/elb.id: <your_elb_id> #替换为您已有的ELB ID kubernetes.io/elb.class: performance #ELB类型 kubernetes.io/elb.port: '80' kubernetes.io/elb.x-forwarded-port: 'true' # 获取监听器端口号 kubernetes.io/elb.x-forwarded-for-port: 'true' # 获取客户端请求端口号 kubernetes.io/elb.x-forwarded-host: 'true' # 重写X-Forwarded-Host spec: rules: - host: '' http: paths: - path: '/' backend: service: name: <your_service_name> #替换为您的目标服务名称 port: number: 8080 #替换为您的目标服务端口 property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH pathType: ImplementationSpecific ingressClassName: cce
参数 |
参数类型 |
描述 |
---|---|---|
kubernetes.io/elb.x-forwarded-port |
String |
ELB可通过X-Forwarded-Port头字段获取监听器的端口号,传输到后端服务器的报文中。
|
kubernetes.io/elb.x-forwarded-for-port |
String |
ELB可通过X-Forwarded-For-Port头字段获取客户端请求的端口号,传输到后端服务器的报文中。
|
kubernetes.io/elb.x-forwarded-host |
String |
|