更新时间:2024-08-17 GMT+08:00

使用注解为Pod绑定安全组

使用场景

云原生网络2.0网络模式下,Pod使用的是VPC的弹性网卡/辅助弹性网卡,可以通过配置Pod的annotation为Pod配置安全组。

支持两种方式的安全组配置:

  • Pod的网卡使用annotation配置的安全组,对应annotation配置:yangtse.io/security-group-ids。
  • Pod的网卡在使用已有安全组的基础上,额外再增加annotation配置的安全组,对应annotation配置:yangtse.io/additional-security-group-ids。

通过注解(yangtse.io/security-group-ids)为Pod绑定的安全组优先级高于使用安全组策略(SecurityGroup)和集群容器网络配置(NetworkAttachmentDefinition)中的安全组。

前提条件

您已创建一个CCE Turbo集群,且集群版本满足以下要求:
  • v1.23集群:v1.23.16-r0及以上版本
  • v1.25集群:v1.25.11-r0及以上版本
  • v1.27集群:v1.27.8-r0及以上版本
  • v1.28集群:v1.28.6-r0及以上版本
  • v1.29集群:v1.29.2-r0及以上版本
  • v1.29以上版本集群

通过kubectl命令行设置

  • 创建一个配置安全组的工作负载,最终Pod关联安全组以annotation中的配置为准:

    如果Pod已绑定安全组,则会被覆盖。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
          annotations:
            yangtse.io/security-group-ids: *****  # 安全组ID,多个安全组以逗号分隔
        spec:
          containers:
            - name: container-0
              image: nginx:alpine
              resources:
                limits:
                  cpu: 100m
                  memory: 200Mi
                requests:
                  cpu: 100m
                  memory: 200Mi
          imagePullSecrets:
            - name: default-secret
  • 为工作负载额外增加一个安全组:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
          annotations:
            yangtse.io/additional-security-group-ids: *****  # 安全组ID,多个安全组以逗号分隔
        spec:
          containers:
            - name: container-0
              image: nginx:alpine
              resources:
                limits:
                  cpu: 100m
                  memory: 200Mi
                requests:
                  cpu: 100m
                  memory: 200Mi
          imagePullSecrets:
            - name: default-secret
表1 为Pod配置安全组的annotation说明

annotation

参数说明

取值范围

yangtse.io/security-group-ids

为Pod配置安全组,最终Pod的安全组将以该annotation中的配置为准。即如果Pod已有安全组,原安全组将会被覆盖。

安全组ID,数量不多于5个,多个安全组之间以英文逗号分隔。

yangtse.io/additional-security-group-ids

为Pod添加安全组配置,即在已有的配置上增加指定的安全组。

安全组ID,安全组ID数量和已有的安全组数量相加不多于5个,多个安全组之间以英文逗号分隔。