4.8. IBM Cloud를 사용하여 OADP 구성


4.8.1. IBM Cloud를 사용하여 OpenShift API for Data Protection 구성

IBM Cloud 클러스터에 OpenShift API for Data Protection(OADP) Operator를 설치하여 클러스터에서 애플리케이션을 백업 및 복원합니다. 백업을 저장하도록 IBM Cloud Object Storage(COS)를 구성합니다.

4.8.1.1. COS 인스턴스 구성

OADP 백업 데이터를 저장하기 위해 IBM COS(Cloud Object Storage) 인스턴스를 생성합니다. COS 인스턴스를 생성한 후 HMAC 서비스 자격 증명을 구성합니다.

사전 요구 사항

  • IBM Cloud Platform 계정이 있습니다.
  • IBM Cloud CLI 를 설치했습니다.
  • IBM Cloud에 로그인되어 있습니다.

절차

  1. 다음 명령을 실행하여 IBM Cloud Object Storage(COS) 플러그인을 설치합니다.

    $ ibmcloud plugin install cos -f
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 버킷 이름을 설정합니다.

    $ BUCKET=<bucket_name>
    Copy to Clipboard Toggle word wrap
  3. 다음 명령을 실행하여 버킷 리전을 설정합니다.

    $ REGION=<bucket_region> 
    1
    Copy to Clipboard Toggle word wrap
    1
    버킷 리전을 지정합니다(예: eu-gb ).
  4. 다음 명령을 실행하여 리소스 그룹을 생성합니다.

    $ ibmcloud resource group-create <resource_group_name>
    Copy to Clipboard Toggle word wrap
  5. 다음 명령을 실행하여 대상 리소스 그룹을 설정합니다.

    $ ibmcloud target -g <resource_group_name>
    Copy to Clipboard Toggle word wrap
  6. 다음 명령을 실행하여 대상 리소스 그룹이 올바르게 설정되었는지 확인합니다.

    $ ibmcloud target
    Copy to Clipboard Toggle word wrap

    출력 예

    API endpoint:     https://cloud.ibm.com
    Region:
    User:             test-user
    Account:          Test Account (fb6......e95) <-> 2...122
    Resource group:   Default
    Copy to Clipboard Toggle word wrap

    예제 출력에서 리소스 그룹은 Default 로 설정됩니다.

  7. 다음 명령을 실행하여 리소스 그룹 이름을 설정합니다.

    $ RESOURCE_GROUP=<resource_group> 
    1
    Copy to Clipboard Toggle word wrap
    1
    리소스 그룹 이름을 지정합니다(예: "default" ).
  8. 다음 명령을 실행하여 IBM Cloud service-instance 리소스를 생성합니다.

    $ ibmcloud resource service-instance-create \
    <service_instance_name> \
    1
    
    <service_name> \
    2
    
    <service_plan> \
    3
    
    <region_name> 
    4
    Copy to Clipboard Toggle word wrap
    1
    service-instance 리소스의 이름을 지정합니다.
    2
    서비스 이름을 지정합니다. 또는 서비스 ID를 지정할 수 있습니다.
    3
    IBM Cloud 계정의 서비스 계획을 지정합니다.
    4
    지역 이름을 지정합니다.

    명령 예

    $ ibmcloud resource service-instance-create test-service-instance cloud-object-storage \ 
    1
    
    standard \
    global \
    -d premium-global-deployment 
    2
    Copy to Clipboard Toggle word wrap

    1
    서비스 이름은 cloud-object-storage 입니다.
    2
    -d 플래그는 배포 이름을 지정합니다.
  9. 다음 명령을 실행하여 서비스 인스턴스 ID를 추출합니다.

    $ SERVICE_INSTANCE_ID=$(ibmcloud resource service-instance test-service-instance --output json | jq -r '.[0].id')
    Copy to Clipboard Toggle word wrap
  10. 다음 명령을 실행하여 COS 버킷을 생성합니다.

    $ ibmcloud cos bucket-create \//
    --bucket $BUCKET \//
    --ibm-service-instance-id $SERVICE_INSTANCE_ID \//
    --region $REGION
    Copy to Clipboard Toggle word wrap

    $BUCKET,$SERVICE_INSTANCE_ID$REGION 과 같은 변수는 이전에 설정한 값으로 교체됩니다.

  11. 다음 명령을 실행하여 HMAC 자격 증명을 만듭니다.

    $ ibmcloud resource service-key-create test-key Writer --instance-name test-service-instance --parameters {\"HMAC\":true}
    Copy to Clipboard Toggle word wrap
  12. HMAC 인증 정보에서 액세스 키 ID와 시크릿 액세스 키를 추출하여 credentials-velero 파일에 저장합니다. credentials-velero 파일을 사용하여 백업 스토리지 위치에 대한 시크릿을 생성할 수 있습니다. 다음 명령을 실행합니다.

    $ cat > credentials-velero << __EOF__
    [default]
    aws_access_key_id=$(ibmcloud resource service-key test-key -o json  | jq -r '.[0].credentials.cos_hmac_keys.access_key_id')
    aws_secret_access_key=$(ibmcloud resource service-key test-key -o json  | jq -r '.[0].credentials.cos_hmac_keys.secret_access_key')
    __EOF__
    Copy to Clipboard Toggle word wrap

4.8.1.2. 기본 보안 생성

백업 및 스냅샷 위치에서 동일한 자격 증명을 사용하거나 스냅샷 위치가 필요하지 않은 경우 기본 보안을 생성합니다.

참고

DataProtectionApplication 사용자 정의 리소스 (CR)에는 기본 보안이 필요합니다. 그렇지 않으면 설치에 실패합니다. 백업 위치 Secret 이 지정되지 않은 경우 기본 이름이 사용됩니다.

설치 중에 백업 위치 자격 증명을 사용하지 않으려면 빈 credentials-velero 파일을 사용하여 기본 이름으로 Secret 을 생성할 수 있습니다.

사전 요구 사항

  • 오브젝트 스토리지 및 클라우드 스토리지의 경우 동일한 인증 정보를 사용해야 합니다.
  • Velero에 대한 오브젝트 스토리지를 구성해야 합니다.

절차

  1. 클라우드 공급자에 적절한 형식으로 백업 스토리지 위치에 대한 credentials-velero 파일을 생성합니다.
  2. 기본 이름으로 Secret CR(사용자 정의 리소스)을 생성합니다.

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap

Data Protection Application을 설치할 때 DataProtectionApplication CR의 spec.backupLocations.credential 블록에서 Secret 을 참조합니다.

4.8.1.3. 다른 인증 정보의 보안 생성

백업 및 스냅샷 위치에서 다른 인증 정보를 사용하는 경우 두 개의 Secret 오브젝트를 생성해야 합니다.

  • 사용자 지정 이름을 사용한 백업 위치 시크릿. 사용자 지정 이름은 DataProtectionApplication CR(사용자 정의 리소스)의 spec.backupLocations 블록에 지정됩니다.
  • 스냅샷 위치 보안 (기본값: cloud-credentials )입니다. 이 보안은 DataProtectionApplication CR에 지정되지 않습니다.

절차

  1. 클라우드 공급자의 적절한 형식으로 스냅샷 위치에 대한 credentials-velero 파일을 생성합니다.
  2. 기본 이름으로 스냅샷 위치에 대한 보안을 생성합니다.

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap
  3. 오브젝트 스토리지에 적합한 형식으로 백업 위치에 대한 credentials-velero 파일을 생성합니다.
  4. 사용자 지정 이름으로 백업 위치에 대한 보안을 생성합니다.

    $ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
    Copy to Clipboard Toggle word wrap
  5. 다음 예제와 같이 사용자 지정 이름으로 SecretDataProtectionApplication CR에 추가합니다.

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - velero:
            provider: <provider>
            default: true
            credential:
              key: cloud
              name: <custom_secret> 
    1
    
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
    Copy to Clipboard Toggle word wrap
    1
    사용자 지정 이름으로 백업 위치 보안.

4.8.1.4. 데이터 보호 애플리케이션 설치

DataProtectionApplication API의 인스턴스를 생성하여 DPA( Data Protection Application )를 설치합니다.

사전 요구 사항

  • OADP Operator를 설치해야 합니다.
  • 오브젝트 스토리지를 백업 위치로 구성해야 합니다.
  • 스냅샷을 사용하여 PV를 백업하는 경우 클라우드 공급자는 기본 스냅샷 API 또는 CSI(Container Storage Interface) 스냅샷을 지원해야 합니다.
  • 백업 및 스냅샷 위치에서 동일한 자격 증명을 사용하는 경우 기본 이름 cloud-credentials 를 사용하여 보안을 생성해야 합니다.

    참고

    설치 중에 백업 또는 스냅샷 위치를 지정하지 않으려면 빈 credentials-velero 파일을 사용하여 기본 Secret 을 생성할 수 있습니다. 기본 Secret 이 없는 경우 설치가 실패합니다.

절차

  1. Operators 설치된 Operators 를 클릭하고 OADP Operator를 선택합니다.
  2. 제공된 API 의 경우 DataProtectionApplication 상자에서 인스턴스 생성 을 클릭합니다.
  3. YAML 보기를 클릭하고 DataProtectionApplication 매니페스트의 매개변수를 업데이트합니다.

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      namespace: openshift-adp
      name: <dpa_name>
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - aws
          - csi
      backupLocations:
        - velero:
            provider: aws 
    1
    
            default: true
            objectStorage:
              bucket: <bucket_name> 
    2
    
              prefix: velero
            config:
              insecureSkipTLSVerify: 'true'
              profile: default
              region: <region_name> 
    3
    
              s3ForcePathStyle: 'true'
              s3Url: <s3_url> 
    4
    
            credential:
              key: cloud
              name: cloud-credentials 
    5
    Copy to Clipboard Toggle word wrap
    1
    IBM Cloud를 백업 스토리지 위치로 사용하는 경우 공급자가 aws 입니다.
    2
    IBM Cloud Object Storage(COS) 버킷 이름을 지정합니다.
    3
    COS 리전 이름을 지정합니다(예: eu-gb ).
    4
    COS 버킷의 S3 URL을 지정합니다. 예: http://s3.eu-gb.cloud-object-storage.appdomain.cloud. 여기서 eu-gb 는 지역 이름입니다. 버킷 리전에 따라 지역 이름을 바꿉니다.
    5
    액세스 키와 HMAC 인증 정보의 시크릿 액세스 키를 사용하여 생성한 시크릿의 이름을 정의합니다.
  4. 생성을 클릭합니다.

검증

  1. 다음 명령을 실행하여 OADP(OpenShift API for Data Protection) 리소스를 확인하여 설치를 확인합니다.

    $ oc get all -n openshift-adp
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/node-agent-9cq4q                                     1/1     Running   0          94s
    pod/node-agent-m4lts                                     1/1     Running   0          94s
    pod/node-agent-pv4kr                                     1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    service/openshift-adp-velero-metrics-svc                   ClusterIP   172.30.10.0      <none>        8085/TCP   8h
    
    NAME                        DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/node-agent    3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s
    Copy to Clipboard Toggle word wrap

  2. 다음 명령을 실행하여 DPA( DataProtectionApplication )가 조정되었는지 확인합니다.

    $ oc get dpa dpa-sample -n openshift-adp -o jsonpath='{.status}'
    Copy to Clipboard Toggle word wrap

    출력 예

    {"conditions":[{"lastTransitionTime":"2023-10-27T01:23:57Z","message":"Reconcile complete","reason":"Complete","status":"True","type":"Reconciled"}]}
    Copy to Clipboard Toggle word wrap

  3. 유형이 Reconciled 으로 설정되어 있는지 확인합니다.
  4. 백업 스토리지 위치를 확인하고 다음 명령을 실행하여 PHASE 가 사용 가능한지 확인합니다.

    $ oc get backupstoragelocations.velero.io -n openshift-adp
    Copy to Clipboard Toggle word wrap

    출력 예

    NAME           PHASE       LAST VALIDATED   AGE     DEFAULT
    dpa-sample-1   Available   1s               3d16h   true
    Copy to Clipboard Toggle word wrap

4.8.1.5. Velero CPU 및 메모리 리소스 할당 설정

DataProtectionApplication CR(사용자 정의 리소스) 매니페스트를 편집하여 Velero Pod에 대한 CPU 및 메모리 리소스 할당을 설정합니다.

사전 요구 사항

  • OADP(Data Protection) Operator가 설치되어 있어야 합니다.

절차

  • 다음 예제와 같이 DataProtectionApplication CR 매니페스트의 spec.configuration.velero.podConfig.ResourceAllocations 블록의 값을 편집합니다.

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node_selector> 
    1
    
            resourceAllocations: 
    2
    
              limits:
                cpu: "1"
                memory: 1024Mi
              requests:
                cpu: 200m
                memory: 256Mi
    Copy to Clipboard Toggle word wrap
    1
    Velero podSpec에 제공할 노드 선택기를 지정합니다.
    2
    나열된 resourceAllocations 는 평균 사용량입니다.
참고

Kopia는 OADP 1.3 이상 릴리스에서 옵션입니다. Kopia를 파일 시스템 백업에 사용할 수 있으며, Kopia는 기본 제공 Data Mover 사례에서만 사용할 수 있습니다.

Kopia는 Restic보다 리소스 집약적이므로 그에 따라 CPU 및 메모리 요구 사항을 조정해야 할 수 있습니다.

4.8.1.6. 노드 에이전트 및 노드 라벨 구성

OADP의 DPA는 nodeSelector 필드를 사용하여 노드 에이전트를 실행할 수 있는 노드를 선택합니다. nodeSelector 필드는 권장되는 노드 선택 제약 조건의 가장 간단한 형식입니다.

지정된 라벨은 각 노드의 라벨과 일치해야 합니다.

선택하는 노드에서 노드 에이전트를 실행하는 올바른 방법은 사용자 정의 라벨을 사용하여 노드에 레이블을 지정하는 것입니다.

$ oc label node/<node_name> node-role.kubernetes.io/nodeAgent=""
Copy to Clipboard Toggle word wrap

노드에 레이블을 지정하는 데 사용한 DPA.spec.configuration.nodeAgent.podConfig.nodeSelector 에서 동일한 사용자 지정 레이블을 사용합니다. 예를 들면 다음과 같습니다.

configuration:
  nodeAgent:
    enable: true
    podConfig:
      nodeSelector:
        node-role.kubernetes.io/nodeAgent: ""
Copy to Clipboard Toggle word wrap

다음 예제는 nodeSelector 의 안티 패턴이며 'node-role.kubernetes.io/infra: ""''node-role.kubernetes.io/worker: ""' 둘 다 노드에 있지 않으면 작동하지 않습니다.

    configuration:
      nodeAgent:
        enable: true
        podConfig:
          nodeSelector:
            node-role.kubernetes.io/infra: ""
            node-role.kubernetes.io/worker: ""
Copy to Clipboard Toggle word wrap

4.8.1.7. 클라이언트 버스트 및 QPS 설정으로 DPA 구성

버스트 설정은 제한을 적용하기 전에 velero 서버로 보낼 수 있는 요청 수를 결정합니다. 버스트 제한에 도달한 후 초당 쿼리(QPS) 설정에 따라 초당 전송할 수 있는 추가 요청 수를 결정합니다.

버스트 및 QPS 값으로 DPA(Data Protection Application)를 구성하여 velero 서버의 버스트 및 QPS 값을 설정할 수 있습니다. DPA의 dpa.configuration.velero.client-burstdpa.configuration.velero.client-qps 필드를 사용하여 burst 및 QPS 값을 설정할 수 있습니다.

사전 요구 사항

  • OADP Operator가 설치되어 있습니다.

절차

  • 다음 예와 같이 DPA에서 client-burstclient-qps 필드를 구성합니다.

    데이터 보호 애플리케이션 예

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
        - name: default
          velero:
            config:
              insecureSkipTLSVerify: "true"
              profile: "default"
              region: <bucket_region>
              s3ForcePathStyle: "true"
              s3Url: <bucket_url>
            credential:
              key: cloud
              name: cloud-credentials
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: velero
            provider: aws
      configuration:
        nodeAgent:
          enable: true
          uploaderType: restic
        velero:
          client-burst: 500 
    1
    
          client-qps: 300 
    2
    
          defaultPlugins:
            - openshift
            - aws
            - kubevirt
    Copy to Clipboard Toggle word wrap

    1
    client-burst 값을 지정합니다. 이 예에서 client-burst 필드는 500으로 설정됩니다.
    2
    client-qps 값을 지정합니다. 이 예에서 client-qps 필드는 300으로 설정됩니다.

4.8.1.8. 두 개 이상의 BSL로 DPA 구성

DPA를 두 개 이상의 BSL로 구성하고 클라우드 공급자가 제공하는 자격 증명을 지정할 수 있습니다.

사전 요구 사항

  • OADP Operator를 설치해야 합니다.
  • 클라우드 공급자가 제공하는 인증 정보를 사용하여 시크릿을 생성해야 합니다.

절차

  1. 두 개 이상의 BSL로 DPA를 구성합니다. 다음 예제를 참조하십시오.

    DPA 예

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    #...
    backupLocations:
      - name: aws 
    1
    
        velero:
          provider: aws
          default: true 
    2
    
          objectStorage:
            bucket: <bucket_name> 
    3
    
            prefix: <prefix> 
    4
    
          config:
            region: <region_name> 
    5
    
            profile: "default"
          credential:
            key: cloud
            name: cloud-credentials 
    6
    
      - name: odf 
    7
    
        velero:
          provider: aws
          default: false
          objectStorage:
            bucket: <bucket_name>
            prefix: <prefix>
          config:
            profile: "default"
            region: <region_name>
            s3Url: <url> 
    8
    
            insecureSkipTLSVerify: "true"
            s3ForcePathStyle: "true"
          credential:
            key: cloud
            name: <custom_secret_name_odf> 
    9
    
    #...
    Copy to Clipboard Toggle word wrap

    1
    첫 번째 BSL의 이름을 지정합니다.
    2
    이 매개 변수는 이 BSL이 기본 BSL임을 나타냅니다. Backup CR 에 BSL이 설정되지 않은 경우 기본 BSL이 사용됩니다. 하나의 BSL만 기본값으로 설정할 수 있습니다.
    3
    버킷 이름을 지정합니다.
    4
    Velero 백업의 접두사를 지정합니다(예: velero ).
    5
    버킷의 AWS 리전을 지정합니다.
    6
    생성한 기본 Secret 오브젝트의 이름을 지정합니다.
    7
    두 번째 BSL의 이름을 지정합니다.
    8
    S3 끝점의 URL을 지정합니다.
    9
    시크릿 의 올바른 이름을 지정합니다(예: custom_secret_name_odf ). Secret 이름을 지정하지 않으면 기본 이름이 사용됩니다.
  2. 백업 CR에 사용할 BSL을 지정합니다. 다음 예제를 참조하십시오.

    백업 CR의 예

    apiVersion: velero.io/v1
    kind: Backup
    # ...
    spec:
      includedNamespaces:
      - <namespace> 
    1
    
      storageLocation: <backup_storage_location> 
    2
    
      defaultVolumesToFsBackup: true
    Copy to Clipboard Toggle word wrap

    1
    백업할 네임스페이스를 지정합니다.
    2
    스토리지 위치를 지정합니다.

4.8.1.9. DataProtectionApplication에서 노드 에이전트 비활성화

백업에 Restic,Kopia 또는 DataMover 를 사용하지 않는 경우 DataProtectionApplication CR(사용자 정의 리소스)에서 nodeAgent 필드를 비활성화할 수 있습니다. nodeAgent 를 비활성화하기 전에 OADP Operator가 유휴 상태이고 백업을 실행하지 않는지 확인합니다.

절차

  1. nodeAgent 를 비활성화하려면 enable 플래그를 false 로 설정합니다. 다음 예제를 참조하십시오.

    Example DataProtectionApplication CR

    # ...
    configuration:
      nodeAgent:
        enable: false  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    노드 에이전트를 비활성화합니다.
  2. nodeAgent 를 활성화하려면 enable 플래그를 true 로 설정합니다. 다음 예제를 참조하십시오.

    Example DataProtectionApplication CR

    # ...
    configuration:
      nodeAgent:
        enable: true  
    1
    
        uploaderType: kopia
    # ...
    Copy to Clipboard Toggle word wrap

    1
    노드 에이전트를 활성화합니다.

DataProtectionApplication CR에서 nodeAgent 필드를 활성화하고 비활성화하는 작업을 설정할 수 있습니다. 자세한 내용은 "작업을 사용하여 Pod에서 작업 실행"을 참조하십시오.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat