BLB Ingress Annotation说明
BLB Ingress Annotation说明
您可以通过在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托管
说明
若该Annotation值为cce
,表示当前Ingress由CCE负责实现。
若该Annotation缺失,或值不是cce
,则CCE不会处理该Ingress。
通过CCE控制台创建的BLB类型Ingress会自带该Annotation,用户无需手动设置。
示例
kubernetes.io/ingress.class: cce
删除Ingress时保留BLB/EIP资源
说明
该Annotation值为true
时,则在该Ingress删除时,关联的BLB和EIP资源不会被删除。
若该Annotation缺失,或值是false
,CCE会在Ingress删除时删除后关联的BLB和EIP。
CCE不会为用户自动添加该Annotation,需要自行按需添加。
示例
kubernetes.io/cce.ingress.keep-iaas-resource: "true"
设置Ingress关联的BLB名称
说明
该Annotation的值会被用户在创建或更新时,设置关联BLB的名称。
若该Annotation缺失,CCE会使用默认名称格式(集群ID/svc/命名空间/Service名称)来创建和更新BLB。
有时,默认名称会超出最长限制,此时我们需要手动设置该Annotation的值来指定BLB的名称。
该值最长为64个字符。
CCE不会为用户自动添加该Annotation,需要自行按需添加。
示例
kubernetes.io/cce.ingress.blb-name: cce-test-name
为Ingress分配IPv6地址
说明
该Annotation在IPv6集群中使用,当值为true
时,会为Ingress分配IPv6地址。
若该Annotation缺失,或值是false
,CCE会不分配或摘除其IPv6地址。
CCE不会为用户自动添加该Annotation,需要自行按需添加。
示例
kubernetes.io/cce.ingress.enable-ipv6: "true"
指定Ingress使用的BLB
说明
该Annotation用于设定Ingress使用的BLB。
其值应为已经存在,且与集群处于同一个VPC的BLB的ID。
若该Annotation缺失,CCE会默认新建一个BLB,并自动设置该Annotation。
通过CCE控制台创建的BLB类型Ingress会自带该Annotation,用户无需手动设置。
注意:修改或删除可能会导致BLB泄漏
示例
kubernetes.io/cce.ingress.blb-id: lb-12345678
设置Ingress仅供VPC内网访问
说明
若该Annotation值为true
,CCE不会为其创建和设置EIP地址。
但对于已经在BLB上绑定EIP的情况,出于稳定考虑,CCE不会尝试去解绑EIP。
若该Annotation缺失,或值是false
,CCE会默认为其分配EIP地址。
通过CCE控制台创建的BLB类型Ingress,当选择内网访问类型时,会自带该Annotation,用户无需手动设置。
示例
kubernetes.io/cce.ingress.internal: "true"
新建Ingress指定新建BLB所在子网
说明
若该Annotation值为集群所在VPC的有效子网ID,则CCE会将BLB创建在该子网中。
若该Annotation缺失,CCE将会将子网创建在集群默认的LB Service子网中。
通过CCE控制台创建的BLB类型Ingress,当选择子网之后,会自带该Annotation,用户无需手动设置。
示例
kubernetes.io/cce.ingress.vpc-subnet-id: sbn-adfEsDzs
新建Ingress指定使用EIP
说明
该Annotation用于在新建Ingress时指定使用某个EIP。
若该Annotation缺失,CCE会默认新建一个EIP,并自动设置该Annotation。
出于稳定考虑,如果Ingress上已经使用了某个EIP,更改该Annotation不会更换EIP地址。
通过CCE控制台创建的BLB类型Ingress,当选择EIP之后,会自带该Annotation,用户无需手动设置。
注意:修改或删除可能会导致EIP泄漏
示例
kubernetes.io/cce.ingress.eip: 1.2.3.4
新建Ingress指定新建EIP带宽
说明
该Annotation用设置新建的Ingress使用的EIP带宽。
若该Annotation缺失,则默认新建EIP带宽为100Mbps。
取值范围:[1, 1000]
CCE不会为用户自动添加该Annotation,需要自行按需添加。
示例
kubernetes.io/cce.ingress.eip-bandwidth-in-mbps: "99"
新建Ingress指定新建EIP计费方式
说明
该Annotation用于设置新建的Ingress使用的计费方式。
值为ByBandwidth
表示按带宽计费,值为ByTraffic
表示按流量计费。
若该Annotation缺失,则默认新建EIP使用按流量计费方式。
CCE不会为用户自动添加该Annotation,需要自行按需添加。
示例
kubernetes.io/cce-elastic-ip-billing-method: ByBandwidth
新建Ingress指定访问超时时间
说明
该Annotation用于在新建Ingress时设置HTTP/HTTPS请求的超时时间。
通过CCE控制台创建的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相关配置。
通过CCE控制台创建的BLB类型Ingress,在开启HTTPS之后,会自带该Annotation,用户无需手动设置。
示例
kubernetes.io/cce.ingress.https: "true"
新建Ingress支持HTTP重定向
说明
若该Annotation值为true
,CCE会配置将访问HTTP端口的流量转发到HTTPS端口上去。
通过CCE控制台创建的BLB类型Ingress,在打开HTTP重定向功能之后,会自带该Annotation,用户无需手动设置。
示例
kubernetes.io/cce.ingress.http-redirect: "true"
新建Ingress指定HTTPS证书
说明
若在新建Ingress时希望使用HTTPS,则同时需要设定HTTPS证书。
该Annotation的值应为百度云上已经申请到的证书ID。
通过CCE控制台创建的BLB类型Ingress,在选择证书之后,会自带该Annotation,用户无需手动设置。
注意:仅在创建时有效,已有Ingress的证书请在BLB控制台修改
示例
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,用户无需手动设置。
示例
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}}
]
}
}
]