
# 为负载均衡类型的Service配置黑名单/白名单访问策略
使用负载均衡类型的服务时，您可以通过添加白名单和黑名单的方式控制访问负载均衡监听器的IP。
- 白名单：指定的IP允许访问，而其它IP不能访问。
- 黑名单：指定的IP不能访问，而其它IP允许访问。
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
配置黑名单/白名单访问策略后，如果您在CCE控制台删除黑名单/白名单访问策略配置或在YAML中删除对应的annotation，ELB侧的配置将会保留。
#### 前提条件
- 已创建Kubernetes集群，且集群版本满足以下要求：
  - v1.23集群：v1.23.12-r0及以上版本
  
  - v1.25集群：v1.25.7-r0及以上版本
  
  - v1.27集群：v1.27.4-r0及以上版本
  
  - v1.28集群：v1.28.2-r0及以上版本
  
  - 其他更高版本的集群
   
- 已在ELB控制台创建一个IP地址组，详情请参见[创建IP地址组](https://support.huaweicloud.com/usermanual-elb/elb_ug_ip_0001.html#section2)。
 
#### 创建负载均衡并配置黑名单/白名单访问策略
您可以通过以下方式进行创建。
- [通过控制台创建]
- [通过kubectl命令行设置]
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧导航栏中选择"服务"，在右上角单击"创建服务"。 
   本示例中仅列举配置SNI的必选参数，其余参数保持默认，您可根据需求参考[通过控制台创建](https://support.huaweicloud.com/usermanual-cce/cce_10_0681.html#cce_10_0681__section6880821105120)进行设置。
   
   
3. 设置基础配置参数。 
   
   | 参数   | 说明                                                                                                                                                            | 示例        |
   |:---|:---|:---|
   | 访问类型 | 选择"负载均衡"。                                                                                                                                                     | -         |
   | 服务名称 | 自定义服务名称，可与工作负载名称保持一致。                                                                                                                                         | nginx     |
   | 命名空间 | 工作负载所在命名空间。                                                                                                                                                   | default   |
   | 选择器  | 您可以添加Pod标签的键值，Service将会根据标签与工作负载的Pod进行关联，将流量导向包含该标签的Pod。 您也可以引用已有工作负载的标签，单击"引用负载标签"，在弹出的窗口中选择负载，然后单击"确定"。 | app:nginx |
      
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002407634521.png "点击放大")
   
   
   
4. 设置负载均衡配置参数。 
   
   | 参数    | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | 示例                                              |
   |:---|:---|:---|
   | 负载均衡器 | 选择弹性负载均衡的类型及创建方式。 - 选择已有：仅支持选择与集群在同一个VPC下的ELB实例。如果没有可选的ELB实例，请单击"创建负载均衡器"跳转到ELB控制台创建。  - 自动创建：自动创建的负载均衡实例将创建到集群所在的VPC，具体配置如[表1](https://support.huaweicloud.com/usermanual-cce/cce_10_0681.html#cce_10_0681__table3428724185319)所示。 说明： 当集群使用共享VPC时，不支持自动创建共享型ELB。    | 选择已有"独享型"的"网络型（TCP/UDP/TLS）\&应用型（HTTP/HTTPS）"实例 |
      
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002380728432.png "点击放大")
   
   
   
5. 填写访问设置参数。 
   
   | 参数   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         | 示例                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   |:---|:---|:---|
   | 服务亲和 | 选择将外部流量路由到节点本地或集群范围的端点，详情请参见[服务亲和（externalTrafficPolicy）](https://support.huaweicloud.com/usermanual-cce/cce_10_0249.html#cce_10_0249__section18134208069)。 - 集群级别：集群下所有节点的IP+节点端口均可以访问到此服务关联的负载，服务访问会因路由跳转导致一定性能损失，且无法获取到客户端源IP。  - 节点级别：只有通过负载所在节点的IP+节点端口才可以访问此服务关联的负载，服务访问没有因路由跳转导致的性能损失，且可以获取到客户端源IP。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      | 集群级别                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 端口配置 | - 协议：请根据业务的协议类型选择。根据Kubernetes中定义的实现方案，Service在使用ELB提供的非UDP协议时，都需要将该参数设置为TCP并选择对应的[监听器前端协议](https://support.huaweicloud.com/usermanual-cce/cce_10_0681.html#cce_10_0681__li1688115499190)。详细说明请参见[Service所用的协议](https://kubernetes.io/zh-cn/docs/reference/networking/service-protocols/#special-cases)。  - 容器端口：工作负载程序实际监听的端口，需用户确定。例如nginx默认使用80端口。  - 服务端口：Service使用的端口。 - 单端口监听：端口范围为1-65535。  - 区间端口监听：负载均衡服务支持创建某个端口范围的监听器，您最多可为每个监听器添加10个互不重叠的监听端口段。 为负载均衡服务配置区间端口监听需满足以下条件： - 集群版本为v1.23.18-r0、v1.25.13-r0、v1.27.10-r0、v1.28.8-r0、v1.29.4-r0、v1.30.1-r0及以上。  - 使用独享型ELB且选择TCP/UDP/TLS协议。  - 该功能依赖ELB能力，使用该功能前请确认ELB在当前区域是否支持四层协议全端口监听和转发。      - 监听器前端协议：ELB监听器的前端协议，是客户端与负载均衡监听器建立流量分发连接所使用的协议。当选择独享型负载均衡器类型时，包含"应用型（HTTP/HTTPS）"方可支持配置HTTP/HTTPS；包含"网络型（TCP/UDP/TLS）"方可支持配置TLS。   说明： 在创建LoadBalancer类型Service时，会自动生成一个随机节点端口号（NodePort）。 | - 协议：TCP协议  - 容器端口：80  - 服务端口：80  - 监听器前端协议：HTTP   |
      
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002413836705.png "点击放大")
   
   
   
6. 设置负载监听器相关配置参数。 
   
   | 参数     | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           | 示例  |
   |:---|:---|:---|
   | 访问控制   | - 继承ELB已有配置：CCE不对ELB侧已有的访问控制进行修改。  - 允许所有IP访问：不设置访问控制。  - 白名单：仅所选IP地址组可以访问ELB地址。  - 黑名单：所选IP地址组无法访问ELB地址。   说明： v1.25.16-r10、v1.27.16-r10、v1.28.15-r0、v1.29.10-r0、v1.30.6-r0、v1.31.1-r0及以上版本的集群中，使用独享型ELB时访问控制可同时选择多个IP地址组，最多同时选择5个。 | 黑名单 |
   | 访问控制开关 | 仅配置黑/白名单时需要设置，可单独控制黑/白名单配置是否生效。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | 开启  |
      
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002414424517.png "点击放大")
   
   
   
