
# 使用注解为Pod绑定安全组
云原生网络2.0网络模式下，Pod使用的是VPC的弹性网卡/辅助弹性网卡，支持配置安全组的能力，您可以通过Pod添加annotation的方式为Pod绑定安全组。
支持以下场景的安全组配置：
| 场景                                       | annotation                               | 操作指导                                          |
|:---|:---|:---|
| Pod的网卡使用annotation配置的安全组                 | yangtse.io/security-group-ids            | [为工作负载配置安全组]   |
| Pod的网卡在使用已有安全组的基础上，额外再增加annotation配置的安全组 | yangtse.io/additional-security-group-ids | [为工作负载额外增加一个安全组] |
   
![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/caution_3.0-zh-cn.png)
为工作负载绑定安全组存在多种配置方式（如注解、安全组策略、节点池配置、容器网络配置），当您同时使用多种配置方式时，只生效优先级最高的配置方式，优先级详情请参见[不同方法配置工作负载安全组的对比](https://support.huaweicloud.com/usermanual-cce/cce_10_1078.html)。
#### 前提条件
您已创建一个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中的配置为准：
  ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
  如果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个安全组。 配置为空表示不使用annotation为Pod配置安全组。 |
| yangtse.io/additional-security-group-ids | 为Pod添加安全组配置，即在已有的配置上增加指定的安全组。                                 | 安全组ID，多个安全组之间以英文逗号分隔。为了更好的网络性能，建议增加的安全组数量和已有的安全组数量相加不超过5个。                                                  |
   
