kind: CSIDriver
metadata:
name: csi.mydriver.company.org
labels:
security.openshift.io/csi-ephemeral-volume-profile: restricted (1)
容器存储接口 (CSI) 内联临时卷允许您定义一个Pod
规范,该规范在部署Pod时创建内联临时卷,并在销毁Pod时删除它们。
此功能仅适用于受支持的容器存储接口 (CSI) 驱动程序
共享资源CSI驱动程序
Azure File CSI驱动程序
Secrets Store CSI驱动程序
传统上,由容器存储接口 (CSI) 驱动程序支持的卷只能与PersistentVolume
和PersistentVolumeClaim
对象组合一起使用。
此功能允许您直接在Pod
规范中指定CSI卷,而不是在PersistentVolume
对象中指定。内联卷是临时的,不会跨Pod重启持久化。
共享资源CSI驱动程序功能现在在Red Hat OpenShift 1.1构建中普遍可用。此功能现在在OpenShift Container Platform中已弃用。要使用此功能,请确保您使用的是Red Hat OpenShift 1.1构建或更高版本。 |
默认情况下,OpenShift Container Platform支持具有以下限制的CSI内联临时卷
仅支持CSI驱动程序。不支持树内和FlexVolumes。
共享资源CSI驱动程序支持仅使用内联临时卷作为OpenShift Container Platform中的技术预览功能来访问跨多个命名空间的Secrets
或ConfigMaps
。
社区或存储供应商提供支持这些卷的其他CSI驱动程序。请遵循CSI驱动程序提供商提供的安装说明。
CSI驱动程序可能未实现内联卷功能,包括Ephemeral
容量。有关详细信息,请参阅CSI驱动程序文档。
容器存储接口 (CSI) 卷准入插件允许您限制在Pod准入时使用能够预配CSI临时卷的单个CSI驱动程序。管理员可以添加csi-ephemeral-volume-profile
标签,然后准入插件检查此标签并将其用于强制执行、警告和审计决策。
要使用CSI卷准入插件,管理员需要将security.openshift.io/csi-ephemeral-volume-profile
标签添加到CSIDriver
对象,该对象声明当CSI驱动程序用于提供CSI临时卷时的有效Pod安全配置文件,如下例所示
kind: CSIDriver
metadata:
name: csi.mydriver.company.org
labels:
security.openshift.io/csi-ephemeral-volume-profile: restricted (1)
1 | 设置csi-ephemeral-volume-profile 标签为“restricted”的CSI驱动程序对象YAML文件 |
此“有效配置文件”表示当Pod的命名空间受Pod安全标准管理时,Pod可以使用CSI驱动程序来挂载CSI临时卷。
创建Pod时,CSI卷准入插件会检查Pod卷;使用CSI卷的现有Pod不受影响。如果Pod使用容器存储接口 (CSI) 卷,则插件会查找CSIDriver
对象并检查csi-ephemeral-volume-profile
标签,然后将其值用于强制执行、警告和审计决策。
当CSI驱动程序具有csi-ephemeral-volume-profile
标签时,使用CSI驱动程序挂载CSI临时卷的Pod必须在强制执行权限相同或更大的Pod安全标准的命名空间中运行。如果命名空间强制执行更严格的标准,则CSI卷准入插件会拒绝准入。下表描述了针对给定标签值的不同Pod安全配置文件的强制执行行为。
Pod安全配置文件 | 驱动程序标签:restricted | 驱动程序标签:baseline | 驱动程序标签:privileged |
---|---|---|---|
Restricted |
允许 |
拒绝 |
拒绝 |
Baseline |
允许 |
允许 |
拒绝 |
Privileged |
允许 |
允许 |
允许 |
如果CSI驱动程序的有效配置文件比Pod命名空间的Pod安全警告配置文件更宽松,则CSI卷准入插件会发出警告。下表显示了针对给定标签值的不同Pod安全配置文件何时会发出警告。
Pod安全配置文件 | 驱动程序标签:restricted | 驱动程序标签:baseline | 驱动程序标签:privileged |
---|---|---|---|
Restricted |
无警告 |
警告 |
警告 |
Baseline |
无警告 |
无警告 |
警告 |
Privileged |
无警告 |
无警告 |
无警告 |
如果 CSI 驱动程序的有效配置文件比 Pod 命名空间的 Pod 安全审计配置文件更宽松,则 CSI 卷准入插件可以将审计注释应用于 Pod。下表显示了针对给定标签值的不同的 Pod 安全配置文件应用的审计注释。
Pod安全配置文件 | 驱动程序标签:restricted | 驱动程序标签:baseline | 驱动程序标签:privileged |
---|---|---|---|
Restricted |
无审计 |
审计 |
审计 |
Baseline |
无审计 |
无审计 |
审计 |
Privileged |
无审计 |
无审计 |
无审计 |
如果 CSI 短暂卷引用的 CSI 驱动程序不具有csi-ephemeral-volume-profile
标签,则 CSI 卷准入插件认为该驱动程序具有特权配置文件,用于执行、警告和审计行为。同样,如果 Pod 的命名空间未设置 Pod 安全准入标签,则准入插件假定允许使用受限配置文件进行执行、警告和审计决策。因此,如果未设置任何标签,则默认情况下,使用该 CSI 驱动程序的 CSI 短暂卷只能在特权命名空间中使用。
与 OpenShift Container Platform 一起提供的并支持短暂卷的 CSI 驱动程序具有csi-ephemeral-volume-profile
标签的合理默认设置。
共享资源 CSI 驱动程序:受限
Azure 文件 CSI 驱动程序:特权
管理员可以根据需要更改标签的默认值。
您可以在 OpenShift Container Platform 中的Pod
规范中嵌入 CSI 内联短暂卷。在运行时,嵌套的内联卷遵循其关联 Pod 的短暂生命周期,以便 CSI 驱动程序在创建和销毁 Pod 时处理卷操作的所有阶段。
创建Pod
对象定义并将其保存到文件中。
将 CSI 内联短暂卷嵌入到文件中。
kind: Pod
apiVersion: v1
metadata:
name: my-csi-app
spec:
containers:
- name: my-frontend
image: busybox
volumeMounts:
- mountPath: "/data"
name: my-csi-inline-vol
command: [ "sleep", "1000000" ]
volumes: (1)
- name: my-csi-inline-vol
csi:
driver: inline.storage.kubernetes.io
volumeAttributes:
foo: bar
1 | Pod 使用的卷的名称。 |
创建您在上一步中保存的对象定义文件。
$ oc create -f my-csi-app.yaml