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

Terway网络模式下,Pod通过弹性网卡ENI来分配IP地址。默认情况下,Terway在创建ENI时会使用一个安全组。您也可以指定多个安全组配置,从而对 Pod 的网络流量进行精细化的访问控制。

使用说明

  • 至少填写一个安全组,指定多个安全组时请确保安全组类型一致(普通或企业)。安全组的VPC需与集群VPC保持一致。

    Terway 不会预先校验安全组配置的有效性。配置错误时,创建新网卡将提示错误。
  • Terway 版本不同,功能支持情况不同:

    如需升级Terway,请参见管理组件
    • v1.1.1及以上:开始支持多安全组功能,可通过kubectl至多指定 5 个安全组。

    • v1.13.6及以上:可通过kubectl至多指定 10 个安全组。

    • v1.15.0及以上:支持通过控制台配置多安全组功能。

  • 此配置仅对新创建的 Pod(及其弹性网卡ENI)生效,不改变已有 Pod 的安全组。如需让存量Pod应用新的安全组配置,可通过轮转节点(先移除节点,再添加已有节点)来实现。

在已有集群中为ENI配置多安全组

请根据Terway版本,选择通过控制台或kubectl来完成操作。

控制台

为确保配置持久生效,请始终通过下文的方式配置Terway组件。 任何通过其他方法应用的变更,都将在Terway下一次重新部署(如升级或重启)时被覆盖。

  1. 登录容器服务管理控制台,在左侧导航栏单击集群列表

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,单击组件管理

  3. 组件管理页面,单击网络页签,定位Terway组件,按照页面提示升级组件至最新版本(如提示升级),然后单击配置,配置组件。

    除此配置方式之外,通过其他方式对已部署组件所做的修改,将在组件重新部署后被覆盖。

    image

  4. terway-eniip 参数配置页面的SecurityGroupIDs区域,填写需要设置安全组,其他参数可保持默认,并完成配置的提交。

    image

kubectl

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

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

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

    示例如下,Terway将使用security_groupsecurity_groups中定义的所有安全组。

    "security_group": null,
    "security_groups": ["sg-bp1b39sjf3v49c33****","sg-bp1bpdfg35tg****"],
  3. 执行以下命令,重建Terway Pod使安全组配置生效。

     kubectl rollout restart -n kube-system daemonset.apps/terway-eniip
  4. 验证配置。

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

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

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

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

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

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

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