4.7. AWS S3 호환 스토리지를 사용하여 OADP 구성


4.7.1. Amazon Web Services를 사용하여 데이터 보호를 위한 OpenShift API 구성

OADP Operator를 설치하여 AWS(Amazon Web Services)를 사용하여 OADP(OpenShift API for Data Protection)를 설치합니다. Operator는 Velero 1.14 를 설치합니다.

참고

OADP 1.0.4부터 모든 OADP 1.0.z 버전은 Migration Toolkit for Containers Operator의 종속성으로만 사용할 수 있으며 독립 실행형 Operator로 사용할 수 없습니다.

Velero에 대해 AWS를 구성하고, 기본 보안 보안을 생성한 다음 데이터 보호 애플리케이션을 설치합니다. 자세한 내용은 OADP Operator 설치를 참조하십시오.

제한된 네트워크 환경에서 OADP Operator를 설치하려면 먼저 기본 OperatorHub 소스를 비활성화하고 Operator 카탈로그를 미러링해야 합니다. 자세한 내용은 제한된 네트워크에서 Operator Lifecycle Manager 사용을 참조하십시오.

4.7.1.1. Amazon Web Services 구성

OpenShift API for Data Protection(OADP)을 위해 AWS(Amazon Web Services)를 구성합니다.

사전 요구 사항

  • AWS CLI가 설치되어 있어야 합니다.

절차

  1. BUCKET 변수를 설정합니다.

    $ BUCKET=<your_bucket>
    Copy to Clipboard Toggle word wrap
  2. REGION 변수를 설정합니다.

    $ REGION=<your_region>
    Copy to Clipboard Toggle word wrap
  3. AWS S3 버킷을 생성합니다.

    $ aws s3api create-bucket \
        --bucket $BUCKET \
        --region $REGION \
        --create-bucket-configuration LocationConstraint=$REGION 
    1
    Copy to Clipboard Toggle word wrap
    1
    us-east-1LocationConstraint를 지원하지 않습니다. 리전이 us-east-1인 경우 --create-bucket-configuration LocationConstraint=$REGION을 생략합니다.
  4. IAM 사용자를 생성합니다.

    $ aws iam create-user --user-name velero 
    1
    Copy to Clipboard Toggle word wrap
    1
    Velero를 사용하여 여러 S3 버킷이 있는 여러 클러스터를 백업하려면 각 클러스터에 대해 고유한 사용자 이름을 생성합니다.
  5. velero-policy.json 파일을 생성합니다.

    $ cat > velero-policy.json <<EOF
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "ec2:DescribeVolumes",
                    "ec2:DescribeSnapshots",
                    "ec2:CreateTags",
                    "ec2:CreateVolume",
                    "ec2:CreateSnapshot",
                    "ec2:DeleteSnapshot"
                ],
                "Resource": "*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:DeleteObject",
                    "s3:PutObject",
                    "s3:AbortMultipartUpload",
                    "s3:ListMultipartUploadParts"
                ],
                "Resource": [
                    "arn:aws:s3:::${BUCKET}/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:GetBucketLocation",
                    "s3:ListBucketMultipartUploads"
                ],
                "Resource": [
                    "arn:aws:s3:::${BUCKET}"
                ]
            }
        ]
    }
    EOF
    Copy to Clipboard Toggle word wrap
  6. 정책을 연결하여 velero 사용자에게 최소한의 필요한 권한을 부여합니다.

    $ aws iam put-user-policy \
      --user-name velero \
      --policy-name velero \
      --policy-document file://velero-policy.json
    Copy to Clipboard Toggle word wrap
  7. velero 사용자에 대한 액세스 키를 생성합니다.

    $ aws iam create-access-key --user-name velero
    Copy to Clipboard Toggle word wrap

    출력 예

    {
      "AccessKey": {
            "UserName": "velero",
            "Status": "Active",
            "CreateDate": "2017-07-31T22:24:41.576Z",
            "SecretAccessKey": <AWS_SECRET_ACCESS_KEY>,
            "AccessKeyId": <AWS_ACCESS_KEY_ID>
      }
    }
    Copy to Clipboard Toggle word wrap

  8. credentials-velero 파일을 생성합니다.

    $ cat << EOF > ./credentials-velero
    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    EOF
    Copy to Clipboard Toggle word wrap

    Data Protection Application을 설치하기 전에 credentials-velero 파일을 사용하여 AWS에 대한 Secret 오브젝트를 생성합니다.

