为负载均衡类型的Service配置HTTP/HTTPS头字段

- 配置HTTP/HTTPS头字段依赖ELB能力,使用该功能前请确认当前区域是否支持使用HTTP/HTTPS头字段,详情请参见HTTP/HTTPS头字段。
- 配置HTTP/HTTPS头字段后,如果您在CCE控制台删除HTTP/HTTPS头字段配置或在YAML中删除对应的annotation,ELB侧的配置将会保留。
头字段 |
功能开关 |
功能说明 |
支持的集群版本 |
---|---|---|---|
X-Forwarded-Port |
获取监听器端口号 |
开启获取监听器端口号开关,ELB可通过X-Forwarded-Port头字段获取监听器的端口号,传输到后端服务器的报文中。 |
v1.23.13-r0、v1.25.8-r0、v1.27.5-r0、v1.28.3-r0及以上版本 |
X-Forwarded-For-Port |
获取客户端请求端口号 |
开启获取客户端请求端口号开关,ELB可通过X-Forwarded-For-Port头字段获取客户端请求的端口号,传输到后端服务器的报文中。 |
|
X-Forwarded-Host |
重写X-Forwarded-Host |
开启后将以客户端请求头的Host重写X-Forwarded-Host传递到后端云服务器。 |
|
X-Real-IP |
重写X-Real-IP |
开启后将以客户端的源IP地址重写X-Real-IP传递到后端服务器。 |
v1.25.16-r30、v1.27.16-r30、v1.28.15-r20、v1.29.13-r0、v1.30.10-r0、v1.31.6-r0、v1.32.1-r0及以上版本 |
创建负载均衡并配置HTTP/HTTPS头字段
通过控制台创建
- 登录CCE控制台,单击集群名称进入集群。
- 在左侧导航栏中选择“服务”,在右上角单击“创建服务”。
- 设置Service参数。本示例中仅列举必选参数,其余参数可根据需求参考通过控制台创建进行设置。
- Service名称:自定义服务名称,可与工作负载名称保持一致。
- 访问类型:选择“负载均衡”。
- 选择器:添加标签,Service根据标签选择Pod,填写后单击“确认添加”。也可以引用已有工作负载的标签,单击“引用负载标签”,在弹出的窗口中选择负载,然后单击“确定”。
- 负载均衡器:选择弹性负载均衡的类型、创建方式。
- 类型:本例中仅支持选择“独享型”,且需选择“应用型(HTTP/HTTPS)”或“网络型(TCP/UDP/TLS)&应用型(HTTP/HTTPS)”,否则监听器端口将无法启用HTTP或HTTPS。
- 创建方式:本文中以选择已有ELB为例进行说明,关于自动创建的配置参数请参见表1。
- 端口配置:
- 监听器配置:
- 高级配置:选择合适的头字段进行设置。
配置
说明
使用限制
获取监听器端口号
开启后可以将ELB实例的监听端口从报文的HTTP头中带到后端云服务器。
独享型ELB实例的端口启用HTTP/HTTPS时支持配置。
获取客户端请求端口号
开启后可以将客户端的源端口从报文的HTTP头中带到后端云服务器。
独享型ELB实例的端口启用HTTP/HTTPS时支持配置。
重写X-Forwarded-Host
开启后将以客户端请求头的Host重写X-Forwarded-Host传递到后端云服务器。
独享型ELB实例的端口启用HTTP/HTTPS时支持配置。
重写X-Real-IP
开启后将以客户端的源IP地址重写X-Real-IP传递到后端服务器。
独享型ELB实例的端口启用HTTP/HTTPS时支持配置。
- 高级配置:选择合适的头字段进行设置。
图1 配置HTTP/HTTPS头字段 - 单击“确定”,创建Service。
通过kubectl命令行创建
apiVersion: v1 kind: Service metadata: name: test labels: app: nginx namespace: default annotations: kubernetes.io/elb.class: performance # ELB类型,仅支持performance,即独享型ELB kubernetes.io/elb.id: 35cb350b-23e6-4551-ac77-10d5298f5204 # 已有ELB的ID kubernetes.io/elb.protocol-port: http:80 # 使用HTTP协议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 kubernetes.io/elb.x-real-ip: 'true' # 重写X-Real-IP spec: selector: app: nginx externalTrafficPolicy: Cluster ports: - name: cce-service-0 targetPort: 80 nodePort: 0 port: 80 protocol: TCP type: LoadBalancer loadBalancerIP: **.**.**.** # ELB的IP
参数 |
参数类型 |
描述 |
---|---|---|
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 |
|
kubernetes.io/elb.x-real-ip |
String |
|
验证配置
- 登录CCE控制台,单击集群名称进入集群。
- 在左侧导航栏中选择“服务”,找到新建Service所在行,单击负载均衡名称跳转至ELB控制台查看。
- 切换至“监听器”页签,单击新建端口对应的监听器名称,查看配置是否开启。