IBM Cloud Object Storage 인스턴스 설정

IBM Cloud Object Storage는 앱에 마운트할 수 있는 지속적 고가용성 스토리지입니다. 플러그인은 Cloud Object Storage 버킷을 클러스터의 팟(pod)에 연결하는 Kubernetes Flex-Volume 플러그인입니다. IBM Cloud Object Storage에 저장된 정보는 전송 중 및 저장 중에 암호화되어 여러 지리적 위치에 분산되며 REST API를 사용하여 HTTP를 통해 액세스할 수 있습니다.

공용 네트워크 액세스 없이 사설 클러스터에서 IBM Cloud Object Storage를 사용할 경우 HMAC 인증을 위해 IBM Cloud Object Storage 서비스 인스턴스를 설정해야 합니다. HMAC 인증을 사용하지 않을 경우 사설 클러스터에서 올바르게 작동하도록 플러그인의 포트 443에서 모든 아웃바운드 네트워크 트래픽을 열어야 합니다.

IBM Cloud Object Storage 인스턴스 생성하기

클러스터에서 오브젝트 스토리지 사용을 시작하려면 우선 계정에서 IBM Cloud Object Storage 서비스 인스턴스를 프로비저닝해야 합니다.

IBM Cloud Object Storage 플러그인은 s3 API 엔드포인트와 함께 작동합니다. 예를 들어, IBM Cloud Object Storage 서비스 인스턴스 대신 Minio와 같은 로컬 Cloud Object Storage 서버를 사용하거나, 다른 클라우드 제공업체에서 설정한 s3 API 엔드포인트에 연결할 수도 있습니다.

다음 단계를 수행하여 IBM Cloud Object Storage 서비스 인스턴스를 작성하십시오. 로컬 Cloud Object Storage 서버 또는 다른 s3 API 엔드포인트를 사용하려는 경우, 제공자 문서를 참조하여 Cloud Object Storage 인스턴스를 설정하십시오.

  1. IBM Cloud Object Storage 카탈로그 페이지를 여십시오.
  2. 서비스 인스턴스의 이름(예: cos-backup)을 입력하고 클러스터가 속한 것과 동일한 리소스 그룹을 선택하십시오. 클러스터의 리소스 그룹을 보려면 ibmcloud ks cluster get --cluster CLUSTER_NAME_OR_ID를 실행하십시오.
  3. 요금 정보를 확인하려면 요금제 옵션을 살펴보고 원하는 요금제를 선택하세요.
  4. 작성을 클릭하십시오. 서비스 세부사항 페이지가 열립니다.
  5. 계속해서 클러스터와 함께 사용할 Object Storage를 설정하려면 서비스 인증 정보 작성을 참조하십시오.

IBM Cloud Object Storage 서비스 인증 정보 작성

시작하기 전에 오브젝트 스토리지 서비스 인스턴스를 작성하십시오.

  1. Object Storage 인스턴스에 대한 서비스 세부사항 페이지의 탐색에서 서비스 인증 정보를 클릭하십시오.
  2. 새 인증 정보를 클릭하십시오. 대화 상자가 열립니다.
  3. 인증 정보의 이름을 입력하십시오.
  4. 역할 드롭 다운 목록에서 클러스터의 스토리지 사용자가 액세스 권한을 갖도록 할 조치에 대한 Object Storage 액세스 역할을 선택하십시오. ** 동적 프로비저닝 기능을 사용하려면 **작성자auto-create-bucket 이상의 서비스 액세스 역할을 선택해야 합니다. Reader를 선택하는 경우에는 해당 인증 정보를 사용하여 IBM Cloud Object Storage에서 버킷을 작성하고 여기에 데이터를 쓸 수 없습니다.
  5. 선택 사항: [ 고급 옵션 ]을 클릭하고 [ HMAC 자격 증명 포함 ] 토글을 [ 켜기 ]로 설정하여 IBM Cloud Object Storage 서비스용 HMAC 자격 증명을 생성합니다. HMAC 인증은 만료되거나 무작위로 작성된 OAuth2 토큰의 오용을 방지함으로써 OAuth2 인증에 보안 계층을 추가합니다. 중요: 공용 액세스가 없는 개인 전용 클러스터가 있는 경우, 사설 네트워크를 통해 IBM Cloud Object Storage 서비스에 액세스할 수 있도록 HMAC 인증을 사용해야 합니다.
  6. 추가 를 클릭하십시오. 새 인증 정보는 서비스 인증 정보 표에 있습니다.
  7. 인증 정보 보기를 클릭하십시오.
  8. 다음 사항을 유의하십시오. **apikey**OAuth2 토큰을 사용하여 IBM Cloud Object Storage 서비스에 인증하는 방법을 참고하십시오. HMAC 인증의 경우, cos_hmac_keys 섹션에서 access_key_idsecret_access_key 를 확인하십시오.
  9. IBM Cloud Object Storage 서비스 인스턴스에 액세스가 가능하도록 클러스터 내의 Kubernetes 시크릿에 서비스 인증 정보를 저장하십시오.

오브젝트 스토리지 서비스 인증 정보의 시크릿 작성

IBM Cloud Object Storage 서비스 인스턴스에 액세스하여 데이터를 읽고 쓰려면 Kubernetes 시크릿에 서비스 인증 정보를 안전하게 저장해야 합니다. IBM Cloud Object Storage 플러그인은 버킷에 대한 모든 읽기 또는 쓰기 오퍼레이션에 이러한 인증 정보를 사용합니다.

다음 단계를 수행하여 IBM Cloud Object Storage 서비스 인스턴스의 인증 정보에 대한 Kubernetes 시크릿을 작성하십시오. 로컬 Cloud Object Storage 서버 또는 다른 s3 API 엔드포인트를 사용하려는 경우 적절한 인증 정보를 사용하여 Kubernetes 시크릿을 작성하십시오.