7. 单击"创建"，创建Service。
 
以使用已有ELB创建Service的场景为例，YAML配置示例如下：
```
apiVersion: v1 
kind: Service 
metadata: 
  name: nginx
  annotations:
    kubernetes.io/elb.id: <your_elb_id>                    # ELB ID，替换为实际值
    kubernetes.io/elb.class: performance                   # 负载均衡器类型
    kubernetes.io/elb.acl-id: <your_acl_id>               # ELB的IP地址组ID
    kubernetes.io/elb.acl-status: 'on'                  # 开启访问控制
    kubernetes.io/elb.acl-type: 'white'                   # 白名单控制
spec:
  selector: 
     app: nginx
  ports: 
  - name: service0 
    port: 80
    protocol: TCP 
    targetPort: 80
  type: LoadBalancer
```
表1ELB访问控制注解 
| 参数                           | 类型     | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|
| kubernetes.io/elb.acl-id     | String | - 不填写该参数时：表示CCE不对ELB侧访问控制进行修改。  - 参数值填写为空值时：表示允许所有IP访问。  - 参数值填写为ELB的IP地址组ID时：表示开启访问控制，为ELB设置IP地址黑名单或白名单。此时需同时填写kubernetes.io/elb.acl-status和kubernetes.io/elb.acl-type参数。 说明： v1.25.16-r10、v1.27.16-r10、v1.28.15-r0、v1.29.10-r0、v1.30.6-r0、v1.31.1-r0及以上版本的集群中，使用独享型ELB时可同时填写多个IP地址组，最多同时填写5个，用英文逗号分隔。 **获取方法：** 登录[ELB控制台](https://console.huaweicloud.com/vpc/#/elb/list/grid)，单击"弹性负载均衡 \> IP地址组"，复制目标IP地址组的"ID"即可。详情请参见[IP地址组](https://support.huaweicloud.com/usermanual-elb/elb_ug_ip_0000.html)。    |
| kubernetes.io/elb.acl-status | String | 为ELB设置IP地址黑名单或白名单时需填写，取值如下： - on或true：表示开启访问控制。  - off或false：表示不开启访问控制。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| kubernetes.io/elb.acl-type   | String | 为ELB设置IP地址黑名单或白名单时需填写，取值如下： - black：表示黑名单，所选IP地址组无法访问ELB地址。  - white：表示白名单，仅所选IP地址组可以访问ELB地址。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   
#### 验证配置
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧导航栏中选择"服务"，找到新建Service所在行，单击负载均衡名称跳转至ELB控制台查看。
3. 切换至"监听器"页签，查看新建端口对应的监听器配置是否开启。 
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002414596309.png "点击放大")
   
   
   
 
