文档首页/ 云容器引擎 CCE/ 用户指南/ 网络/ 服务(Service)/ 负载均衡(LoadBalancer)/ 为负载均衡类型的Service配置黑名单/白名单访问策略
更新时间:2024-11-12 GMT+08:00

为负载均衡类型的Service配置黑名单/白名单访问策略

使用负载均衡类型的服务时,您可以通过添加白名单和黑名单的方式控制访问负载均衡监听器的IP。

  • 白名单:指定的IP允许访问,而其它IP不能访问。
  • 黑名单:指定的IP不能访问,而其它IP允许访问。

配置黑名单/白名单访问策略后,如果您在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地址组

通过控制台设置

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 选择左侧导航栏的“服务”,在右侧选择“服务”页签,单击右上角“创建服务”
  3. 设置Service参数。

    • Service名称:自定义Service名称,例如service-acl。
    • 访问类型:选择“负载均衡”类型。
    • 服务亲和:您可以根据需求选择“集群级别”或“节点级别”。二者差异说明请参见服务亲和(externalTrafficPolicy)
    • 选择器:添加标签,Service根据标签选择Pod,填写后单击“确认添加”。也可以引用已有工作负载的标签,单击“引用负载标签”,在弹出的窗口中选择负载,然后单击“确定”
    • 负载均衡器:

      选择对接的ELB实例,仅支持与集群在同一个VPC下的ELB实例。如果没有可选的ELB实例,请单击“创建负载均衡器”跳转到ELB控制台创建。或者选择“自动创建”一个ELB实例,配置参数请参见表1

    • 健康检查:默认为“全局检查”,您可根据需求进行设置。
    • 端口配置:
      • 协议:请根据业务的协议类型选择。
      • 服务端口:Service使用的端口,端口范围为1-65535。
      • 容器端口:工作负载程序实际监听的端口,需用户确定。例如nginx默认使用80端口。
    • 访问控制:
      • 继承ELB已有配置:CCE不对ELB侧已有的访问控制进行修改。
      • 允许所有IP访问:不设置访问控制。
      • 白名单:仅所选IP地址组可以访问ELB地址。
      • 黑名单:所选IP地址组无法访问ELB地址。

  4. 配置完成后,单击“确定”

通过kubectl命令行设置

以使用已有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
表1 ELB访问控制注解

参数

类型

描述

kubernetes.io/elb.acl-id

String

  • 不填写该参数时:表示CCE不对ELB侧访问控制进行修改。
  • 参数值填写为空值时:表示允许所有IP访问。
  • 参数值填写为ELB的IP地址组ID时:表示开启访问控制,为ELB设置IP地址黑名单或白名单。此时需同时填写kubernetes.io/elb.acl-status和kubernetes.io/elb.acl-type参数。

    获取方法:

    登录控制台后,单击顶部菜单右侧的“网络 > 弹性负载均衡ELB”,在网络控制台中单击“弹性负载均衡 > IP地址组”,复制目标IP地址组的“ID”即可。详情请参见IP地址组

kubernetes.io/elb.acl-status

String

为ELB设置IP地址黑名单或白名单时需填写,取值如下:

  • on:表示开启访问控制。
  • off:表示不开启访问控制。

kubernetes.io/elb.acl-type

String

为ELB设置IP地址黑名单或白名单时需填写,取值如下:

  • black:表示黑名单,所选IP地址组无法访问ELB地址。
  • white:表示白名单,仅所选IP地址组可以访问ELB地址。