4.7.1.2. 백업 및 스냅샷 위치 및 시크릿 정보

DataProtectionApplication CR(사용자 정의 리소스)에 백업 및 스냅샷 위치와 해당 시크릿을 지정합니다.

백업 위치

AWS S3 호환 오브젝트 스토리지를 Multicloud Object Gateway, Red Hat Container Storage; Ceph Object Gateway, Red Hat OpenShift Data Foundation 또는 MinIO와 같은 백업 위치로 지정합니다.

Velero는 OpenShift Container Platform 리소스, Kubernetes 오브젝트 및 내부 이미지를 오브젝트 스토리지의 아카이브 파일로 백업합니다.

스냅샷 위치

클라우드 공급자의 기본 스냅샷 API를 사용하여 영구 볼륨을 백업하는 경우 클라우드 공급자를 스냅샷 위치로 지정해야 합니다.

CSI(Container Storage Interface) 스냅샷을 사용하는 경우 CSI 드라이버를 등록하기 위해 VolumeSnapshotClass CR을 생성하므로 스냅샷 위치를 지정할 필요가 없습니다.

FSB(File System Backup)를 사용하는 경우 FSB가 오브젝트 스토리지에서 파일 시스템을 백업하므로 스냅샷 위치를 지정할 필요가 없습니다.

보안

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

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

  • 백업 위치에 대한 사용자 지정 보안( DataProtectionApplication CR에서 지정)
  • DataProtectionApplication CR에서 참조하지 않는 스냅샷 위치에 대한 기본 보안입니다.
중요

데이터 보호 애플리케이션에는 기본 보안이 필요합니다. 그렇지 않으면 설치에 실패합니다.

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

4.7.1.2.1. 기본 보안 생성

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

Secret 의 기본 이름은 cloud-credentials 입니다.

참고

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

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

사전 요구 사항

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

절차

  1. 클라우드 공급자에 적절한 형식으로 백업 스토리지 위치에 대한 credentials-velero 파일을 생성합니다.

    다음 예제를 참조하십시오.

    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    Copy to Clipboard Toggle word wrap
  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.7.1.2.2. 다양한 자격 증명에 대한 프로필 생성

백업 및 스냅샷 위치에서 다른 인증 정보를 사용하는 경우 credentials-velero 파일에 별도의 프로필을 생성합니다.

그런 다음 Secret 오브젝트를 생성하고 DataProtectionApplication CR(사용자 정의 리소스)에 프로필을 지정합니다.

절차

  1. 다음 예제와 같이 백업 및 스냅샷 위치에 대한 별도의 프로필이 있는 credentials-velero 파일을 생성합니다.

    [backupStorage]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    
    [volumeSnapshot]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    Copy to Clipboard Toggle word wrap
  2. credentials-velero 파일을 사용하여 Secret 오브젝트를 생성합니다.

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero 
    1
    Copy to Clipboard Toggle word wrap
  3. 다음 예제와 같이 DataProtectionApplication CR에 프로필을 추가합니다.

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
            config:
              region: us-east-1
              profile: "backupStorage"
            credential:
              key: cloud
              name: cloud-credentials
      snapshotLocations:
        - velero:
            provider: aws
            config:
              region: us-west-2
              profile: "volumeSnapshot"
    Copy to Clipboard Toggle word wrap
4.7.1.2.3. AWS를 사용하여 백업 스토리지 위치 구성

다음 예제 절차에 표시된 대로 AWS 백업 스토리지 위치(BSL)를 구성할 수 있습니다.

사전 요구 사항

  • AWS를 사용하여 오브젝트 스토리지 버킷을 생성했습니다.
  • OADP Operator가 설치되어 있습니다.

