COS의 경우 Hyper Protect Crypto Services 에서 Key Protect 로 마이그레이션하기

IBM Cloud Object Storage s3fs 플러그인에 대한 Hyper Protect Crypto Services (HPCS) 암호화를 마이그레이션하여 Key Protect (KP)를 대신 사용하세요.

시작하기 전에

시작하기 전에 다음 단계에 따라 HPCS 대신 Key Protect 을 사용하도록 COS 플러그인을 마이그레이션해야 하는지 확인합니다.

  1. HPCS 및 KP 인스턴스의 CRN을 가져옵니다. 각 인스턴스에 대해 다음 명령을 실행합니다.

    ibmcloud resource service-instance <instance-name>
    

    출력 예.

    Name:  my-hpcs-instance
    ID:    crn:v1:bluemix:public:kms:us-south:a/1ab234cd5e678fgh9a0123bc4de567:f89gh01a-bcd2-3456-e789-f0g1234h5ab6::
    
  2. 클러스터에서 ibm/ibmc-s3fs 유형인 모든 비밀을 나열합니다.

    kubectl get secrets --field-selector type=ibm/ibmc-s3fs
    
  3. ibm/ibmc-s3fs 비밀에 대해 비밀 내용을 검토하고 data 섹션에서 kp-root-key-crn 루트 키를 찾습니다. hs-crypto 문자열이 포함된 kp-root-key-crn 값의 시크릿은 HPCS 루트 키이며 마이그레이션해야 함을 나타냅니다. 마이그레이션할 비밀 목록을 저장하세요. hs-crypto 을 포함하는 kp-root-key-crn 값이 없는 경우 마이그레이션 단계를 수행할 필요가 없습니다.

마이그레이션을 위한 전제 조건

시작하기 전에 다음 단계를 완료하세요.

  1. 클러스터에 COS 헬름 차트가 설치되어 있는 경우 최신 버전이 실행되는지 확인하세요.
  2. 아직 없는 경우 새 Key Protect 인스턴스와 새 Key Protect 키 세트를 만들어 암호화하세요. Key Protect 인스턴스가 클러스터와 동일한 지역에 생성되었는지 확인합니다. Key Protect 인스턴스가 COS 리소스에 액세스하는 데 필요합니다.
  3. Key Protect 에 대한 서비스 간 인증을 생성하여 COS 리소스에 액세스합니다. 소스 서비스를 Key Protect, 대상 서비스를 COS로 설정하고 액세스 수준을 리더 이상으로 설정합니다.

마이그레이션 단계

COS 플러그인을 Key Protect 로 마이그레이션하려면 다음 단계를 따르세요.

모든 COS 비밀 및 PVC가 특정 네임스페이스에 있는 경우 다음 단계를 해당 네임스페이스로 범위를 지정할 수 있습니다. 그렇지 않으면 클러스터의 모든 네임스페이스를 검색하세요.

1단계. 마이그레이션할 PVC 목록

마이그레이션해야 하는 PVC를 결정합니다.

  1. 클러스터 또는 관련 네임스페이스에 있는 모든 PVC를 나열합니다.
    oc get pvc [-n <namespace>]
    
  2. 각 PVC를 설명합니다.
    oc describe pvc <pvc-name>
    
  3. PVC 출력에서 주석 섹션을 찾아 volume.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fs 이 나열되어 있는지 확인합니다.
  4. 주석이 나열되어 있으면 ibm.io/secret-name 주석을 찾습니다.
  5. volume.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fs 어노테이션이 나열되어 있고 ibm.io/secret-name 값이 HPCS 루트 키가 있는 것으로 확인된 비밀과 일치하는 경우 PVC를 마이그레이션해야 합니다. PVC 이름에 주목하세요.
  6. 각 PVC에 대해 이 단계를 반복합니다. 마이그레이션할 PVC 목록을 저장합니다.

2단계. 마이그레이션할 파드 목록

