5.5. GCP PD CSI Driver Operator
5.5.1. 개요
OpenShift Dedicated는 GCP(Google Cloud Platform) PD(영구 디스크) 스토리지용 CSI(Container Storage Interface) 드라이버를 사용하여 PV(영구 볼륨)를 프로비저닝할 수 있습니다.
CSI(Container Storage Interface) Operator 및 드라이버를 사용할 때는 영구 스토리지 및 CSI 볼륨 구성에 대해 숙지하는 것이 좋습니다.
GCP PD 스토리지 자산에 마운트되는 CSI(영구 볼륨)를 생성하기 위해 OpenShift Dedicated는 openshift-cluster-csi-drivers
네임스페이스에 기본적으로 GCP PD CSI Driver Operator 및 GCP PD CSI 드라이버를 설치합니다.
- GCP PD CSI Driver Operator: 기본적으로 Operator는 PVC를 생성하는 데 사용할 수 있는 스토리지 클래스를 제공합니다. 필요한 경우 이 기본 스토리지 클래스를 비활성화할 수 있습니다( 기본 스토리지 클래스 관리참조). GCE 영구 디스크를 사용하는 영구 스토리지에 설명된 대로 GCP PD 스토리지 클래스를 생성하는 옵션도 있습니다.
- GCP PD 드라이버: 이 드라이버를 사용하면 GCP PD PV를 생성 및 마운트할 수 있습니다.
5.5.2. CSI 정보
스토리지 벤더는 일반적으로 Kubernetes의 일부로 스토리지 드라이버를 제공합니다. CSI(Container Storage Interface) 구현을 통해 타사 공급자는 코어 Kubernetes 코드를 변경하지 않고도 표준 인터페이스를 사용하여 스토리지 플러그인을 제공할 수 있습니다.
CSI Operator는 in-tree 볼륨 플러그인에서 사용할 수 없는 볼륨 스냅샷과 같은 OpenShift Dedicated 사용자 스토리지 옵션을 제공합니다.
5.5.3. GCP PD CSI 드라이버 스토리지 클래스 매개변수
GCP(Google Cloud Platform) PD(영구 디스크) CSI(Container Storage Interface) 드라이버는 CSI 외부 프로비저너
사이드카를 컨트롤러로 사용합니다. 이 컨테이너는 CSI 드라이버와 함께 배포된 별도의 Helper 컨테이너입니다. 사이드카는 CreateVolume
작업을 트리거하여 PV(영구 볼륨)를 관리합니다.
GCP PD CSI 드라이버는 csi.storage.k8s.io/fstype
매개변수 키를 사용하여 동적 프로비저닝을 지원합니다. 다음 표에서는 OpenShift Dedicated에서 지원하는 모든 GCP PD CSI 스토리지 클래스 매개변수를 설명합니다.
매개변수 | 값 | 기본 | 설명 |
---|---|---|---|
|
|
| 표준 PV 또는 솔리드 스테이트 드라이브 PV 중 하나를 선택할 수 있습니다. 드라이버는 값을 확인하지 않으므로 가능한 모든 값이 허용됩니다. |
|
|
| 존 또는 지역 PV 중 하나를 선택할 수 있습니다. |
| 새 디스크를 암호화하는 데 사용할 키가 정규화된 리소스 식별자입니다. | 빈 문자열 | CMEK(고객 관리 암호화 키)를 사용하여 새 디스크를 암호화합니다. |
5.5.4. 사용자 정의 암호화 영구 볼륨 생성
PersistentVolumeClaim
오브젝트를 생성할 때 OpenShift Dedicated는 새 PV(영구 볼륨)를 프로비저닝하고 PersistentVolume
오브젝트를 생성합니다. 새로 생성된 PV를 암호화하여 클러스터에서 PV를 보호하기 위해 GCP(Google Cloud Platform)에 사용자 지정 암호화 키를 추가할 수 있습니다.
암호화를 위해 새로 연결된 PV는 신규 또는 기존 Google Cloud KMS(키 관리 서비스) 키를 사용하여 클러스터에서 CMEK(고객 관리 암호화 키)를 사용합니다.
사전 요구 사항
- 실행 중인 OpenShift Dedicated 클러스터에 로그인되어 있습니다.
- Cloud KMS 키 링 및 키 버전이 생성되어 있습니다.
CMEK 및 Cloud KMS 리소스에 대한 자세한 내용은 CMEK(고객 관리 암호화 키) 사용을 참조하십시오.
절차
사용자 정의 PV를 생성하려면 다음 단계를 완료합니다.
Cloud KMS 키를 사용하여 스토리지 클래스를 생성합니다. 다음 예시에서는 암호화된 볼륨의 동적 프로비저닝을 활성화합니다.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-gce-pd-cmek provisioner: pd.csi.storage.gke.io volumeBindingMode: "WaitForFirstConsumer" allowVolumeExpansion: true parameters: type: pd-standard disk-encryption-kms-key: projects/<key-project-id>/locations/<location>/keyRings/<key-ring>/cryptoKeys/<key> 1
- 1
- 이 필드는 새 디스크를 암호화하는 데 사용할 키의 리소스 식별자여야 합니다. 값은 대소문자를 구분합니다. 키 ID 값을 제공하는 방법에 대한 자세한 내용은 리소스의 ID 검색 및 Cloud KMS 리소스 ID 가져오기를 참조하십시오.
참고disk-encryption-✓s-key
매개변수를 기존 스토리지 클래스에 추가할 수 없습니다. 그러나 스토리지 클래스를 삭제하고 동일한 이름과 다른 매개변수 세트로 다시 생성할 수 있습니다. 이렇게 하는 경우 기존 클래스의 프로비저너가pd.csi.storage.gke.io
여야 합니다.oc
명령을 사용하여 OpenShift Dedicated 클러스터에 스토리지 클래스를 배포합니다.$ oc describe storageclass csi-gce-pd-cmek
출력 예
Name: csi-gce-pd-cmek IsDefaultClass: No Annotations: None Provisioner: pd.csi.storage.gke.io Parameters: disk-encryption-kms-key=projects/key-project-id/locations/location/keyRings/ring-name/cryptoKeys/key-name,type=pd-standard AllowVolumeExpansion: true MountOptions: none ReclaimPolicy: Delete VolumeBindingMode: WaitForFirstConsumer Events: none
이전 단계에서 생성한 스토리지 클래스 오브젝트의 이름과 일치하는
pvc.yaml
파일을 생성합니다.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: csi-gce-pd-cmek resources: requests: storage: 6Gi
참고새 스토리지 클래스를 기본값으로 표시한 경우
storageClassName
필드를 생략할 수 있습니다.클러스터에 PVC를 적용합니다.
$ oc apply -f pvc.yaml
PVC 상태를 가져온 후 새로 프로비저닝된 PV에 바인딩되었는지 확인합니다.
$ oc get pvc
출력 예
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE podpvc Bound pvc-e36abf50-84f3-11e8-8538-42010a800002 10Gi RWO csi-gce-pd-cmek 9s
참고스토리지 클래스에
WaitForFirstConsumer
로 설정된volumeBindingMode
필드가 있는 경우 이를 확인하기 전에 PVC를 사용하도록 Pod를 생성해야 합니다.
이제 CMEK 보호 PV를 OpenShift Dedicated 클러스터와 함께 사용할 준비가 되었습니다.