절차

  • 사용 사례에 적용할 수 있는 값으로 BSL CR(사용자 정의 리소스)을 구성합니다.

    백업 스토리지 위치

    apiVersion: oadp.openshift.io/v1alpha1
    kind: BackupStorageLocation
    metadata:
      name: default
      namespace: openshift-adp
    spec:
      provider: aws 
    1
    
      objectStorage:
        bucket: <bucket_name> 
    2
    
        prefix: <bucket_prefix> 
    3
    
      credential: 
    4
    
        key: cloud 
    5
    
        name: cloud-credentials 
    6
    
      config:
        region: <bucket_region> 
    7
    
        s3ForcePathStyle: "true" 
    8
    
        s3Url: <s3_url> 
    9
    
        publicUrl: <public_s3_url> 
    10
    
        serverSideEncryption: AES256 
    11
    
        kmsKeyId: "50..c-4da1-419f-a16e-ei...49f" 
    12
    
        customerKeyEncryptionFile: "/credentials/customer-key" 
    13
    
        signatureVersion: "1" 
    14
    
        profile: "default" 
    15
    
        insecureSkipTLSVerify: "true" 
    16
    
        enableSharedConfig: "true" 
    17
    
        tagging: "" 
    18
    
        checksumAlgorithm: "CRC32" 
    19
    Copy to Clipboard Toggle word wrap

    1 1
    오브젝트 저장소 플러그인의 이름입니다. 이 예제에서 플러그인은 aws 입니다. 이 필드는 필수입니다.
    2
    백업을 저장할 버킷의 이름입니다. 이 필드는 필수입니다.
    3
    백업을 저장할 버킷 내 접두사입니다. 이 필드는 선택 사항입니다.
    4
    백업 스토리지 위치에 대한 자격 증명입니다. 사용자 지정 인증 정보를 설정할 수 있습니다. 사용자 정의 인증 정보가 설정되지 않은 경우 기본 인증 정보의 시크릿이 사용됩니다.
    5
    시크릿 인증 정보 데이터 내의 입니다.
    6
    인증 정보가 포함된 시크릿의 이름입니다.
    7
    버킷이 있는 AWS 리전입니다. s3ForcePathStyle이 false인 경우 선택 사항입니다.
    8
    가상 호스트 버킷 주소 지정 대신 경로 스타일 주소 지정을 사용할지 여부를 결정하는 부울 플래그입니다. MinIO 또는 NooBaa와 같은 스토리지 서비스를 사용하는 경우 true 로 설정합니다. 이 필드는 선택적 필드입니다. 기본값은 false입니다.
    9
    명시적성을 위해 AWS S3 URL을 지정할 수 있습니다. 이 필드는 주로 MinIO 또는 NooBaa와 같은 스토리지 서비스를 위한 것입니다. 이 필드는 선택적 필드입니다.
    10
    이 필드는 주로 MinIO 또는 NooBaa와 같은 스토리지 서비스에 사용됩니다. 이 필드는 선택적 필드입니다.
    11
    오브젝트 업로드에 사용할 서버 측 암호화 알고리즘의 이름입니다(예: AES256 ). 이 필드는 선택적 필드입니다.
    12
    AWS KMS 키 ID를 지정합니다. 예제에 표시된 대로 별칭(예: alias/<KMS-key-alias-name > ) 또는 전체 ARN 을 지정하여 S3에 저장된 백업의 암호화를 활성화할 수 있습니다. kmsKeyIdcustomerKeyEncryptionFile 과 함께 사용할 수 없습니다. 이 필드는 선택적 필드입니다.
    13
    SSE-C 고객 키가 있는 파일을 지정하여 S3에 저장된 백업의 고객 키 암호화를 활성화합니다. 파일에는 32바이트 문자열이 포함되어야 합니다. customerKeyEncryptionFile 필드는 velero 컨테이너 내에서 마운트된 시크릿을 가리킵니다. velero cloud-credentials 시크릿에 다음 키-값 쌍을 추가합니다. customer-key: <your_b64_encoded_32byte_string>. customerKeyEncryptionFile 필드는 kmsKeyId 필드와 함께 사용할 수 없습니다. 기본값은 빈 문자열("")이며 이는 SSE-C 가 비활성화되어 있습니다. 이 필드는 선택적 필드입니다.
    14
    서명된 URL을 생성하는 데 사용되는 서명 알고리즘의 버전입니다. 서명된 URL을 사용하여 백업을 다운로드하거나 로그를 가져옵니다. 유효한 값은 14 입니다. 기본 버전은 4 입니다. 이 필드는 선택적 필드입니다.
    15
    인증 정보 파일에 있는 AWS 프로필의 이름입니다. 기본값은 default입니다. 이 필드는 선택적 필드입니다.
    16
    오브젝트 저장소에 연결할 때 TLS 인증서를 확인하지 않으려면 insecureSkipTLSVerify 필드를 true 로 설정합니다(예: MinIO를 사용한 자체 서명 인증서의 경우). true 로 설정하는 것은 중간자 공격에 취약하며 프로덕션 워크로드에는 권장되지 않습니다. 기본값은 false입니다. 이 필드는 선택적 필드입니다.
    17
    인증 정보 파일을 공유 구성 파일로 로드하려면 enableSharedConfig 필드를 true 로 설정합니다. 기본값은 false입니다. 이 필드는 선택적 필드입니다.
    18
    AWS S3 오브젝트에 주석을 달 태그를 지정합니다. 키-값 쌍으로 태그를 지정합니다. 기본값은 빈 문자열("")입니다. 이 필드는 선택적 필드입니다.
    19
    오브젝트를 S3에 업로드하는 데 사용할 체크섬 알고리즘을 지정합니다. 지원되는 값은 CRC32 , CRC32 C,SHA1, SHA256 입니다. 필드를 빈 문자열("")으로 설정하면 체크섬 검사를 건너뜁니다. 기본값은 CRC32 입니다. 이 필드는 선택적 필드입니다.
