BLB Ingress Annotation说明
BLB Ingress Annotation说明
在使用CCE提供的BLB类型的Ingress资源时,可以通过在Annotation中添加注解的方式来使用Ingress的一些高级配置。
Annotation位于Ingress完整YAML的以下位置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/cce.ingress.blb-cert-id: cert-5bqpykggjzmi
kubernetes.io/cce.ingress.blb-id: lb-13ddfb9e
kubernetes.io/cce.ingress.eip: 106.13.169.172
kubernetes.io/ingress.class: cce
……
Ingress可以使用以下高级配置项:
指定当前Ingress由CCE托管
取值说明
若值为cce
,表示当前Ingress由CCE负责实现;
若缺失,或值不是cce
,则CCE不会处理该Ingress。
注意事项
- 通过CCE控制台创建的BLB类型Ingress会自带该Annotation;
- 如果在集群中使用YAML自行创建BLB类型Ingress,需要自行添加该Annotation。
示例
kubernetes.io/ingress.class: cce
删除Ingress时保留应用型BLB/EIP资源
取值说明
若值为true
,则在该Ingress资源对象被删除时,关联的应用型BLB和EIP资源不会被删除;
若缺失,或值是false
,则在该Ingress资源对象被删除时,关联的应用型BLB和EIP资源将会被删除。
注意事项
- CCE不会自动添加该Annotation,需要自行按需添加;
- 如果在创建时忘记添加该Annotation,可以在删除前补上这一条,在删除前添加依然有效。
示例
kubernetes.io/cce.ingress.keep-iaas-resource: "true"
设置Ingress关联的BLB名称
取值说明
用于设置该Ingress关联的BLB的名称,否则名称使用生成的默认使用默认名称格式(集群ID/ingress/命名空间/Ingress名称)来创建BLB;
有时,默认名称会超出最长限制(64个字符),此时需要手动设置该Annotation的值来指定BLB的名称。
注意事项
- CCE不会自动添加该Annotation,需要自行按需添加;
- 不要和已有BLB的名称相同,否则容易混淆,导致误用BLB的情况发生。
示例
kubernetes.io/cce.ingress.blb-name: cce-test-name
为Ingress分配IPv6地址
取值说明
若值为true
时,会为关联的应用型BLB分配IPv6地址;
若值是false
,CCE不会为其分配IPv6地址,并且会摘除应用型BLB上绑定的IPv6地址。
注意事项
- CCE不会自动添加该Annotation,需要自行按需添加。
示例
kubernetes.io/cce.ingress.enable-ipv6: "true"
指定Ingress使用的应用型BLB
取值说明
若设置,CCE将在指定的应用型BLB上配置Ingress规则;
若缺失,CCE会新建一个应用型BLB,并自动设置该Annotation为新建应用型BLB的ID。
注意事项
- 只支持应用型BLB;
- 需要自行先创建好应用型BLB,BLB应在集群所在的VPC内;
- 通过CCE控制台创建的BLB类型Ingress,如果选择了某个已有应用型BLB,会自带该Annotation;
- 如果在集群中使用YAML自行创建BLB类型Ingress,需要自行按需添加该Annotation;
- 修改或删除可能会导致BLB泄露,修改Ingress资源对象时不要覆盖或丢失该Annotation。
示例
kubernetes.io/cce.ingress.blb-id: lb-12345678
设置Ingress仅供VPC内网访问
取值说明
若值为true
,CCE不会为其创建和设置EIP地址;
若缺失,或值是false
,CCE会为应用型BLB分配和绑定EIP。
注意事项
- 通过CCE控制台创建的BLB类型Ingress,当选择内网访问类型时,会自带该Annotation;
- 如果在集群中使用YAML自行创建BLB类型Ingress,需要自行按需添加该Annotation;
- 如果应用型BLB上已经绑定了EIP,在添加该Annotation后,EIP不会被后台解绑,用户需要自行解绑。
示例
kubernetes.io/cce.ingress.internal: "true"
新建Ingress指定新建BLB所在子网
取值说明
若值为集群所在VPC的有效子网ID,则CCE会在需要新建应用型BLB时,将应用型BLB创建在该子网中;
若缺失,CCE将会自行选择创建应用型BLB的子网。
注意事项
- 通过CCE控制台创建的BLB类型Ingress会自带该Annotation;
- 如果在集群中使用YAML自行创建BLB类型Ingress,需要自行按需添加该Annotation。
示例
kubernetes.io/cce.ingress.vpc-subnet-id: sbn-adfEsDzs
新建Ingress指定使用EIP
取值说明
若值为某EIP的地址,CCE将会把该EIP绑定在Ingress对应的应用型BLB上;
若缺失,CCE会默认新建一个EIP,并自动设置该Annotation。
注意事项
- 通过CCE控制台创建的BLB类型Ingress,在指定公网IP后会自带该Annotation;
- 如果在集群中使用YAML自行创建BLB类型Ingress,需要自行按需添加该Annotation;
- 修改或删除可能会导致EIP泄漏,修改Ingress资源对象时不要覆盖或丢失该Annotation;
- 如果Ingress上已经使用了某个EIP,更改该Annotation不会更换应用型BLB上绑定的EIP地址,需要用户自行换绑。
示例
kubernetes.io/cce.ingress.eip: 1.2.3.4
新建Ingress指定新建EIP带宽
取值说明
设置新建的Ingress使用的EIP带宽;
若该Annotation缺失,则默认新建EIP带宽为100Mbps。
注意事项
- 取值范围:[1, 1000];
- CCE不会自动添加该Annotation,需要自行按需添加;
- 仅在新建EIP时有效,不会修改已有EIP的带宽。
示例
kubernetes.io/cce.ingress.eip-bandwidth-in-mbps: "99"
新建Ingress指定新建EIP计费方式
取值说明
若值为ByBandwidth
,在新建EIP时按带宽计费;
若值为ByTraffic
,在新建EIP时按流量计费;
若缺失,默认采用 ByBandwidth
计费方式。
注意事项
- CCE不会自动添加该Annotation,需要自行按需添加;
- 仅在新建EIP时有效,不会修改已有EIP的计费方式。
示例
kubernetes.io/cce.ingress.eip-billing-method: ByBandwidth
新建Ingress指定访问超时时间
取值说明
在新建Ingress时配置HTTP和HTTPS请求的超时时间。
注意事项
- 取值范围:[1, 3600];
- 通过CCE控制台创建的BLB类型Ingress,在设置超时时间后会自带该Annotation;
- 如果在集群中使用YAML自行创建BLB类型Ingress,需要自行按需添加该Annotation。
示例
kubernetes.io/cce.ingress.timeout-in-seconds: "20"
限制BLB默认挂载的后端数
取值说明
该Annotation用于限制Ingress挂载的后端数目。
注意事项
- CCE不会自动添加该Annotation,需要自行按需添加。
示例
kubernetes.io/cce.ingress.max-backend-count: 50
是否支持HTTPS
取值说明
若该Annotation值为true
,CCE会为其创建HTTPS相关配置;
若缺失,或值为false
,CCE不会管理关联应用型BLB上的HTTPS配置。
注意事项
- 通过CCE控制台创建的BLB类型Ingress,在开启HTTPS后会自带该Annotation;
- 如果在集群中使用YAML自行创建BLB类型Ingress,需要自行按需添加该Annotation;
- 若缺失,或值为
false
,CCE不会管理关联应用BLB上的HTTPS配置,也就是说,如果应用型BLB上已经有HTTPS监听器和转发规则,此时控制器不会删除这些HTTPS配置,需要用户手动处理。
示例
kubernetes.io/cce.ingress.https: "true"
新建Ingress支持HTTP重定向
取值说明
若值为true
,CCE会配置将访问HTTP端口的流量转发到HTTPS端口上去。
注意事项
- 通过CCE控制台创建的BLB类型Ingress,在开启HTTP重定向后会自带该Annotation;
- 如果在集群中使用YAML自行创建BLB类型Ingress,需要自行按需添加该Annotation。
示例
kubernetes.io/cce.ingress.http-redirect: "true"
新建Ingress指定HTTPS证书
取值说明
若在新建Ingress时希望使用HTTPS,则同时需要设定HTTPS证书;
该Annotation的值应为百度云上已经申请到的证书ID。
注意事项
- 通过CCE控制台创建的BLB类型Ingress,在选择HTTPS证书后会自带该Annotation;
- 如果在集群中使用YAML自行创建BLB类型Ingress,需要自行按需添加该Annotation。
示例
kubernetes.io/cce.ingress.blb-cert-id: xs-asdfDESz
设置HTTP、HTTPS规则
取值说明
对于Ingress Spec中的规则,CCE默认将其创建为HTTP转发规则,而不是HTTPS转发规则。
使用kubernetes.io/cce.ingress.http-rules
和kubernetes.io/cce.ingress.https-rules
这两条Annotation可以显式指明某条规则是HTTP还是HTTPS规则。
注意事项
- 通过CCE控制台创建的BLB类型Ingress,会自带该Annotation;
- 如果在集群中使用YAML自行创建BLB类型Ingress,需要自行按需添加该Annotation。
示例
kubernetes.io/cce.ingress.http-rules: >-
[
{ "host":"ad.com",
"http":{
"paths":[
{"path":"/*","backend":{"serviceName":"service-example","servicePort":80}}
]
}
}
]
kubernetes.io/cce.ingress.https-rules: >-
[
{ "host":"ad.com",
"http":{
"paths":[
{"path":"/*","backend":{"serviceName":"service-example","servicePort":80}}
]
}
}
]
使用专属BLB集群
取值说明
当用户存在BLB专属集群时,后端会优先将应用型BLB创建在BLB专属集群上。
使用以下Annotation可以指定是否使用专属集群,以及使用哪个专属集群:
- 使用共享集群创建应用型BLB
使用该Annotationkubernetes.io/no-use-blb-cluster-l4: "true"
之后,应用型BLB将建在L4共享集群上;
使用该Annotationkubernetes.io/no-use-blb-cluster-l7: "true"
之后,应用型BLB将建在L7共享集群上。
- 指定创建在专属集群上
使用该Annotationkubernetes.io/blb-cluster-l4-id: "test"
之后,应用型BLB将创建在指定的专属L4 BLB集群上;
使用该Annotationkubernetes.io/blb-cluster-l7-id: "test"
之后,应用型BLB将创建在指定的专属L7 BLB集群上。
注意事项
- 有了专属集群之后,如果没有显式添加Annotation,将由后台自动选择创建在哪个专属BLB集群上。
示例
# 仅为 Ingress 指定 4 层 BLB 专属集群
kubernetes.io/blb-cluster-l4-id: blb-cluster-l4-id
kubernetes.io/no-use-blb-cluster-l7: true
# 仅为 Ingress 指定 7 层 BLB 专属集群
kubernetes.io/no-use-blb-cluster-l4: true
kubernetes.io/blb-cluster-l7-id: blb-cluster-l7-id
# 为 Ingress 指定 4 层和 7 层 BLB 专属集群
kubernetes.io/blb-cluster-l4-id: blb-cluster-l4-id
kubernetes.io/blb-cluster-l7-id: blb-cluster-l7-id
# 显式声明 Ingress 不使用任何专属集群
kubernetes.io/no-use-blb-cluster-l4: true
kubernetes.io/no-use-blb-cluster-l7: true
设置请求调度方法
取值说明
若值为RoundRobin
,则使用加权轮询法调度请求;
若值为LeastConnection
,则使用最小连接数法法调度请求;
若缺失,默认采用RoundRobin
调度方法。
设置HTTP调度方法使用kubernetes.io/cce.ingress.blb.listener.http.scheduler
,设置HTTPS调度方法使用kubernetes.io/cce.ingress.blb.listener.https.scheduler
。
注意事项
- CCE不会自动添加该Annotation,需要自行按需添加;
- 仅在新建应用型BLB监听器时有效。
示例
# HTTP
kubernetes.io/cce.ingress.blb.listener.http.scheduler: "LeastConnection"
# HTTPS
kubernetes.io/cce.ingress.blb.listener.https.scheduler: "LeastConnection"
取消添加X-Forwarded-For(XFF)头
取值说明
若值为true
,应用型BLB自动在请求头中添加X-Forwarded-For请求头;
若值为false
,应用型BLB不会自动在请求头中添加X-Forwarded-For请求头;
若缺失,行为和true
一致,应用型BLB自动在请求头中添加X-Forwarded-For请求头。
设置HTTP请求使用kubernetes.io/cce.ingress.blb.listener.http.enable-x-forwarded-for-header
,设置HTTPS请求使用kubernetes.io/cce.ingress.blb.listener.https.enable-x-forwarded-for-header
。
注意事项
- CCE不会自动添加该Annotation,需要自行按需添加;
- 仅在新建应用型BLB监听器时有效。
示例
kubernetes.io/cce.ingress.blb.listener.http.enable-x-forwarded-for-header: "false",
kubernetes.io/cce.ingress.blb.listener.https.enable-x-forwarded-for-header: "false"
配置会话保持
取值说明 会话保持功能涉及多条Annotation,解释如下:
- 打开或关闭会话保持
值为true
为打开会话保持。默认值为false
。
开关HTTP会话保持使用kubernetes.io/cce.ingress.blb.listener.http.keep-session.enable
,开关HTTPS会话保持使用kubernetes.io/cce.ingress.blb.listener.https.keep-session.enable
。
在打开会话保持后,后面的Annotation才会生效。
- 设置会话保持类型
值为insert
表示植入Cookie,值为rewrite
表示重写Cookie。默认值为insert
。
设置HTTP会话保持类型使用kubernetes.io/cce.ingress.blb.listener.http.keep-session.type
,设置HTTPS会话保持类型使用kubernetes.io/cce.ingress.blb.listener.https.keep-session.type
。
- 设置会话超时时间(仅对insert类型有效)
取值为 [1,15552000],默认值为3600,单位是秒。
设置HTTP会话保持超时时间用kubernetes.io/cce.ingress.blb.listener.http.keep-session.timeout
,设置HTTPS会话保持超时时间使用kubernetes.io/cce.ingress.blb.listener.https.keep-session.timeout
。
- 设置Cookie名称(仅对rewrite类型有效)
设置HTTP会话保持Cookie名称使用kubernetes.io/cce.ingress.blb.listener.http.keep-session.cookie-name
,设置HTTP会话保持Cookie名称使用kubernetes.io/cce.ingress.blb.listener.https.keep-session.cookie-name
。
注意事项
- CCE不会自动添加该Annotation,需要自行按需添加;
- 仅在新建应用型BLB监听器时有效。
示例
# HTTP
kubernetes.io/cce.ingress.blb.listener.http.keep-session.enable: "true",
kubernetes.io/cce.ingress.blb.listener.http.keep-session.type: "insert"
kubernetes.io/cce.ingress.blb.listener.http.keep-session.timeout: 999
# HTTPS
kubernetes.io/cce.ingress.blb.listener.https.keep-session.enable: "true",
kubernetes.io/cce.ingress.blb.listener.https.keep-session.type: "rewrite",
kubernetes.io/cce.ingress.blb.listener.https.keep-session.cookie-name: "cce-test"