
# 为Service配置黑名单/白名单访问策略
#### 概述
使用Service服务时，您可以通过添加白名单和黑名单的方式控制访问负载均衡监听器的IP。
- 白名单：指定的IP允许访问，而其它IP拒绝访问。
- 黑名单：指定的IP拒绝访问，而其它IP允许访问。
 
#### 前置条件
已在ELB控制台创建IP地址组，详情请参见[创建IP地址组](https://support.huaweicloud.com/usermanual-elb/elb_ug_ip_0000.html)。
#### 配置黑名单/白名单访问策略
1. 登录[云容器实例 CCI2.0](https://console.huaweicloud.com/cci2.0/?#/cci/cluster/list)控制台。
2. 左侧导航栏中选择"服务管理"，在右侧页面单击"YAML创建"。
3. 导入或者添加Service yaml，配置参数见[表1]。
   
   Service文件格式说明
   - Service.yaml资源描述
     ```
     apiVersion: cci/v2
     kind: Service
     metadata:
       name: kubectl-test
       namespace: kubectl
       annotations:
         kubernetes.io/elb.class: elb
         kubernetes.io/elb.id: 1234567890 #关联的elb id，只支持独享型elb，不支持共享型elb。
         kubernetes.io/elb.acl-id: <your_acl_id>               # ELB的IP地址组ID     
         kubernetes.io/elb.acl-type: 'white'                   # 白名单控制
     spec:
       selector:
         app: kubectl-test
       ports:
         - name: service-0
           targetPort: 80   #容器开放的端口。
           port: 12222      #访问端口。
           protocol: TCP    #访问负载的协议。
       type: LoadBalancer
     ```
     
   
   - Service.json资源描述
     ```
     {
     "apiVersion": "cci/v2",
     "kind": "Service",
     "metadata": {
     "name": "kubectl-test",
     "namespace": "kubectl",
     "annotations": {
                             "kubernetes.io/elb.class": "elb"
     "kubernetes.io/elb.id": "1234567890"  #关联的elb id，只支持独享型elb，不支持共享型elb。
                             "kubernetes.io/elb.acl-id": "<your_acl_id>"             # ELB的IP地址组ID     
                             "kubernetes.io/elb.acl-type": "white"                   # 白名单控制
     }
     },
     "spec": {
     "selector": {
     "app": "kubectl-test"
     },
     "ports": [
     {
     "name": "service-0",
     "targetPort": 80,     #容器开放的端口。
     "port": 12222,        #访问端口。
     "protocol": "TCP",    #访问负载的协议。
     "type": "LoadBalancer"
     }
     ]
     }
     }
     ```
     
   
   
   
   
4. 单击"确定"，创建Service。查看服务管理页面，根据访问地址IP和端口映射中的访问端口\[IP地址:访问端口\]，即可访问负载。 
   - 如果配置策略为白名单，仅白名单中IP地址可以访问，其余IP地址拒绝访问。
   
   - 如果配置策略为黑名单，则黑名单中IP地址拒绝访问，其余IP地址均可访问。
   
   
   
   
 
 表1ELB访问控制注解 
| 参数                         | 类型     | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
|:---|:---|:---|
| kubernetes.io/elb.acl-id   | String | - 不填写该参数时：表示CCI不对ELB侧访问控制进行修改。  - 参数值填写为ELB的IP地址组ID时：表示开启访问控制，为ELB设置IP地址黑名单或白名单。  - 参数可以填写最多5个IP地址组ID，用","隔开。  - IP地址组ID获取方法： 登录控制台后，单击顶部菜单右侧的"网络 \> 弹性负载均衡ELB"，在网络控制台上单击"弹性负载均衡 \> IP地址组"，复制目标IP地址组的"ID"即可。详情请参见[IP地址组](https://support.huaweicloud.com/usermanual-elb/elb_ug_ip_0000.html)。    |
| kubernetes.io/elb.acl-type | String | 为ELB设置IP地址黑名单或白名单时需填写，取值如下： - black：表示黑名单，仅所选IP地址组无法访问ELB地址。  - white：表示白名单，仅所选IP地址组可以访问ELB地址。   如果填写了kubernetes.io/elb.acl-id，且kubernetes.io/elb.acl-type字段没有填写时，默认策略为白名单访问。                                                                                                                                                                                                                                                             |
   