4.7.1.2.4. 추가 데이터 보안을 위한 OADP SSE-C 암호화 키 생성

AWS(Amazon Web Services) S3는 Amazon S3 관리 키(SSE-S3)를 Amazon S3의 모든 버킷의 기본 암호화 수준으로 적용하여 서버 측 암호화를 적용합니다.

OADP(OpenShift API for Data Protection)는 클러스터에서 스토리지로 데이터를 전송할 때 SSL/TLS, HTTPS, velero-repo-credentials 시크릿을 사용하여 데이터를 암호화합니다. AWS 인증 정보가 손실되거나 도난된 경우 백업 데이터를 보호하려면 추가 암호화 계층을 적용합니다.

velero-plugin-for-aws 플러그인은 몇 가지 추가 암호화 방법을 제공합니다. 해당 구성 옵션을 검토하고 추가 암호화를 구현하는 것이 좋습니다.

SSE-C(고객 제공 키)와 함께 서버 측 암호화를 사용하여 고유한 암호화 키를 저장할 수 있습니다. 이 기능은 AWS 인증 정보가 노출되는 경우 추가 보안을 제공합니다.

주의

암호화 키를 안전하고 안전한 방식으로 저장해야 합니다. 암호화 키가 없는 경우 암호화된 데이터 및 백업을 복구할 수 없습니다.

사전 요구 사항

  • OADP 마운트를 /credentials 의 Velero pod에 포함하는 시크릿을 만들려면 cloud-credentials : cloud-credentials 에 다음과 같은 기본 시크릿 이름을 사용하고 다음 라벨 중 하나를 비워 둡니다.

참고

다음 절차에는 인증 정보를 지정하지 않는 spec:backupLocations 블록의 예가 포함되어 있습니다. 이 예제에서는 OADP 시크릿 마운트를 트리거합니다.

  • cloud-credentials 와 다른 이름으로 백업 위치가 필요한 경우 인증 정보 이름이 포함되지 않은 다음 예제의 스냅샷 위치를 추가해야 합니다. 예제에는 인증 정보 이름이 없기 때문에 스냅샷 위치는 cloud-credentials 를 스냅샷 생성의 시크릿으로 사용합니다.

인증 정보가 지정되지 않은 DPA의 스냅샷 위치 예

 snapshotLocations:
  - velero:
      config:
        profile: default
        region: <region>
      provider: aws
# ...
Copy to Clipboard Toggle word wrap

