4.4. OADP 기능 및 플러그인
OpenShift API for Data Protection(OADP) 기능은 애플리케이션을 백업 및 복원하는 옵션을 제공합니다.
기본 플러그인을 사용하면 Velero가 특정 클라우드 공급자와 통합하고 OpenShift Container Platform 리소스를 백업 및 복원할 수 있습니다.
4.4.1. OADP 기능
OpenShift API for Data Protection(OADP)은 다음 기능을 지원합니다.
- Backup
OADP를 사용하여 OpenShift Platform의 모든 애플리케이션을 백업하거나 유형, 네임스페이스 또는 레이블별로 리소스를 필터링할 수 있습니다.
OADP는 Kubernetes 오브젝트 및 내부 이미지를 오브젝트 스토리지에 아카이브 파일로 저장하여 백업합니다. OADP는 기본 클라우드 스냅샷 API 또는 CSI(Container Storage Interface)를 사용하여 스냅샷을 생성하여 PV(영구 볼륨)를 백업합니다. 스냅샷을 지원하지 않는 클라우드 공급자의 경우 OADP는 Restic을 통해 리소스 및 PV 데이터를 백업합니다.
참고백업 및 복원에 성공하려면 애플리케이션의 백업에서 Operator를 제외해야 합니다.
- Restore
백업에서 리소스 및 PV를 복원할 수 있습니다. 백업의 모든 오브젝트를 복원하거나 네임스페이스, PV 또는 라벨별로 오브젝트를 필터링할 수 있습니다.
참고백업 및 복원에 성공하려면 애플리케이션의 백업에서 Operator를 제외해야 합니다.
- 스케줄
- 지정된 간격으로 백업을 예약할 수 있습니다.
- 후크
-
후크를 사용하여 Pod의 컨테이너에서 명령을 실행할 수 있습니다(예:
fsfreeze
파일 시스템). 백업 또는 복원 전이나 후에 실행되도록 후크를 구성할 수 있습니다. 복원 후크는 init 컨테이너 또는 애플리케이션 컨테이너에서 실행될 수 있습니다.
4.4.2. OADP 플러그인
OADP(OpenShift API for Data Protection)는 백업 및 스냅샷 작업을 지원하기 위해 스토리지 공급자와 통합된 기본 Velero 플러그인을 제공합니다. Velero 플러그인을 기반으로 사용자 지정 플러그인 을 생성할 수 있습니다.
OADP는 OpenShift Container Platform 리소스 백업, OpenShift Virtualization 리소스 백업 및 CSI(Container Storage Interface) 스냅샷에 대한 플러그인도 제공합니다.
OADP 플러그인 | 함수 | 스토리지 위치 |
---|---|---|
| Kubernetes 오브젝트를 백업하고 복원합니다. | AWS S3 |
스냅샷을 사용하여 볼륨을 백업하고 복원합니다. | AWS EBS | |
| Kubernetes 오브젝트를 백업하고 복원합니다. | Microsoft Azure Blob 스토리지 |
스냅샷을 사용하여 볼륨을 백업하고 복원합니다. | Microsoft Azure Managed Disks | |
| Kubernetes 오브젝트를 백업하고 복원합니다. | Google Cloud Storage |
스냅샷을 사용하여 볼륨을 백업하고 복원합니다. | Google Compute Engine Disks | |
| OpenShift Container Platform 리소스를 백업하고 복원합니다. [1] | 오브젝트 저장소 |
| OpenShift Virtualization 리소스를 백업하고 복원합니다. [2] | 오브젝트 저장소 |
| CSI 스냅샷을 사용하여 볼륨을 백업하고 복원합니다. [3] | CSI 스냅샷을 지원하는 클라우드 스토리지 |
| VolumeSnapshotMover는 클러스터 삭제와 같은 상황에서 상태 저장 애플리케이션을 복구하는 동안 사용할 스냅샷을 클러스터에서 오브젝트 저장소로 재배치합니다. [4] | 오브젝트 저장소 |
- 필수.
- 가상 머신 디스크는 CSI 스냅샷 또는 Restic을 사용하여 백업됩니다.
csi
플러그인은 Kubernetes CSI 스냅샷 API를 사용합니다.-
OADP 1.1 이상에서는
snapshot.storage.k8s.io/v1
을 사용합니다. -
OADP 1.0 uses
snapshot.storage.k8s.io/v1beta1
-
OADP 1.1 이상에서는
- OADP 1.2만 해당
4.4.3. OADP Velero 플러그인 정보
Velero를 설치할 때 다음 두 가지 유형의 플러그인을 구성할 수 있습니다.
- 기본 클라우드 공급자 플러그인
- 사용자 정의 플러그인
두 가지 유형의 플러그인은 모두 선택 사항이지만 대부분의 사용자는 하나 이상의 클라우드 공급자 플러그인을 구성합니다.
4.4.3.1. 기본 Velero 클라우드 공급자 플러그인
배포 중에 oadp_v1alpha1_dpa.yaml
파일을 구성할 때 다음과 같은 기본 Velero 클라우드 공급자 플러그인을 설치할 수 있습니다.
-
AWS
(Amazon Web Services) -
GCP(
Google Cloud Platform) -
Azure
(Microsoft Azure) -
OpenShift
(OpenShift Velero 플러그인) -
CSI
(컨테이너 스토리지 인터페이스) -
KubeVirt
(KubeVirt)
배포 중에 oadp_v1alpha1_dpa.yaml
파일에 원하는 기본 플러그인을 지정합니다.
파일 예
다음 .yaml
파일은 openshift
,aws
,azure
, gcp
플러그인을 설치합니다.
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: dpa-sample spec: configuration: velero: defaultPlugins: - openshift - aws - azure - gcp
4.4.3.2. 사용자 정의 Velero 플러그인
배포 중에 oadp_v1alpha1_dpa.yaml
파일을 구성할 때 플러그인 이미지
및 이름을
지정하여 사용자 정의 Velero 플러그인을 설치할 수 있습니다.
배포 중에 oadp_v1alpha1_dpa.yaml
파일에 원하는 사용자 지정 플러그인을 지정합니다.
파일 예
다음 .yaml
파일은 기본 openshift
,azure
, gcp
플러그인 및 이름이 custom-plugin-example
이고 quay.io/example-repo/custom-velero-plugin
이미지가 있는 사용자 정의 플러그인을 설치합니다.
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: dpa-sample spec: configuration: velero: defaultPlugins: - openshift - azure - gcp customPlugins: - name: custom-plugin-example image: quay.io/example-repo/custom-velero-plugin
4.4.3.3. Velero 플러그인에서 "received EOF, stop recv loop" 메시지를 반환
Velero 플러그인은 별도의 프로세스로 시작됩니다. Velero 작업이 성공적으로 완료되거나 실패하면 종료됩니다. 디버그 로그에서 recv 루프 메시지를 중지하여 수신된 EOF
를 수신하면 플러그인 작업이 완료되었음을 나타냅니다. 이는 오류가 발생했음을 의미하지 않습니다.
4.4.4. OADP에서 지원되는 아키텍처
OADP(OpenShift API for Data Protection)는 다음과 같은 아키텍처를 지원합니다.
- AMD64
- ARM64
- PPC64le
- s390x
OADP 1.2.0 이상 버전은 ARM64 아키텍처를 지원합니다.
4.4.5. IBM Power 및 IBM Z에 대한 OADP 지원
OADP(OpenShift API for Data Protection)는 플랫폼에서 사용할 수 없습니다. 다음 정보는 IBM Power® 및 IBM Z®에만 관련이 있습니다.
- OADP 1.1.7은 IBM Power® 및 IBM Z® 모두에 대해 OpenShift Container Platform 4.11에 대해 성공적으로 테스트되었습니다. 다음 섹션에서는 이러한 시스템의 백업 위치 측면에서 OADP 1.1.7에 대한 테스트 및 지원 정보를 제공합니다.
- OADP 1.2.3은 IBM Power® 및 IBM Z® 모두에 대해 OpenShift Container Platform 4.12, 4.13, 4.14 및 4.15에 대해 성공적으로 테스트되었습니다. 다음 섹션에서는 이러한 시스템의 백업 위치 측면에서 OADP 1.2.3에 대한 테스트 및 지원 정보를 제공합니다.
- OADP 1.3.3은 IBM Power® 및 IBM Z® 모두에 대해 OpenShift Container Platform 4.12, 4.13, 4.14 및 4.15에 대해 성공적으로 테스트되었습니다. 다음 섹션에서는 이러한 시스템의 백업 위치 측면에서 OADP 1.3.3에 대한 테스트 및 지원 정보를 제공합니다.
4.4.5.1. IBM Power를 사용하여 대상 백업 위치에 대한 OADP 지원
- OpenShift Container Platform 4.11 및 4.12로 실행 중인 IBM Power®는 OADP(OpenShift API for Data Protection) 1.1.7을 사용하여 AWS S3 백업 위치 대상에 대해 성공적으로 테스트되었습니다. 이 테스트에는 AWS S3 대상만 포함되었지만 Red Hat은 OpenShift Container Platform 4.11 및 4.12를 사용하여 IBM Power® 실행을 지원하며 AWS가 아닌 모든 S3 백업 위치 대상에 대해 OADP 1.1.7도 지원합니다.
- OpenShift Container Platform 4.12, 4.13, 4.14, 4.15 및 OADP 1.2.3에서 실행되는 IBM Power®는 AWS S3 백업 위치 대상에 대해 성공적으로 테스트되었습니다. 이 테스트는 AWS S3 대상만 포함했지만 Red Hat은 AWS가 아닌 모든 S3 백업 위치 대상에 대해 OpenShift Container Platform 4.12, 4.13. 4.14, 4.15 및 OADP 1.2.3을 사용하여 IBM Power® 실행을 지원합니다.
- OpenShift Container Platform 4.12, 4.13, 4.14, 4.15 및 OADP 1.3.3에서 실행 중인 IBM Power®는 AWS S3 백업 위치 대상에 대해 성공적으로 테스트되었습니다. 이 테스트에는 AWS S3 대상만 포함되었지만 Red Hat은 AWS가 아닌 모든 S3 백업 위치 대상에 대해 OpenShift Container Platform 4.12, 4.13, 4.15 및 OADP 1.3.3을 사용하여 IBM Power® 실행을 지원합니다.
4.4.5.2. OADP 테스트 및 IBM Z를 사용하여 대상 백업 위치 지원
- OpenShift Container Platform 4.11 및 4.12로 실행 중인 IBM Z®는 OADP(OpenShift API for Data Protection) 1.1.7을 사용하여 AWS S3 백업 위치 대상에 대해 성공적으로 테스트되었습니다. 이 테스트에는 AWS S3 대상만 포함되었지만 Red Hat은 OpenShift Container Platform 4.11 및 4.12를 사용하여 IBM Z® 실행을 지원하며 AWS가 아닌 모든 S3 백업 위치 대상에 대해 OADP 1.1.7도 지원합니다.
- OpenShift Container Platform 4.12, 4.13, 4.14, 4.15 및 OADP 1.2.3에서 실행 중인 IBM Z®는 AWS S3 백업 위치 대상에 대해 성공적으로 테스트되었습니다. 이 테스트는 AWS S3 대상만 포함했지만 Red Hat은 AWS가 아닌 모든 S3 백업 위치 대상에 대해 OpenShift Container Platform 4.12, 4.14, 4.15 및 OADP 1.2.3을 사용하여 IBM Z® 실행을 지원합니다.
- OpenShift Container Platform 4.12, 4.13, 4.14, 4.15 및 1.3.3에서 실행 중인 IBM Z®는 AWS S3 백업 위치 대상에 대해 성공적으로 테스트되었습니다. 이 테스트는 AWS S3 대상만 포함했지만 Red Hat은 AWS가 아닌 모든 S3 백업 위치 대상에 대해 OpenShift Container Platform 4.12, 4.13 4.14, 4.15 및 1.3.3을 사용하여 IBM Z® 실행을 지원합니다.
4.4.5.2.1. IBM Power(R) 및 IBM Z(R) 플랫폼을 사용하는 OADP의 알려진 문제
- 현재 IBM Power® 및 IBM Z® 플랫폼에 배포된 단일 노드 OpenShift 클러스터에 대한 백업 방법 제한 사항이 있습니다. 현재 NFS 스토리지만 이러한 플랫폼의 단일 노드 OpenShift 클러스터와 호환됩니다. 또한 Kopia 및 Restic과 같은 파일 시스템 백업(FSB) 메서드만 백업 및 복원 작업에 지원됩니다. 현재 이 문제에 대한 해결방법이 없습니다.
4.4.6. OADP 플러그인의 알려진 문제
다음 섹션에서는 OADP(OpenShift API for Data Protection) 플러그인의 알려진 문제에 대해 설명합니다.
4.4.6.1. 시크릿이 누락되어 이미지 스트림 백업 중 Velero 플러그인 패닉
백업 및 백업 스토리지 위치(BSL)가 데이터 보호 애플리케이션(DPA)의 범위 외부에서 관리되는 경우, OADP 컨트롤러는 DPA 조정에서 관련 oadp-<bsl_name>-<bsl_provider>-registry-secret
을 생성하지 않습니다.
백업이 실행되면 다음 패닉 오류와 함께 이미지 스트림 백업에 OpenShift Velero 플러그인이 패닉됩니다.
024-02-27T10:46:50.028951744Z time="2024-02-27T10:46:50Z" level=error msg="Error backing up item" backup=openshift-adp/<backup name> error="error executing custom action (groupResource=imagestreams.image.openshift.io, namespace=<BSL Name>, name=postgres): rpc error: code = Aborted desc = plugin panicked: runtime error: index out of range with length 1, stack trace: goroutine 94…
4.4.6.1.1. 패닉 오류를 방지하기 위한 해결방법
Velero 플러그인 패닉 오류를 방지하려면 다음 단계를 수행합니다.
관련 라벨을 사용하여 사용자 지정 BSL에 레이블을 지정합니다.
$ oc label BackupStorageLocation <bsl_name> app.kubernetes.io/component=bsl
BSL 레이블이 지정된 후 DPA가 조정될 때까지 기다립니다.
참고DPA 자체를 약간 변경하여 강제로 조정할 수 있습니다.
DPA가 조정되면 관련
oadp-<bsl_name>-<bsl_provider>-registry-secret
이 생성되고 올바른 레지스트리 데이터가 입력되었는지 확인합니다.$ oc -n openshift-adp get secret/oadp-<bsl_name>-<bsl_provider>-registry-secret -o json | jq -r '.data'
4.4.6.2. OpenShift ADP 컨트롤러 분할 오류
cloudstorage
및 restic
이 활성화된 DPA를 구성하는 경우 openshift-adp-controller-manager
Pod가 충돌하고 크래시 루프 세그먼트 오류로 인해 Pod가 실패할 때까지 무기한 재시작합니다.
상호 배타적 필드이므로 velero
또는 cloudstorage
를 정의할 수 있습니다.
-
velero
및cloudstorage
가 모두 정의되어 있는 경우openshift-adp-controller-manager
가 실패합니다. -
velero
또는cloudstorage
가 정의되지 않은 경우openshift-adp-controller-manager
가 실패합니다.
이 문제에 대한 자세한 내용은 OADP-1054 를 참조하십시오.
4.4.6.2.1. OpenShift ADP 컨트롤러 분할 오류 해결
DPA를 구성할 때 velero
또는 cloudstorage
를 정의해야 합니다. DPA에 두 API를 모두 정의하면 크래시 루프 분할 오류와 함께 openshift-adp-controller-manager
Pod가 실패합니다.