마이그레이션해야 하는 파드를 결정합니다.

  1. 클러스터 또는 관련 네임스페이스에 있는 모든 파드를 나열합니다.
    oc get pods [-n <namespace>]
    
  2. 각 포드에 대해 설명합니다.
    oc describe pod <pod-name>
    
  3. 출력에서 볼륨 섹션을 찾아 각 PersistentVolumeClaim 의 이름을 확인합니다. 출력에 있는 PVC 중 마이그레이션할 PVC 목록에도 포함된 것이 있으면 해당 파드를 마이그레이션해야 합니다. 포드 이름을 기록해 두세요.
  4. 각 포드에 대해 이 단계를 반복합니다. 마이그레이션할 파드 목록을 저장합니다.

3단계. 새로운 비밀 만들기

HPCS 루트 키 대신 Key Protect 루트 키를 사용하는 새 비밀번호를 만듭니다.

  1. Key Protect 인스턴스의 CRN을 가져와 base64 으로 인코딩합니다.

    ibmcloud resource service-instance <kp-instance-name>
    
    echo  -n "<root_key_CRN>" | base64
    
  2. 마이그레이션해야 하는 각 시크릿에 대해 시크릿 yaml을 받습니다.

    oc get secret <secret-name> -o yaml
    
  3. Yaml을 파일에 복사하여 새 비밀번호를 만듭니다. kp-root-key-crn 대신 Key Protect 인스턴스의 base64 인코딩된 CRN을 가리키도록 변경합니다. 새 비밀과 이전 비밀을 구분할 수 있도록 비밀 이름 끝에 문자열을 추가합니다.

    PVC를 다시 만들 때는 PVC에서 사용하는 비밀의 새 복사본을 지정해야 합니다. 새 비밀의 이름이 이전 비밀과 일치하면서도 두 비밀을 구분할 수 있는지 확인하세요.

  4. 비밀을 적용하세요.

    kubectl apply -f <secret-file-name>
    
  5. 마이그레이션해야 하는 각 비밀에 대해 이 단계를 반복합니다.

4단계. PVC 다시 만들기

새로운 비밀을 가리키도록 PVC를 다시 만들 수 있습니다.

  1. 마이그레이션해야 하는 각 PVC에 대해 PVC yaml을 가져옵니다.

    oc get PVC <pvc-name> -o yaml
    
  2. Yaml을 파일에 복사하여 새 PVC를 만듭니다. ibm.io/secret-nameibm.io/secret-namespace 주석을 변경하여 이전에 나열된 비밀에 해당하는 새 비밀을 가리키도록 합니다. PVC 이름 끝에 문자열을 추가하여 이전 PVC와 구분할 수 있도록 합니다.

  3. 새 PVC를 적용합니다.

    oc apply -f <pvc-file-name>
    
  4. PVC의 세부 정보를 가져와서 바운드 상태인지 확인합니다.

    oc get PVC <pvc>
    
  5. 마이그레이션해야 하는 각 PVC에 대해 이 단계를 반복합니다.

5단계. 포드 업데이트

새 PVC를 가리키도록 파드를 업데이트합니다.

  1. 사용된 리소스 유형을 확인합니다. 출력에서 ownerReferences 섹션을 찾아 리소스의 종류와 나열된 리소스의 이름을 기록합니다.
    oc describe pod <pod-name>
    
  2. 섹션에 나열된 리소스를 기반으로 업데이트 전략을 따르세요 ownerReferences 섹션에 나열된 리소스를 기반으로 업데이트 전략을 따르세요.

수동으로 포드 다시 생성하기

  1. 포드 yaml을 가져옵니다.

    oc describe <resource-type> <resource-name> -o yaml
    
  2. Yaml을 파일에 복사하여 새 파드를 만듭니다. Yaml의 볼륨 섹션에서 다음을 변경합니다 PersistentVolumeClaim 를 이전에 나열된 PVC에 해당하는 새 PVC를 가리키도록 변경합니다. 새 리소스 이름 끝에 문자열을 추가하여 이전 리소스와 구분할 수 있도록 합니다.

  3. 새 yaml 파일을 적용합니다.

    oc apply -f <pod-yaml-file>
    
  4. 팟(Pod)이 실행 중인지 확인하십시오.

    oc get pods
    
  5. 수동으로 마이그레이션해야 하는 각 포드에 대해 이 단계를 반복합니다.