절차

  1. SSE-C 암호화 키를 생성합니다.

    1. 임의의 번호를 생성하고 다음 명령을 실행하여 sse.key 라는 파일로 저장합니다.

      $ dd if=/dev/urandom bs=1 count=32 > sse.key
      Copy to Clipboard Toggle word wrap
    2. Base64를 사용하여 sse.key 를 인코딩하고 다음 명령을 실행하여 결과를 sse_encoded.key 라는 파일로 저장합니다.

      $ cat sse.key | base64 > sse_encoded.key
      Copy to Clipboard Toggle word wrap
    3. 다음 명령을 실행하여 sse_encoded.key 라는 파일을 customer-key 라는 새 파일에 연결합니다.

      $ ln -s sse_encoded.key customer-key
      Copy to Clipboard Toggle word wrap
  2. OpenShift Container Platform 시크릿을 생성합니다.

    • 처음에 OADP를 설치하고 구성하는 경우 다음 명령을 실행하여 AWS 인증 정보 및 암호화 키 시크릿을 동시에 생성합니다.

      $ oc create secret generic cloud-credentials --namespace openshift-adp --from-file cloud=<path>/openshift_aws_credentials,customer-key=<path>/sse_encoded.key
      Copy to Clipboard Toggle word wrap
    • 기존 설치를 업데이트하는 경우 다음 예와 같이 DataProtectionApplication CR 매니페스트의 cloud-credential 시크릿 블록 값을 편집합니다.

      apiVersion: v1
      data:
        cloud: W2Rfa2V5X2lkPSJBS0lBVkJRWUIyRkQ0TlFHRFFPQiIKYXdzX3NlY3JldF9hY2Nlc3Nfa2V5P<snip>rUE1mNWVSbTN5K2FpeWhUTUQyQk1WZHBOIgo=
        customer-key: v+<snip>TFIiq6aaXPbj8dhos=
      kind: Secret
      # ...
      Copy to Clipboard Toggle word wrap
  3. 다음 예제와 같이 DataProtectionApplication CR 매니페스트의 backupLocations 블록에서 customerKeyEncryptionFile 속성 값을 편집합니다.

    spec:
      backupLocations:
        - velero:
            config:
              customerKeyEncryptionFile: /credentials/customer-key
              profile: default
    # ...
    Copy to Clipboard Toggle word wrap
    주의

    기존 설치에서 시크릿 인증 정보를 올바르게 마운트하려면 Velero 포드를 다시 시작해야 합니다.

    설치가 완료되었으며 OpenShift Container Platform 리소스를 백업하고 복원할 수 있습니다. AWS S3 스토리지에 저장된 데이터는 새 키로 암호화되며 추가 암호화 키 없이는 AWS S3 콘솔 또는 API에서 다운로드할 수 없습니다.

검증

추가 키를 포함하지 않고 암호화된 파일을 다운로드할 수 없는지 확인하려면 테스트 파일을 만들고 업로드한 다음 다운로드하려고 합니다.

  1. 다음 명령을 실행하여 테스트 파일을 생성합니다.

    $ echo "encrypt me please" > test.txt
    Copy to Clipboard Toggle word wrap
  2. 다음 명령을 실행하여 테스트 파일을 업로드합니다.

    $ aws s3api put-object \
      --bucket <bucket> \
      --key test.txt \
      --body test.txt \
      --sse-customer-key fileb://sse.key \
      --sse-customer-algorithm AES256
    Copy to Clipboard Toggle word wrap
  3. 파일을 다운로드해 보십시오. Amazon 웹 콘솔 또는 터미널에서 다음 명령을 실행합니다.

    $ s3cmd get s3://<bucket>/test.txt test.txt
    Copy to Clipboard Toggle word wrap

    파일이 추가 키로 암호화되므로 다운로드에 실패합니다.

  4. 다음 명령을 실행하여 추가 암호화 키로 파일을 다운로드합니다.

    $ aws s3api get-object \
        --bucket <bucket> \
        --key test.txt \
        --sse-customer-key fileb://sse.key \
        --sse-customer-algorithm AES256 \
        downloaded.txt
    Copy to Clipboard Toggle word wrap
  5. 다음 명령을 실행하여 파일 내용을 읽습니다.

    $ cat downloaded.txt
    Copy to Clipboard Toggle word wrap

    출력 예

    encrypt me please
    Copy to Clipboard Toggle word wrap

4.7.1.2.4.1. Velero에서 지원하는 파일의 SSE-C 암호화 키로 파일 다운로드

SSE-C 암호화 키를 확인하는 경우 Velcro로 백업된 파일의 추가 암호화 키로 파일을 다운로드할 수도 있습니다.

절차

  • 다음 명령을 실행하여 Velero에서 백업한 파일의 추가 암호화 키로 파일을 다운로드합니다.
