# 自动创建负载均衡配置（lbconfig）
LoadBalancerAutoCreateConfiguration（lbconfig）用于定义ELB（弹性负载均衡）的创建参数。您只需将配置好的lbconfig关联至自定义GatewayClass或Gateway，CCE即可根据预设参数自动为您创建对应的ELB实例。CCE默认提供了5种预置的GatewayClass，可满足绝大多数场景的需求（详见[默认GatewayClass](https://support.huaweicloud.com/usermanual-cce/cce_10_1178.html#cce_10_1178__section282622712372)）。当预置GatewayClass绑定的底层ELB参数（如规格、带宽等）无法满足需求时，您可以参考本文创建自定义lbconfig并完成关联，实现ELB创建参数的按需定制。
#### 前提条件
集群版本已支持ELB Gateway功能。
#### 约束与限制
修改lbconfig不会变更已有Gateway的ELB配置，更改仅对新创建的Gateway生效。
#### 操作步骤
#### 步骤一：创建lbconfig资源
创建lbconfig，详见[LoadBalancerAutoCreateConfiguration参数说明]
```
apiVersion: gateway.cce.io/v1alpha1
kind: LoadBalancerAutoCreateConfiguration
metadata:
  name: my-lb-config
# 注意：lbconfig 是集群级资源（Cluster-scoped），不设 namespace
spec:
  name: "cce-lb-my-gateway"            # 创建的 ELB 名称
  guaranteed: true                     # 是否创建独享型 ELB：true=独享型 / false=共享型
  tags:                                # ELB 实例标签
    - key: "my-tag-key"                # 标签键
      value: "my-tag-value"            # 标签值
  vipSubnetCIDRID: "subnet-cidr-id-xxx"  # ELB 前端子网 CIDR ID
  elbVipAddress: "192.168.1.100"      # ELB VIP 地址，不填则自动分配
  loadbalanceReclaimPolicy: alwaysDelete     #自动创建ELB的回收策略
  ipv6BandWidthID: ""                 # 已有的 IPv6 共享带宽 ID，仅独享型支持
  publicIP:                           # 公网 IP 配置
    networkType: "5_bgp"              # 公网 IP 网络类型
    bandwidth:                        # 带宽配置
      bandwidthName: "my-bandwidth"   # 带宽名称
      bandwidthSize: 10               # 带宽大小（Mbit/s）
      bandwidthChargeMode: "bandwidth"  # 计费模式：bandwidth=按带宽 / traffic=按流量
      bandwidthShareType: "PER"       # 带宽共享类型：PER=独享 / WHOLE=共享
      bandwidthID: ""                 # 已有的共享带宽 ID，加入该带宽（不新创建）
  enterpriseProjectID: "0"             # 企业项目 ID
  elbVirSubnetIDs:                     # ELB 后端子网 ID 列表，仅独享型支持
    - "vir-subnet-id-1"
    - "vir-subnet-id-2"
  elbIPv6SubnetID: "ipv6-subnet-id"   # ELB IPv6 前端子网 ID，仅独享型支持
  l4FlavorID: "flavor-l4-xxx"          # 四层规格 ID，仅独享型支持
  l4FlavorName: ""                     # 四层规格名称，仅独享型支持
  l7FlavorID: "flavor-l7-xxx"          # 七层规格 ID，仅独享型支持
  l7FlavorName: ""                     # 七层规格名称，仅独享型支持
  availabilityZones:                   # 可用区列表，仅独享型支持
    - "az-1"
    - "az-2"
```
#### 步骤二：关联lbconfig至Gateway
您可以根据实际管理需求，选择以下任意一种方式进行关联：
- **方式一：通过GatewayClass统一关联（推荐）**
  适用场景：集群管理员统一运维。由管理员创建GatewayClass并绑定lbconfig，开发人员后续只需声明该GatewayClass即可直接继承ELB配置。
  1. 创建GatewayClass并关联lbconfig：在parametersRef中引用步骤1创建的lbconfig。
     ```
     apiVersion: gateway.networking.k8s.io/v1
     kind: GatewayClass
     metadata:
       name: my-cce-gateway-class
     spec:
       controllerName: gateway.cce.io/gateway-controller      #cce 管理的gatewayControllerName
       parametersRef:        
         group: gateway.cce.io
         kind: LoadBalancerAutoCreateConfiguration     
         name: lbconfig-plb-basic   # 创建的自定义lbConfig名称
     ```
     
  
  2. 创建Gateway：声明使用上述GatewayClass。
     ```
     apiVersion: gateway.networking.k8s.io/v1
     kind: Gateway
     metadata:
       name: my-cce-gateway
       namespace: default
     spec:
       gatewayClassName: my-cce-gateway-class
       listeners:
         - name: default-http
           port: 80
           protocol: HTTP
     ```
     
   
- **方式二：在Gateway级别直接关联**
  适用场景：单个Gateway业务的特化定制。无需新建GatewayClass，直接在Gateway资源中指定lbconfig。
  ```
  apiVersion: gateway.networking.k8s.io/v1
  kind: Gateway
  metadata:
    name: my-gateway
    namespace: default
  spec:
    gatewayClassName: cce-dedicated-external   #gatewayClass名称
    infrastructure:
      parametersRef:
        group: gateway.cce.io
        kind: LoadBalancerAutoCreateConfiguration     
        name: lbconfig-plb-basic   # 创建的自定义lbConfig名称
    listeners:
      - name: http
        protocol: HTTP
        port: 82
  ```
  
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
当Gateway与它所使用的GatewayClass同时配置了lbconfig时，Gateway级别的配置优先级更高，将自动覆盖GatewayClass级别的配置。
 #### LoadBalancerAutoCreateConfiguration参数说明
表1lbconfig Spec 
| 参数                     | 是否必填  | 参数类型                                                       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| name                    | 否    | String                                                     | 自动创建的负载均衡的名称。 取值范围：只能由中文、英文字母、数字、下划线、中划线、点组成，且长度范围为1-64个字符。 默认名称：cce-gw+gateway.UID                                                                                                                                                                                                                                                                                                                                      |
| guaranteed              | 否  | Boolean                                                    | 负载均衡实例类型，独享型或者共享型。 取值如下 - true ：独享型负载均衡  - false：共享型负载均衡   默认类型：false                                                                                                                                                                                   |
| availabilityZones     | 否   | Array of strings                                          | 负载均衡所在可用区。 可以通过[查询可用区列表](https://support.huaweicloud.com/api-elb/ListAvailabilityZones.html)获取所有支持的可用区。 独享型负载均衡器独有字段。                                                                                                                                                                                                                                                                                                    |
| vipSubnetCIDRID          | 否    | String                                                     | 填写子网的IPv4子网ID，指定ELB所在的子网，用于分配ELB实例对外服务的IP地址，该子网必须属于集群所在的VPC。 如不指定，则默认与集群在同一个子网。 仅v1.21及以上版本的集群支持指定该字段。 **获取方式：** 登录[VPC控制台](https://console.huaweicloud.com/vpc/#/vpc/vpcs/list)，在左侧导航栏选择"子网"，根据集群所在的VPC名称筛选子网，单击子网名称，在"基本信息"页签下找到"IPv4子网ID"字段复制即可。                                                                                                       |
| elbVirSubnetIDs         | 否   | Array of strings                                          | 填写子网的网络ID，指定负载均衡后端所在子网，用于分配与后端服务建立连接的IP地址，不填默认为vip_subnet_cidr_id参数所选的子网。不同实例规格将占用不同数量子网IP，不建议使用其他资源（如集群，节点等）的子网网段。 独享型负载均衡器独有字段。 **获取方式：** 登录[VPC控制台](https://console.huaweicloud.com/vpc/#/vpc/vpcs/list)，在左侧导航栏选择"子网"，根据集群所在的VPC名称筛选子网，单击子网名称，在"基本信息"页签下找到"网络ID"字段复制即可。                                                                                                               |
| elbVipAddress          | 否   | String                                                    | 负载均衡器的内网IP。仅支持指定IPv4地址，不支持指定IPv6地址。 该IP必须为ELB所在子网网段中的IP。若不指定，自动从ELB所在子网网段中生成一个IP地址。                                                                                                                                                                                                                                                                                                                                                                  |
| l4FlavorName            | 否 | String                                                    | 四层负载均衡实例规格名称。需要使用TCP、UDP、TLS协议时必填。 可以通过[查询规格列表](https://support.huaweicloud.com/api-elb/ListFlavors.html)获取所有支持的类型。 - 弹性规格：适用于业务用量波动较大的场景，按实际使用量收取每小时使用的容量费用。  - 固定规格：适用于业务用量较为稳定的场景，按固定规格折算收取每小时使用的容量费用。   独享型负载均衡器独有字段。                                    |
| l7FlavorName            | 否   | String                                                      | 七层负载均衡实例规格名称。使用HTTP/HTTPS协议时必填。 可以通过[查询规格列表](https://support.huaweicloud.com/api-elb/ListFlavors.html)获取所有支持的类型。 - 弹性规格：适用于业务用量波动较大的场景，按实际使用量收取每小时使用的容量费用。  - 固定规格：适用于业务用量较为稳定的场景，按固定规格折算收取每小时使用的容量费用。   独享型负载均衡器独有字段，必须与l4_flavor_name对应规格的类型一致，即都为弹性规格或都为固定规格。 |
| tags                     | 否  | Array of [ELBTag] objects | ELB 实例标签列表                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| loadbalanceReclaimPolicy | 否  | String                                                     | 自动创建的ELB配置回收策略，取值如下： - retain：在删除Gateway时保留自动创建的ELB。  - alwaysDelete：在删除Gateway时会删除自动创建的ELB。若ELB被多个Service/Ingress/Gateway关联，删除所有的关联该ELB的Service/Ingress/Gateway后，会保证该ELB被同步删除。   默认值 ：alwaysDelete                                                                                     |
| publicIP                  | 否   | [PublicIP] object         | 公网 IP 配置                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| ipTargetEnable          | 否  | Boolean                                                    | 指定是否启用 IP 地址后端。 - true：表示启用IP类型的后端。  - false：表示关闭IP类型的后端。                                                                                                                                                                                                                                                            |
   
 表2ELBTag 
| 参数  | 是否必填 | 参数类型      | 描述 |
|:---|:---|:---|:---|
| key  | 是  | String | 标签键 |
| value | 是     | String   | 标签值 |
   
 表3PublicIP 
| 参数          | 是否必填 | 参数类型                                                | 描述                      |
|:---|:---|:---|:---|
| networkType | 是  | String                                               | 公网IP网络类型，如5_bgp、5_sbgp |
| bandwidth | 是    | [Bandwidth] Object | 带宽配置                    |
   
 表4Bandwidth 
| 参数                  | 是否必填 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|:---|:---|:---|:---|
| bandwidthShareType  | 否     | String | 带宽共享类型，如PER、WHOLE                                                                                                                                                                                                                                                                                                                                                                                                                       |
| bandwidthSize          | 否   | Integer | 带宽大小，默认1Mbit/s\~2000Mbit/s，请根据Region带宽支持范围设置。 调整带宽时的最小单位会根据带宽范围不同存在差异。 - 小于等于300Mbit/s：默认最小单位为1Mbit/s。  - 300Mbit/s\~1000Mbit/s：默认最小单位为50Mbit/s。  - 大于1000Mbit/s：默认最小单位为500Mbit/s。   |
| bandwidthChargeMode | 否    | String  | 带宽付费模式。 - bandwidth：按带宽  - traffic：按流量                                                                                                                                                                                                                                      |
| bandwidthID            | 否    | String  | 已有共享带宽ID                                                                                                                                                                                                                                                                                                                                                                                                                              |
| bandwidthName         | 否     | String | 带宽的名称，默认值为：cce-bandwidth-\*\*\*\*\*\*。 取值范围：只能由中文、英文字母、数字、下划线、中划线、点组成，且长度范围为1-64个字符。                                                                                                                                                                                                                                                                                                                       |
| ipv6BandWidthID     | 否   | String  | 已有IPv6共享带宽ID，仅独享型ELB                                                                                                                                                                                                                                                                                                                                                                                                                    |
   
