使用注解为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。
前提条件
- 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
annotation |
参数说明 |
取值范围 |
---|---|---|
yangtse.io/security-group-ids |
为Pod配置安全组,最终Pod的安全组将以该annotation中的配置为准。即如果Pod已有安全组,原安全组将会被覆盖。 |
安全组ID,数量不多于5个,多个安全组之间以英文逗号分隔。 |
yangtse.io/additional-security-group-ids |
为Pod添加安全组配置,即在已有的配置上增加指定的安全组。 |
安全组ID,安全组ID数量和已有的安全组数量相加不多于5个,多个安全组之间以英文逗号分隔。 |