$ aws s3api get-object \
  --bucket <bucket> \
  --key velero/backups/mysql-persistent-customerkeyencryptionfile4/mysql-persistent-customerkeyencryptionfile4.tar.gz \
  --sse-customer-key fileb://sse.key \
  --sse-customer-algorithm AES256 \
  --debug \
  velero_download.tar.gz
Copy to Clipboard Toggle word wrap

4.7.1.3. 데이터 보호 애플리케이션 구성

Velero 리소스 할당을 설정하거나 자체 서명된 CA 인증서를 활성화하여 데이터 보호 애플리케이션을 구성할 수 있습니다.

4.7.1.3.1. 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 및 메모리 요구 사항을 조정해야 할 수 있습니다.

nodeSelector 필드를 사용하여 노드 에이전트를 실행할 수 있는 노드를 선택합니다. nodeSelector 필드는 권장되는 노드 선택 제약 조건의 가장 간단한 형식입니다. 지정된 라벨은 각 노드의 라벨과 일치해야 합니다.

자세한 내용은 노드 에이전트 및 노드 라벨 구성을 참조하십시오.

4.7.1.3.2. 자체 서명된 CA 인증서 활성화

알 수 없는 기관 오류로 서명된 인증서를 방지하려면 DataProtectionApplication CR(사용자 정의 리소스) 매니페스트를 편집하여 오브젝트 스토리지에 자체 서명된 CA 인증서를 활성화해야 합니다.

사전 요구 사항

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

절차

  • DataProtectionApplication CR 매니페스트의 spec.backupLocations.velero.objectStorage.caCert 매개변수 및 spec.backupLocations.velero.config 매개변수를 편집합니다.

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket>
              prefix: <prefix>
              caCert: <base64_encoded_cert_string> 
    1
    
            config:
              insecureSkipTLSVerify: "false" 
    2
    
    ...
    Copy to Clipboard Toggle word wrap
    1
    Base64 인코딩 CA 인증서 문자열을 지정합니다.
    2
    insecureSkipTLSVerify 구성은 "true" 또는 "false" 로 설정할 수 있습니다. "true" 로 설정하면 SSL/TLS 보안이 비활성화됩니다. "false" 로 설정하면 SSL/TLS 보안이 활성화됩니다.

별칭을 생성하여 시스템에 로컬로 설치하지 않고 Velero CLI를 사용할 수 있습니다.

사전 요구 사항

  • cluster-admin 역할의 사용자로 OpenShift Container Platform 클러스터에 로그인해야 합니다.
  • OpenShift CLI(oc)가 설치되어 있어야 합니다.

    1. aliased Velero 명령을 사용하려면 다음 명령을 실행합니다.

      $ alias velero='oc -n openshift-adp exec deployment/velero -c velero -it -- ./velero'
      Copy to Clipboard Toggle word wrap
    2. 다음 명령을 실행하여 별칭이 작동하는지 확인합니다.

      예제

      $ velero version
      Client:
      	Version: v1.12.1-OADP
      	Git commit: -
      Server:
      	Version: v1.12.1-OADP
      Copy to Clipboard Toggle word wrap

    3. 이 명령으로 CA 인증서를 사용하려면 다음 명령을 실행하여 Velero 배포에 인증서를 추가할 수 있습니다.

      $ CA_CERT=$(oc -n openshift-adp get dataprotectionapplications.oadp.openshift.io <dpa-name> -o jsonpath='{.spec.backupLocations[0].velero.objectStorage.caCert}')
      
      $ [[ -n $CA_CERT ]] && echo "$CA_CERT" | base64 -d | oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "cat > /tmp/your-cacert.txt" || echo "DPA BSL has no caCert"
      Copy to Clipboard Toggle word wrap
      $ velero describe backup <backup_name> --details --cacert /tmp/<your_cacert>.txt
      Copy to Clipboard Toggle word wrap
    4. 백업 로그를 가져오려면 다음 명령을 실행합니다.

      $ velero backup logs  <backup_name>  --cacert /tmp/<your_cacert.txt>
      Copy to Clipboard Toggle word wrap

      이러한 로그를 사용하여 백업할 수 없는 리소스에 대한 오류 및 경고를 볼 수 있습니다.

    5. Velero 포드가 다시 시작되면 /tmp/your-cacert.txt 파일이 사라지고 이전 단계의 명령을 다시 실행하여 /tmp/your-cacert.txt 파일을 다시 생성해야 합니다.
    6. 다음 명령을 실행하여 /tmp/your-cacert.txt 파일이 여전히 있는지 확인할 수 있습니다.

      $ oc exec -n openshift-adp -i deploy/velero -c velero -- bash -c "ls /tmp/your-cacert.txt"
      /tmp/your-cacert.txt
      Copy to Clipboard Toggle word wrap