전제조건

  • 클러스터에 대해 관리자 서비스 액세스 역할이 있는지 확인하십시오.
  • KMS 제공자를 설정하십시오.
  • 다음 항목을 가져옵니다 apikey, 또는 access_key_id 그리고 secret_access_key IBM Cloud Object Storage 서비스 자격 증명을 가져옵니다. 서비스 인증 정보는 앱이 수행해야 하는 버킷 오퍼레이션에 대해 충분해야 합니다. 예를 들어, 앱이 버킷에서 데이터를 읽는 경우, 시크릿에 표시된 서비스 자격 증명에는 최소한 ‘Reader’ 권한이 부여되어 있어야 합니다.

클러스터에서 오브젝트 스토리지 시크릿 작성

다음 단계를 완료하여 IBM Cloud Object Storage에 대한 클러스터에서 시크릿을 작성하십시오.

클러스터의 PVC에서 새 버킷을 작성할 때 Key Protect 암호화를 통합하려면 IBM Cloud Object Storage 시크릿 을 작성할 때 루트 키 CRN을 포함해야 합니다. Key Protect 암호화를 기존 버킷에 추가할 수 없습니다. 새 버킷을 작성하는 경우에만 암호화를 사용할 수 있습니다. 암호화에 사용되는 루트 키가 삭제되면 연관된 버킷의 모든 파일에 액세스할 수 없습니다.

  1. IBM Cloud Object Storage 서비스 인스턴스의 GUID를 가져오십시오.

    ibmcloud resource service-instance <service_name> | grep GUID
    
  2. 서비스 인증 정보를 저장하기 위한 Kubernetes 시크릿을 작성하십시오. 다음 예제 중 하나를 선택하여 시크릿을 작성하십시오.

    • API 키를 사용하는 create secret 명령의 예입니다.
        kubectl create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=api-key=<api_key> --from-literal=service-instance-id=<service_instance_guid>
        ```
    * HMAC 인증을 사용하는 `create secret` 명령의 예입니다.
    ```sh {: pre}
        kubectl create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=access-key=<access_key_ID> --from-literal=secret-key=<secret_access_key>    
        ```
    * KMS 제공자를 사용하여 암호화를 사용으로 설정하기 위한 예제 시크릿 구성 파일입니다.
        1. 다음 YAML을 파일에 저장하십시오.
            ```yaml {: codeblock}
            apiVersion: v1
            data:
                access-key: xxx
                secret-key: xxx
                kp-root-key-crn: <CRN> # Key Protect or HPCS root key crn in base64 encoded format
            kind: Secret
            metadata:
                name: cos-write-access
            type: ibm/ibmc-s3fs
            ```
            `api-key`
            :   이전에 IBM Cloud Object Storage 서비스 인증 정보에서 검색한 API 키를 입력하십시오. HMAC 인증을 사용하려면 `access-key` 및 `secret-key`를 대신 지정하십시오.
    
            `access-key`
            :   이전에 IBM Cloud Object Storage 서비스 인증 정보에서 검색한 액세스 키 ID를 입력하십시오. OAuth2 인증을 사용하려면 `api-key`를 대신 지정하십시오.
    
            `secret-key`
            :   이전에 IBM Cloud Object Storage 서비스 인증 정보에서 검색한 시크릿 액세스 키를 입력하십시오. OAuth2 인증을 사용하려면 `api-key`를 대신 지정하십시오.
    
            `service-instance-id`
            :   이전에 검색한 IBM Cloud Object Storage 서비스 인스턴스의 GUID를 입력하십시오.
    
            `kp-root-key-crn`
            :   base64 인코딩된 Key Protect 루트 키 CRN을 입력하여 Key Protect 암호화를 사용하십시오.
    
        1. 이 비결을 클러스터에 적용하세요.
            ```sh {: pre}
            kubectl apply -f <secret_name>
            ```
    
    
  3. 클러스터의 시크릿을 가져오고 출력을 확인하십시오.

    kubectl get secret
    

    출력 예

    NAME                  TYPE                                  DATA   AGE
    cos-write-access      ibm/ibmc-s3fs                         2      7d19h
    default-au-icr-io     kubernetes.io/dockerconfigjson        1      55d
    default-de-icr-io     kubernetes.io/dockerconfigjson        1      55d
    ...
    
  4. IBM Cloud Object Storage 플러그인을 설치하십시오. 또는 플러그인을 이미 설치한 경우에는 IBM Cloud Object Storage 버킷에 대한 구성을 결정하십시오.

  5. 선택사항: 시크릿을 기본 스토리지 클래스에 추가하십시오. 스토리지 클래스 참조

COS 스토리지에 신뢰할 수 있는 프로필 할당하기

신뢰할 수 있는 프로필을 사용하여 스토리지 솔루션을 비롯한 계정의 리소스에 대한 액세스 권한을 다른 IBM Cloud ID에 부여할 수 있습니다. 신뢰할 수 있는 프로필은 액세스 제어를 중앙 집중화하고, 수명이 긴 API 키가 필요하지 않으며, 특정 작업에 필요한 최소한의 권한으로만 범위를 지정할 수 있습니다. 자세한 내용은 스토리지 구성 요소에 대한 신뢰할 수 있는 프로필 구성을 참조하세요.

제한사항

  • IBM Cloud Object Storage는 s3fs-fuse 파일 시스템을 기반으로 합니다. s3fs-fuse 저장소에서 제한 사항 목록을 확인할 수 있습니다.
  • 루트가 아닌 사용자가 IBM Cloud Object Storage의 파일에 액세스하려면 배치에서 runAsUserfsGroup 값을 동일한 값으로 설정해야 합니다.