配置ECI Pod所属安全组

安全组是一种虚拟防火墙,具备状态检测和数据包过滤能力,用于在云端划分安全域。通过添加安全组规则,您可以控制安全组内ECI Pod(即ECI实例)的入流量和出流量。

安全组介绍

安全组是一个逻辑上的分组,由同一VPC内具有相同安全保护需求并相互信任的实例组成。通过添加安全组规则,安全组可以允许或拒绝安全组内ECI实例对公网或者私网的访问,以及管理是否放行来自公网或私网的访问请求。更多信息,请参见安全组概述

重要
  • 一个安全组可以管理同一个VPC内的多个ECI实例。

  • 一个ECI实例必须属于一个安全组。

安全组分为普通安全组和企业安全组。如果您对整体规模和运维效率有较高需求,建议您使用企业安全组。相比普通安全组,企业安全组大幅提升了组内支持容纳的实例数量,简化了规则配置方式。更多关于两种安全组的差异信息,请参见普通安全组与企业级安全组

指定安全组

在ACK集群中创建ECI Pod时,Pod默认会加入到eci-profile配置的安全组中。如果有特殊需求,您也可以为某些ECI Pod指定其他安全组。操作前,请先创建安全组,具体操作,请参见创建安全组

重要

创建成功的ECI Pod不支持修改所属安全组。如果想要变更安全组,需要重新创建ECI Pod。

集群配置

eci-profile配置文件中包含了安全组配置信息。您可以通过kubectl edit命令进行修改。

kubectl edit configmap eci-profile -n kube-system
说明

集群中的VK(ACK Virtual Node组件)版本为v2.0.0.90-15deb126e-aliyun及以上时,支持修改eci-profile实现配置热更新。如果您的VK版本低于该版本,建议您升级VK。

修改data中的securityGroupId字段即可修改安全组配置,示例如下:

data:
  enableClusterIp: "true"
  enableHybridMode: "false"
  enablePrivateZone: "false"
  resourceGroupId: ""
  securityGroupId: sg-2ze0b9o8pjjzts4h**** # 指定安全组ID,仅支持单个
  selectors: ""
  vSwitchIds: vsw-2zeet2ksvw7f14ryz****,vsw-2ze94pjtfuj9vaymf****  
  vpcId: vpc-2zeghwzptn5zii0w7****

ECI Pod配置

对于有特殊需求的某些ECI Pod,可以添加k8s.aliyun.com/eci-security-group的Annotation来指定安全组。配置要求如下:

  • 支持指定一个或多个安全组,最多可以指定5个安全组。

  • 指定的安全组必须属于同一VPC。

  • 指定的安全组的类型必须相同。

重要
  • Annotation请添加在Pod的metadata下,例如:创建Deployment时,Annotation需添加在spec>template>metadata下。

  • 仅支持在创建ECI Pod时添加ECI相关Annotation来生效ECI功能,更新ECI Pod时添加或者修改ECI相关Annotation均不会生效。

配置示例如下:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      name: nginx-test
      labels:
        app: nginx
        alibabacloud.com/eci: "true" 
      annotations:
        k8s.aliyun.com/eci-security-group: "sg-bp1dktddjsg5nktv****,sg-2ze0b9o8pjjzts4h****"      #指定安全组
    spec:
      containers:
      - name: nginx
        image: registry.cn-shanghai.aliyuncs.com/eci_open/nginx:1.14.2
        ports:
        - containerPort: 80

添加安全组规则

对于安全组内的ECI实例,您可以添加安全组规则来控制其出入流量。例如:

  • 当ECI实例需要与所在安全组之外的网络进行通信时,您可以添加允许访问的安全组规则,实现网络互通。

  • 在运行ECI实例的过程中,发现部分请求来源有恶意攻击行为时,您可以添加拒绝访问的安全组规则,实现网络隔离。

关于如何添加安全组规则,请参见添加安全组规则