향후 OpenShift API for Data Protection(OADP) 릴리스에서는 이 단계가 필요하지 않도록 Velero 포드에 인증서를 마운트할 계획입니다.

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

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

사전 요구 사항

  • OADP Operator를 설치해야 합니다.
  • 오브젝트 스토리지를 백업 위치로 구성해야 합니다.
  • 스냅샷을 사용하여 PV를 백업하는 경우 클라우드 공급자는 기본 스냅샷 API 또는 CSI(Container Storage Interface) 스냅샷을 지원해야 합니다.
  • 백업 및 스냅샷 위치에서 동일한 자격 증명을 사용하는 경우 기본 이름 cloud-credentials 를 사용하여 보안을 생성해야 합니다.
  • 백업 및 스냅샷 위치에서 다른 자격 증명을 사용하는 경우 백업 및 스냅샷 위치 자격 증명에 대한 별도의 프로필이 포함된 기본 이름 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:
      name: <dpa_sample>
      namespace: openshift-adp 
    1
    
    spec:
      configuration:
        velero:
          defaultPlugins:
            - openshift 
    2
    
            - aws
          resourceTimeout: 10m 
    3
    
        nodeAgent: 
    4
    
          enable: true 
    5
    
          uploaderType: kopia 
    6
    
          podConfig:
            nodeSelector: <node_selector> 
    7
    
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket_name> 
    8
    
              prefix: <prefix> 
    9
    
            config:
              region: <region>
              profile: "default"
              s3ForcePathStyle: "true" 
    10
    
              s3Url: <s3_url> 
    11
    
            credential:
              key: cloud
              name: cloud-credentials 
    12
    
      snapshotLocations: 
    13
    
        - name: default
          velero:
            provider: aws
            config:
              region: <region> 
    14
    
              profile: "default"
            credential:
              key: cloud
              name: cloud-credentials 
    15
    Copy to Clipboard Toggle word wrap
    1
    OADP의 기본 네임스페이스는 openshift-adp 입니다. 네임스페이스는 변수이며 구성 가능합니다.
    2
    openshift 플러그인은 필수입니다.
    3
    Velero CRD 가용성, volumeSnapshot 삭제, 백업 리포지토리 가용성과 같이 시간 초과가 발생하기 전에 여러 Velero 리소스를 대기하는 분을 지정합니다. 기본값은 10m입니다.
    4
    관리 요청을 서버로 라우팅하는 관리 에이전트입니다.
    5
    nodeAgent 를 활성화하고 파일 시스템 백업을 수행하려면 이 값을 true 로 설정합니다.
    6
    업로드로 kopia 또는 restic 을 입력합니다. 설치 후에는 선택을 변경할 수 없습니다. 기본 제공 DataMover의 경우 Kopia를 사용해야 합니다. nodeAgent 는 데몬 세트를 배포합니다. 즉, nodeAgent Pod가 각 작동 중인 노드에서 실행됩니다. Backup CR에 spec.defaultVolumesToFsBackup: true 를 추가하여 파일 시스템 백업을 구성할 수 있습니다.
    7
    Kopia 또는 Restic을 사용할 수 있는 노드를 지정합니다. 기본적으로 Kopia 또는 Restic은 모든 노드에서 실행됩니다.
    8
    버킷을 백업 스토리지 위치로 지정합니다. 버킷이 Velero 백업 전용 버킷이 아닌 경우 접두사를 지정해야 합니다.
    9
    버킷이 여러 용도로 사용되는 경우 Velero 백업의 접두사를 지정합니다.
    10
    S3 오브젝트에 대해 경로 스타일 URL을 강제 적용할지 여부를 지정합니다(부울). AWS S3에는 필요하지 않습니다. S3 호환 스토리지에만 필요합니다.
    11
    백업을 저장하는 데 사용 중인 오브젝트 저장소의 URL을 지정합니다. AWS S3에는 필요하지 않습니다. S3 호환 스토리지에만 필요합니다.
    12
    생성한 Secret 오브젝트의 이름을 지정합니다. 이 값을 지정하지 않으면 기본값 cloud-credentials 가 사용됩니다. 사용자 지정 이름을 지정하면 백업 위치에 사용자 지정 이름이 사용됩니다.
    13
    CSI 스냅샷 또는 FSB(File System Backup)를 사용하여 PV를 백업하지 않는 한 스냅샷 위치를 지정합니다.
    14
    스냅샷 위치는 PV와 동일한 리전에 있어야 합니다.
    15
    생성한 Secret 오브젝트의 이름을 지정합니다. 이 값을 지정하지 않으면 기본값 cloud-credentials 가 사용됩니다. 사용자 지정 이름을 지정하면 스냅샷 위치에 사용자 지정 이름이 사용됩니다. 백업 및 스냅샷 위치에서 다른 인증 정보를 사용하는 경우 credentials-velero 파일에 별도의 프로필을 생성합니다.
  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.7.1.4.1. 노드 에이전트 및 노드 라벨 구성

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.7.1.5. MD5 체크섬 알고리즘을 사용하여 백업 스토리지 위치 구성

