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