为弹性网卡(ENI)配置多个安全组

在Terway网络模式下,Terway会使用弹性网卡ENI为容器分配IP地址。在Terway创建ENI资源时,您可以为ENI指定最多5个安全组,从而实现更灵活的Pod网络防火墙策略。本文介绍如何在Terway模式下,为ENI配置多安全组。

前提条件

目前仅v1.1.1及以上版本的Terway组件支持ENI多安全组功能。关于升级Terway组件的具体步骤,请参见管理组件

背景信息

默认情况下,Terway在创建ENI时会使用一个安全组。您可以指定多个安全组配置,Terway将使用您指定的安全组来创建ENI。

说明

修改安全组配置后,新配置仅对新建的ENI生效,已创建的ENI将使用原有配置。您可以通过轮转节点的方式,让配置生效。具体操作,请参见移除节点添加已有节点

为ENI配置多安全组

  1. 执行以下命令,修改Terway的配置ConfigMap。

    kubectl edit cm eni-config -n kube-system
  2. eni_conf中增加以下内容。

    "security_groups": ["sg-foo","sg-bar"]

    示例如下:

    "security_group": "sg-bp19k3sj8dk3dcd7****",
    "security_groups": ["sg-bp1b39sjf3v49c33****","sg-bp1bpdfg35tg****"],
    说明

    Terway将使用security_groupsecurity_groups中定义的所有安全组,请确保所有安全组在相同的VPC下,且安全组类型相同,并且总数量不超过5个。

  3. 执行以下命令,重建Terway Pod使安全组配置生效。

    kubectl delete pod -n kube-system -l app=terway-eniip

    验证配置

    1. 登录ECS控制台,在左侧导航栏选择实例与镜像 > 实例

    2. 在实例列表,单击目标实例。

    3. 在实例详情页面,单击弹性网卡页签。

      在弹性网卡页签中,您可以查看到辅助网卡使用的安全组配置为您配置文件中定义的多个安全组配置。ENI配置.png

创建集群时为ENI配置多安全组

您可通过API接口,在创建集群时为ENI配置多安全组,配置字段为SecurityGroupIDs,示例如下:

{
  "name": "your_cluster_name",
  "cluster_type": "ManagedKubernetes",
  "addons": [
    {
      "name": "terway-eniip",
      "config": "{\"IPVlan\":\"true\",\"NetworkPolicy\":\"false\",\"ENITrunking\":\"true\",\"SecurityGroupIDs\": \"[\\\"sg-foo\\\"]\" }"
    }
  ],
  ....
}