DPA(Data Protection Application)에서 백업 스토리지 위치(BSL)를 구성하여 Amazon Simple Storage Service(Amazon S3) 및 S3 호환 스토리지 공급자 모두에 MD5 체크섬 알고리즘을 사용할 수 있습니다. 체크섬 알고리즘은 Amazon S3에 오브젝트를 업로드하고 다운로드하는 체크섬을 계산합니다. 다음 옵션 중 하나를 사용하여 DPA의 spec.backupLocations.velero.config.checksumAlgorithm 섹션에서 checksumAlgorithm 필드를 설정할 수 있습니다.

  • CRC32
  • CRC32C
  • SHA1
  • SHA256
참고

checksumAlgorithm 필드를 빈 값으로 설정하여 MD5 체크섬 검사를 건너뛸 수도 있습니다.

checksumAlgorithm 필드의 값을 설정하지 않으면 기본값은 CRC32 로 설정됩니다.

사전 요구 사항

  • OADP Operator가 설치되어 있습니다.
  • Amazon S3 또는 S3 호환 오브젝트 스토리지를 백업 위치로 구성했습니다.

절차

  • 다음 예와 같이 DPA에서 BSL을 구성합니다.

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

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: test-dpa
      namespace: openshift-adp
    spec:
      backupLocations:
      - name: default
        velero:
          config:
            checksumAlgorithm: "" 
    1
    
            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:
        velero:
          defaultPlugins:
          - openshift
          - aws
          - csi
    Copy to Clipboard Toggle word wrap

    1
    checksumAlgorithm 을 지정합니다. 이 예에서는 checksumAlgorithm 필드가 빈 값으로 설정됩니다. 다음 목록에서 옵션을 선택할 수 있습니다. CRC32 , CRC32 C,SHA1,SHA256.
중요

If you are using Noobaa as the object storage provider, and you do not set the spec.backupLocations.velero.config.checksumAlgorithm field in the DPA, an empty value of checksumAlgorithm is added to the BSL configuration.

빈 값은 DPA를 사용하여 생성된 BSL에만 추가됩니다. 이 값은 다른 방법을 사용하여 BSL을 생성하는 경우 추가되지 않습니다.

4.7.1.6. 클라이언트 버스트 및 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.7.1.7. 두 개 이상의 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.7.1.7.1. DataProtectionApplication CR에서 CSI 활성화

CSI 스냅샷을 사용하여 영구 볼륨을 백업하기 위해 DataProtectionApplication CR(사용자 정의 리소스)에서 CSI(Container Storage Interface)를 활성화합니다.

사전 요구 사항

  • 클라우드 공급자는 CSI 스냅샷을 지원해야 합니다.

절차

  • 다음 예제와 같이 DataProtectionApplication CR을 편집합니다.

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - csi 
    1
    Copy to Clipboard Toggle word wrap
    1
    csi 기본 플러그인을 추가합니다.
4.7.1.7.2. 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