配置BCI Pod所属安全组
概述
安全组是一种虚拟防火墙,具备状态检测和数据包过滤能力,用于在云端划分安全域。通过添加安全组规则,您可以控制安全组内BCI Pod(即BCI实例)的入流量和出流量。
安全组介绍
安全组是一个逻辑上的分组,由同一VPC内具有相同安全保护需求并相互信任的实例组成。通过添加安全组规则,安全组可以允许或拒绝安全组内ECI实例对公网或者私网的访问,以及管理是否放行来自公网或私网的访问请求。
安全组分为普通安全组和企业安全组。如果您对整体规模和运维效率有较高需求,建议您使用企业安全组。相比普通安全组,企业安全组大幅提升了组内支持容纳的实例数量,简化了规则配置方式。更多关于两种安全组的差异信息和具体操作,请参考安全组
注意:一个安全组可管理同一个VPC内多个BCI实例
指定安全组
在CCE集群中创建BCI Pod时,BCI Pod默认会加入到cce-virtual-kubelet组件安装时配置的安全组中。如果有特殊需求,您也可以为某些BCI Pod指定其他安全组。
操作前提
操作前,请先创建安全组,具体操作,请参见文档创建安全组。
创建成功的BCI Pod不支持修改所属安全组。如果想要变更安全组,需要重新创建BCI Pod。
BCI Pod配置
对于有特殊需求的某些BCI Pod,可以添加bci.virtual-kubelet.io/bci-security-group-id的Annotation来指定安全组。配置要求如下:
- 支持指定一个或多个安全组,最多可以指定5个安全组。
- 指定的安全组必须属于同一VPC。
- 指定的安全组的类型必须相同,即同为普通安全组或同为企业安全组。
Annotation 请添加在Pod的metadata下,例如:创建Deployment时,Annotation需添加在spec>template>metadata下。 仅支持在创建BCI Pod时添加BCI相关Annotation来生效BCI功能,已成功的BCI Pod只能重建来生效
配置如下:
apiVersion: v1
kind: Pod
metadata:
name: test
labels:
app: nginx
annotations:
"bci.virtual-kubelet.io/bci-security-group-id": "g-xxxx" #配置安全组
spec:
nodeSelector:
type: "virtual-kubelet"
tolerations:
- key: "virtual-kubelet.io/provider"
operator: "Equal"
value: "baidu"
effect: "NoSchedule"
containers:
- name: sun-nginx-host
imagePullPolicy: IfNotPresent
image: hub.baidubce.com/jpaas-public/nginx-alpine-go:latest
resources:
limits:
cpu: 0.5
memory: 1Gi
requests:
cpu: 0.5
memory: 1Gi
添加安全组规则
对于安全组内的BCI实例,您可以添加安全组规则来控制其出入流量。例如:
- 当BCI实例需要与所在安全组之外的网络进行通信时,您可以添加允许访问的安全组规则,实现网络互通。
- 在运行BCI实例的过程中,发现部分请求来源有恶意攻击行为时,您可以添加拒绝访问的安全组规则,实现网络隔离。
关于如何添加安全组规则,请参见编辑安全组