5.2. CSI 인라인 임시 볼륨
CSI(Container Storage Interface) 인라인 임시 볼륨을 사용하여 Pod
가 배포되고 Pod가 제거될 때 인라인 임시 볼륨을 생성하는 Pod 사양을 정의할 수 있습니다.
이 기능은 지원되는 CSI(Container Storage Interface) 드라이버에서만 사용할 수 있습니다.
- 공유 리소스 CSI 드라이버
- Azure File CSI 드라이버
- 보안 저장소 CSI 드라이버
5.2.1. CSI 인라인 임시 볼륨 개요
일반적으로 CSI(Container Storage Interface) 드라이버에서 지원하는 볼륨은 PersistentVolume
및 PersistentVolumeClaim
오브젝트 조합에서만 사용할 수 있습니다.
이 기능을 사용하면 PersistentVolume
오브젝트가 아닌 Pod
사양에 직접 CSI 볼륨을 지정할 수 있습니다. 인라인 볼륨은 임시 볼륨이며 Pod를 다시 시작하면 유지되지 않습니다.
5.2.1.1. 지원 제한
기본적으로 OpenShift Container Platform에서는 다음과 같은 제한이 있는 CSI 인라인 임시 볼륨을 지원합니다.
- CSI 드라이버에서만 지원을 사용할 수 있습니다. In-tree 및 FlexVolumes는 지원되지 않습니다.
-
공유 리소스 CSI 드라이버는 인라인 임시 볼륨 사용을 기술 프리뷰 기능으로 여러 네임스페이스에서
Secrets
또는ConfigMap
에 액세스하는 데만 지원합니다. - 커뮤니티 또는 스토리지 벤더는 이러한 볼륨을 지원하는 다른 CSI 드라이버를 제공합니다. CSI 드라이버 공급자가 제공하는 설치 지침을 따르십시오.
CSI 드라이버는 임시
용량을 포함하여 인라인 볼륨 기능을 구현하지 못할 수 있습니다. 자세한 내용은 CSI 드라이버 설명서를 참조하십시오.
공유 리소스 CSI 드라이버는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
5.2.2. CSI 볼륨 Admission 플러그인
CSI(Container Storage Interface) 볼륨 Admission 플러그인을 사용하면 Pod 승인 시 CSI 볼륨을 프로비저닝할 수 있는 개별 CSI 드라이버 사용을 제한할 수 있습니다. 관리자는 csi-ephemeral-volume-profile
레이블을 추가할 수 있으며 이 레이블은 Admission 플러그인에서 검사하고 시행, 경고 및 감사 결정에 사용됩니다.
5.2.2.1. 개요
관리자는 CSI 볼륨 Admission 플러그인을 사용하기 위해 다음 예와 같이 CSI 드라이버의 유효 Pod 보안 프로필을 선언하는 CSIDriver
오브젝트에 security.openshift.io/csi-ephemeral-volume-profile
라벨을 추가합니다.
kind: CSIDriver
metadata:
name: csi.mydriver.company.org
labels:
security.openshift.io/csi-ephemeral-volume-profile: restricted 1
- 1
csi-ephemeral-volume-profile
라벨을 "제한된"으로 설정된 CSI 드라이버 오브젝트 YAML 파일
이 "효율 프로파일"은 Pod의 네임스페이스가 Pod 보안 표준에 의해 관리될 때 Pod에서 CSI 드라이버를 사용하여 CSI 임시 볼륨을 마운트할 수 있다고 통신합니다.
CSI 볼륨 Admission 플러그인은 Pod가 생성되면 Pod 볼륨을 검사합니다. CSI 볼륨을 사용하는 기존 Pod는 영향을 받지 않습니다. Pod에서 CSI(Container Storage Interface) 볼륨을 사용하는 경우 플러그인은 CSIDriver
오브젝트를 조회하고 csi-ephemeral-volume-profile
라벨을 검사한 다음 적용, 경고 및 감사 결정에 레이블의 값을 사용합니다.
5.2.2.2. Pod 보안 프로필 적용
CSI 드라이버에 csi-ephemeral-volume-profile
레이블이 있는 경우 CSI 드라이버를 사용하여 CSI 드라이버를 사용하여 CSI 임시 볼륨을 마운트하는 Pod는 Pod 보안 표준을 동일한 권한 이상으로 적용하는 네임스페이스에서 실행해야 합니다. 네임스페이스가 보다 제한적인 표준을 적용하는 경우 CSI 볼륨 Admission 플러그인에서 허용을 거부합니다. 다음 표에서는 지정된 라벨 값에 대한 다양한 Pod 보안 프로필에 대한 적용 동작을 설명합니다.
Pod 보안 프로필 | 드라이버 레이블: restricted | 드라이버 레이블: baseline | 드라이버 레이블: privileged |
---|---|---|---|
restricted |
Allowed |
Denied |
Denied |
기준 |
Allowed |
Allowed |
Denied |
privileged |
Allowed |
Allowed |
Allowed |
5.2.2.3. Pod 보안 프로필 경고
CSI 볼륨 Admission 플러그인은 CSI 드라이버의 유효 프로필이 Pod 네임스페이스에 대한 Pod 보안 경고 프로필보다 더 허용되는 경우 경고할 수 있습니다. 다음 표는 지정된 라벨 값에 대해 다양한 Pod 보안 프로필에 대한 경고가 발생하는 경우를 보여줍니다.
Pod 보안 프로필 | 드라이버 레이블: restricted | 드라이버 레이블: baseline | 드라이버 레이블: privileged |
---|---|---|---|
restricted |
No warning |
Warning |
Warning |
기준 |
No warning |
No warning |
Warning |
privileged |
No warning |
No warning |
No warning |
5.2.2.4. Pod 보안 프로필 감사
CSI 드라이버의 유효 프로필이 Pod 네임스페이스의 Pod 보안 감사 프로필보다 더 많은 경우 CSI 볼륨 Admission 플러그인은 Pod에 감사 주석을 적용할 수 있습니다. 다음 표는 지정된 라벨 값에 대해 다양한 Pod 보안 프로필에 적용되는 audit 주석을 보여줍니다.
Pod 보안 프로필 | 드라이버 레이블: restricted | 드라이버 레이블: baseline | 드라이버 레이블: privileged |
---|---|---|---|
restricted |
No audit |
Audit |
Audit |
기준 |
No audit |
No audit |
Audit |
privileged |
No audit |
No audit |
No audit |
5.2.2.5. CSI 볼륨 Admission 플러그인의 기본 동작
CSI 임시 볼륨에 대해 참조된 CSI 드라이버에 csi-ephemeral-volume-profile
레이블이 없는 경우 CSI 볼륨 Admission 플러그인은 드라이버에 적용, 경고 및 감사 동작을 위한 권한 있는 프로필이 있는 것으로 간주합니다. 마찬가지로 Pod의 네임스페이스에 Pod 보안 승인 라벨이 설정되지 않은 경우 Admission 플러그인은 restricted 프로필이 적용, 경고 및 감사 결정에 허용되는 것으로 간주합니다. 따라서 라벨이 설정되지 않은 경우 기본적으로 해당 CSI 드라이버를 사용하는 CSI 임시 볼륨은 권한 있는 네임스페이스에서만 사용할 수 있습니다.
OpenShift Container Platform과 함께 제공되고 임시 볼륨을 지원하는 CSI 드라이버에는 csi-ephemeral-volume-profile
라벨에 적절한 기본값이 설정되어 있습니다.
- 공유 리소스 CSI 드라이버: restricted
- Azure File CSI 드라이버: privileged
필요한 경우 관리자는 레이블의 기본값을 변경할 수 있습니다.
5.2.3. Pod 사양에 CSI 인라인 임시 볼륨 포함
OpenShift Container Platform의 Pod
사양에 CSI 인라인 임시 볼륨을 포함할 수 있습니다. 런타임 시 중첩된 인라인 볼륨은 관련 Pod의 임시 라이프사이클을 따라 CSI 드라이버가 Pod를 생성 및 삭제할 때 볼륨 작업의 모든 단계를 처리합니다.
절차
-
Pod
오브젝트 정의를 생성하여 파일에 저장합니다. 파일에 CSI 인라인 임시 볼륨을 삽입합니다.
my-csi-app.yaml
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
- 풀에서 사용되는 볼륨의 이름입니다.
이전 단계에서 저장한 오브젝트 정의 파일을 생성합니다.
$ oc create -f my-csi-app.yaml