5.2. CSI 인라인 임시 볼륨
CSI(Container Storage Interface) 인라인 임시 볼륨을 사용하여 Pod
가 배포되고 Pod가 제거될 때 인라인 임시 볼륨을 생성하는 Pod 사양을 정의할 수 있습니다.
이 기능은 지원되는 CSI(Container Storage Interface) 드라이버인 * 공유 리소스 CSI 드라이버 * Azure File 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 드라이버는 여러 네임스페이스에서 기술 프리뷰 기능으로
시크릿
또는ConfigMap에
액세스하기 위해서만 인라인 임시 볼륨 사용을 지원합니다. - 커뮤니티 또는 스토리지 벤더는 이러한 볼륨을 지원하는 다른 CSI 드라이버를 제공합니다. CSI 드라이버 공급자가 제공하는 설치 지침을 따르십시오.
CSI 드라이버는 임시
용량을 포함하여 인라인 볼륨 기능을 구현하지 못할 수 있습니다. 자세한 내용은 CSI 드라이버 설명서를 참조하십시오.
공유 리소스 CSI 드라이버는 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
5.2.2. CSI 볼륨 승인 플러그인
CSI(Container Storage Interface) 볼륨 승인 플러그인을 사용하면 Pod 승인에서 CSI 임시 볼륨을 프로비저닝할 수 있는 개별 CSI 드라이버 사용을 제한할 수 있습니다. 관리자는 csi-ephemeral-volume-profile
라벨을 추가할 수 있으며 이 레이블은 Admission 플러그인에서 검사하고 시행, 경고 및 감사 결정에 사용됩니다.
5.2.2.1. 개요
CSI Volume 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 파일 "restricted"로 설정
이 "효력 프로파일"은 Pod의 네임스페이스가 Pod 보안 표준에 의해 관리될 때 Pod에서 CSI 임시 볼륨을 마운트할 수 있음을 전달합니다.
CSI Volume Admission 플러그인은 Pod가 생성될 때 Pod 볼륨을 검사합니다. CSI 볼륨을 사용하는 기존 Pod는 영향을 받지 않습니다. Pod에서 CSI(컨테이너 스토리지 인터페이스) 볼륨을 사용하는 경우 플러그인은 CSIDriver
오브젝트를 조회하고 csi-ephemeral-volume-profile
라벨을 검사한 다음 시행, 경고 및 감사 결정에 레이블 값을 사용합니다.
5.2.2.2. Pod 보안 프로필 적용
CSI 드라이버에 csi-ephemeral-volume-profile
레이블이 있는 경우 CSI 드라이버를 사용하여 CSI 임시 볼륨을 마운트하는 Pod는 Pod 보안 표준을 동일하거나 더 큰 권한을 적용하는 네임스페이스에서 실행해야 합니다. 네임스페이스가 보다 제한적인 표준을 적용하면 CSI Volume Admission 플러그인이 승인을 거부합니다. 다음 표에서는 지정된 라벨 값에 대해 다양한 Pod 보안 프로필에 대한 적용 동작을 설명합니다.
Pod 보안 프로필 | 드라이버 라벨: restricted | 드라이버 라벨: 기준 | 드라이버 라벨: privileged |
---|---|---|---|
restricted |
Allowed |
Denied |
Denied |
기준 |
Allowed |
Allowed |
Denied |
privileged |
Allowed |
Allowed |
Allowed |
5.2.2.3. Pod 보안 프로필 경고
CSI Volume Admission 플러그인은 CSI 드라이버의 유효 프로파일이 Pod 네임스페이스의 Pod 보안 경고 프로필보다 허용적인 경우 경고할 수 있습니다. 다음 표는 지정된 라벨 값에 대해 다양한 Pod 보안 프로파일에 대한 경고가 발생하는 경우를 보여줍니다.
Pod 보안 프로필 | 드라이버 라벨: restricted | 드라이버 라벨: 기준 | 드라이버 라벨: privileged |
---|---|---|---|
restricted |
No warning |
Warning |
Warning |
기준 |
No warning |
No warning |
Warning |
privileged |
No warning |
No warning |
No warning |
5.2.2.4. Pod 보안 프로필 감사
CSI 볼륨 Admission 플러그인은 CSI 드라이버의 유효 프로파일이 Pod 네임스페이스의 Pod 보안 감사 프로필보다 허용적인 경우 감사 주석을 Pod에 적용할 수 있습니다. 다음 표는 지정된 라벨 값에 대해 다른 Pod 보안 프로필에 적용되는 감사 주석을 보여줍니다.
Pod 보안 프로필 | 드라이버 라벨: restricted | 드라이버 라벨: 기준 | 드라이버 라벨: privileged |
---|---|---|---|
restricted |
No audit |
Audit |
Audit |
기준 |
No audit |
No audit |
Audit |
privileged |
No audit |
No audit |
No audit |
5.2.2.5. CSI Volume Admission 플러그인의 기본 동작
CSI 임시 볼륨에서 참조된 CSI 드라이버에 csi-ephemeral-volume-profile
레이블이 없는 경우 CSI Volume Admission 플러그인은 드라이버에 시행, 경고, 감사 동작을 위한 권한 있는 프로필이 있는 것으로 간주합니다. 마찬가지로 Pod의 네임스페이스에 Pod 보안 승인 라벨이 설정되지 않은 경우 Admission 플러그인은 적용, 경고 및 감사 결정에 제한된 프로필이 허용되는 것으로 가정합니다. 따라서 라벨이 설정되지 않은 경우 해당 CSI 드라이버를 사용하는 CSI 임시 볼륨은 기본적으로 권한 있는 네임스페이스에서만 사용할 수 있습니다.
OpenShift Container Platform과 함께 제공되며 임시 볼륨을 지원하는 CSI 드라이버는 csi-ephemeral-volume-profile
레이블에 대해 적절한 기본 설정이 있습니다.
- 공유 리소스 CSI 드라이버: restricted
- Azure File CSI 드라이버: 권한
원하는 경우 관리자는 레이블의 기본값을 변경할 수 있습니다.
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