카탈로그 자산 마이그레이션 ( IBM Knowledge Catalog )

명령을 cpd-cli 사용하여 단일 Cloud Pak for Data 클러스터 내에서 또는 서로 다른 클러스터 간에 카탈로그 자산을 내보내고 가져올 수 있습니다.

전제조건

카탈로그를 마이그레이션하기 전에 거버넌스 아티팩트를 반드시 마이그레이션해야 용어 할당, 데이터 클래스 할당 및 자산-아티팩트 간의 관계가 정상적으로 유지됩니다. 이를 준수하지 않을 경우, 시스템 간 ID가 일치하지 않아 시스템이 정상적으로 작동하지 않거나 오류가 발생할 수 있습니다.

필수 역할
이 태스크를 완료하려면 다음 역할 중 하나가 있어야 합니다.
  • 클러스터 관리자
  • 인스턴스 관리자
제한사항
  • 데이터 품질 규칙과 연결된 데이터 품질 정보는 내보내거나 가져올 수 없습니다.
  • 카탈로그 설정은 내보내거나 가져올 수 없습니다.

시작하기 전에

내보내기 및 가져오기 유틸리티를 사용하기 전에 다음 작업을 완료하십시오:

  1. 사용자 작업용 컴퓨터에 cpd-cli 프로필을 생성했는지 확인하십시오. 자세한 내용은 관리 cpd-cli 명령어를 사용하기 위한 프로필 만들기를 참조하십시오.

  2. 인스턴스의 operands 프로젝트에 필요한 PVC(Persistent oc get pvc export-import-pvc --namespace=${PROJECT_CPD_INST_OPERANDS} Volume Claim)가 있는지 확인하십시오. 해당 PVC가 없는 경우, ‘ Cloud Pak for Data ’ 내보내기 및 가져오기 유틸리티 사용 준비’를 참조하십시오.

  3. 사용자 컴퓨터에서 내보내기/가져오기 유틸리티를 초기화하십시오. 자세한 내용은 ‘내보내기/가져오기 유틸리티 초기화’를 참조하십시오.

  4. 다음 명령을 실행하여 보조 catalog-api-aux 모듈을 사용할 수 있는지 확인하십시오:

    cpd-cli export-import list aux-modules \
    --namespace=${PROJECT_CPD_INST_OPERANDS} \
    --profile=${CPD_PROFILE_NAME} \
    --arch=${CPU_ARCH}
    

지원되는 자산 유형

다음과 같은 카탈로그 자산을 내보내고 가져올 수 있습니다:

  • connection
  • data_asset
  • BI 보고서
  • 논리적 데이터 모델(LDM)
  • 물리적 데이터 모델(PDM)
  • 사용자 정의 자산 유형
경고:

현재 데이터 소스 정의의 마이그레이션은 지원되지 않습니다. 자세한 내용은 ‘ IBM Knowledge Catalog 의 알려진 문제’를 참조하십시오.

내보내기 범위 선택

모든 카탈로그, 프로젝트 및 스페이스의 자산을 모두 내보내려면 ‘카탈로그 자산 내보내기’로 이동하세요.

내보낼 자산을 선택하려면 다음 단계를 따르세요:

  1. YAML 파일의 이름을 지정하십시오:

    export OVERRIDE_YAML_FILE=<fully-qualified-file-name>
    
  2. 다음과 같은 구조로 파일을 export.yaml 생성하십시오:

    catalog-api-aux:
      # exportspec specifies which assets to export
       exportspec: 'EXPORT_JSON_STRING'
    
  3. 변수를 EXPORT_JSON_STRING JSON 문자열로 대체하여 내보낼 자산을 지정하십시오. 특정 워크스페이스의 모든 자산을 내보내려면, 코드는 다음 예시와 비슷하게 작성하면 됩니다:

    catalog-api-aux:
       exportspec: '{"catalog": {    "container_specs": [{    "guids": ["08f248d3-0c5f-4193-a16d-e3c0cc7f7d94"],    "all_assets": true}  ]} }'
    
    주의: JSON 문자열은 한 줄에 작성해야 하며, 작은 따옴표로 묶어야 합니다. 이해를 돕기 위해, 다음 예시에서는 JSON 문자열을 각 줄에 하나씩 나누어 표시했습니다.

    특정 자산을 내보내려면 다음 예제의 코드를 사용하세요:

    • 지정된 카탈로그, 프로젝트 또는 스페이스 목록에서 모든 자산을 내보내려면:

      '{
        "project": { <<---- this is the type of asset container: catalog, project, or space
          "container_specs": [
            {
              "guids": [
                "00cf5b102-17b3-4638-95df-309a2a443137",  <<---- these are the ids of asset containers
                "e14a187d-4fc8-4a5d-aee1-e2ad4ec60b29"
              ],
              "all_assets": true
            }
          ]
        },
        "catalog": { <<---- this is the type of asset container: catalog, project, or space
          "container_specs": [
            {
              "guids": [
                "ab3d18a4-015f-4bb1-ae13-4ee9faf0382a"  <<---- these are the ids of asset containers
              ],
              "all_assets": true
            }
          ]
        }
      }'
      
    • 지정된 카탈로그, 프로젝트 또는 스페이스 목록에서 특정 자산을 내보내려면:

      '{
        "space": { <<---- this is the type of asset container: catalog, project, or space
          "container_specs": [
            {
              "guids": [
                "4b014869-fc0e-4919-bc93-3fa8c40bcd37"  <<---- this is the id of asset container
              ],
              "asset_specs": {
                "asset_ids": [
                  "e14a187d-4fc8-4a5d-aee1-e2ad4ec60b29",  <<---- these are the ids of assets
                  "e2395865-5503-49da-b708-cfbf2fb1b646"
                ]
              }
            }
          ]
        }
      }'
      
    • 지정된 카탈로그, 프로젝트 또는 스페이스 목록에서 특정 유형의 자산을 내보내려면:

      '{
        "space": { <<---- this is the type of asset container: catalog, project, or space
          "container_specs": [
            {
              "guids": [
                "4b014869-fc0e-4919-bc93-3fa8c40bcd37",  <<---- these are the ids of asset containers
                "866613f8-4102-4cd2-be6e-ee46ea6c468b"
              ],
              "asset_specs": {
                "asset_types": [
                  "data_asset",  <<---- these are the types of assets
                  "notebook"
                ]
              }
            }
          ]
        }
      }'
      
    • 지정된 카탈로그, 프로젝트 또는 스페이스 목록에서 접두사 뒤에 resource_key 와일드카드가 붙은 이름과 일치하는 에셋을 내보냅니다:

      '{
        "space": { <<---- this is the type of asset container: catalog, project, or space
          "container_specs": [
            {
              "guids": [
                "4b014869-fc0e-4919-bc93-3fa8c40bcd37",  <<---- these are the ids of asset containers
                "866613f8-4102-4cd2-be6e-ee46ea6c468b"
              ],
              "asset_specs": {
                "resource_keys": [
                  "inst_id1:/SCHEMA1/*",  <<---- these are the resource_keys of assets
                  "inst_id1:/SCHEMA2/*"
                ]
              }
            }
          ]
        }
      }' 
      

카탈로그 자산 내보내기

IBM Knowledge Catalog 서비스에서 카탈로그 자산을 내보내려면 다음 작업을 수행하십시오:

  1. 내보내기 작업의 이름을 지정하십시오:

    export EXPORT_NAME=<name>
    
  2. 명령줄 cpd-cli 인터페이스가 설치된 디렉터리로 이동한 다음, 사용 중인 환경에 맞는 export 명령을 실행하십시오:

    • 모든 카탈로그, 프로젝트 및 스페이스의 모든 자산을 내보내려면 다음 명령어를 사용하세요:
      cpd-cli export-import export create ${EXPORT_NAME} -n ${PROJECT_CPD_INST_OPERANDS} \
        --component catalog-api \
        --profile=${CPD_PROFILE_NAME}
      
    • 내보낼 자산을 선택하려면, 다음 명령어의 ‘내보내기 범위 선택’ 단계에서 생성된 YAML 파일을 참조하십시오:
      cpd-cli export-import export create ${EXPORT_NAME} -n ${PROJECT_CPD_INST_OPERANDS} \
        --component catalog-api \
        --values ${OVERRIDE_YAML_FILE} \
        --profile=${CPD_PROFILE_NAME}
      
  3. 내보내기가 완료될 때까지 기다려 주세요. 다음 명령어를 사용하여 내보내기 상태를 확인할 수 있습니다:

    cpd-cli export-import export status ${EXPORT_NAME} -n ${PROJECT_CPD_INST_OPERANDS} \
    --profile=${CPD_PROFILE_NAME}
    
  4. 내보내기 결과 다운로드:

    cpd-cli export-import export download ${EXPORT_NAME} -n ${PROJECT_CPD_INST_OPERANDS} \
    --profile=${CPD_PROFILE_NAME}
    

    내보낸 패키지의 이름은 다음과 같은 형식을 따릅니다: cpd-exports-<export_name>-<timestamp>-data.tar

  5. 환경 변수를 설정하여 내보낼 패키지 이름을 정의합니다:

    export WKC_ASSET_EXPORT=<export_file_name>
    

가져오기 범위 선택

모든 카탈로그, 프로젝트 및 스페이스의 자산을 모두 가져오려면 ‘카탈로그 자산 가져오기’ 단계로 이동하세요.

가져올 자산을 직접 선택하려면, 가져오기 사양을 포함한 YAML 파일을 생성하고 다음 단계를 따르세요:

  1. 다음과 같은 구조로 파일을 import.yaml 생성하십시오:

    catalog-api-aux:
      # importspec specifies which assets to import
      importspec: 'IMPORT_JSON_STRING'
    
  2. 변수를 IMPORT_JSON_STRING 가져올 자산을 지정하는 JSON 문자열로 대체하십시오. 지정한 사용자는 admin_username 가져온 자산의 소유자가 되며, 반드시 인스턴스 관리자로 설정해야 합니다.

    예:

    catalog-api-aux:
      admin_username: cpadmin
      importspec: '{"catalog": {    "container_specs": [{    "guids": ["08f248d3-0c5f-4193-a16d-e3c0cc7f7d94"],    "all_assets": true}  ]} }'
    
    

    YAML 파일에 다음 가져오기 설정을 추가하여 가져올 자산을 선택하거나 자산의 소유권을 변경할 수 있습니다:

    • containerIds: 특정 소스 카탈로그를 새 클러스터 내의 특정 기존 컨테이너로 가져옵니다. 이 값은 소스:대상 형식의 JSON 맵입니다.

      예:

      '{ "containerIds": { "default": "<target-id1>", "<original-id>": "<target-id2>" } }'
      
    • newContainerNameOverrides: 기존 컨테이너를 새 컨테이너로 가져옵니다. 컨테이너를 생성하기 전에 특정 이름을 지정할 수 있습니다. 그렇지 않으면 새 컨테이너에는 기본 이름이 지정됩니다. 이 값은 소스:대상 형식의 JSON 맵입니다.

      예:

      '{ "newContainerNameOverrides": { "<source-id1>": "<target-name1>", "<source-id2>": "<target-name2>" } }'
      
    • members: 카탈로그를 가져올 때 가져온 자산의 기본 멤버십을 설정합니다. 카탈로그는 원하는 자산 멤버십 설정을 반영하도록 자체 멤버십 설정을 통해 자동으로 업데이트됩니다. 기존 회원 정보는 삭제되고, 지정된 그룹이 회원으로 설정됩니다. 이 항목은 인스턴스 관리자로 admin_username 설정되어야 합니다.

      예:

      catalog-api-aux:
       admin_username: test-user-dd
       importspec: '{ "containerIds": {"default": "7345d4bc-b377-41e1-98b2-1e79767f8d97"}, "members":    { "default": [{"access_group_id": "10010", "roles": ["VIEWER"]}, {"access_group_id": "20010", "roles":   ["EDITOR"]}, {"access_group_id": "30010", "roles": ["OWNER"]}]} }'
      
    • duplicate_action: 자산 생성 시 수행할 작업을 지정합니다. 조치가 지정되지 않은 경우 기본적으로 "IGNORE"가 적용되며, 중복 항목은 새로운 자산으로 저장됩니다. 다음 값을 사용할 수 있습니다.

      • "업데이트" - 중복된 항목을 새로 반영된 변경 사항으로 업데이트합니다.
      • "거부" - 중복 자산이 발견되면 가져오지 마십시오.
      • "REPLACE" - 중복된 항목을 새 자산으로 덮어씁니다.
      • "무시" - 중복 항목을 무시하고 새 에셋을 생성합니다.
      주의:

      duplicate_action 해당 connection 자산 유형, 동적 IP 주소를 connection 사용하는 자산 유형, 자산 리뷰, 평점 및 메모는 지원되지 않습니다.

      예:

       importspec: '{ "duplicate_action": "REPLACE" }'
      

      다음 예시에서는 지정된 컨테이너의 중복 처리 방식이 "UPDATE"로 설정되어 있습니다. 기본적으로 다른 컨테이너들은 "IGNORE"(중복 허용) 처리 방식을 사용하고 있습니다.

        importspec: '{ "containerIds": { "default": "${GUID}" }, "duplicate_actions": {"<source_container_id>": "UPDATE","default":"IGNORE"}}'
      
    • default_user: 카탈로그를 가져올 때 가져온 자산의 기본 사용자를 설정합니다.

    • default_group: 카탈로그를 가져올 때 가져온 자산의 기본 그룹을 설정합니다.

    • fail_on_user_mismatch: 대상 시스템에 해당 사용자가 존재하지 않는 경우, 플래그가 fail_on_user_mismatch false인 경우 가져오기 작업과 함께 제공된 default_user 값을 사용합니다. 기본값으로 true로 fail_on_user_mismatch 설정된 플래그를 사용하면 가져오기가 실패합니다.

    • fail_on_group_mismatch: 대상 시스템에 해당 그룹이 존재하지 않는 경우, 플래그가 fail_on_group_mismatch false인 경우 가져오기 작업과 함께 제공된 default_group 그룹을 사용합니다. 기본값으로 true로 fail_on_group_mismatch 설정된 플래그를 사용하면 가져오기가 실패합니다.

      예:

       importspec: '{ "containerIds": {"default": "7345d4bc-b377-41e1-98b2-1e79767f8d97"}, "fail_on_user_mismatch": false, "fail_on_group_mismatch": false, "default_user":  "1000331093", "default_group": "10075" }'
      

      사용자 및 그룹 매칭은 사용자 이름과 그룹 이름을 기준으로 이루어집니다. 자산 소유권을 이전하지 않으려면 해당 retain_asset_member 매개변수를 false로 설정하고 가져오기 사양에 해당 members 항목을 지정하면 됩니다.

    • user_map: 자산 소유권을 변경하려면 이 매개변수를 지정하십시오. 이 항목이 user_map 지정되지 않은 경우, 기본적으로 가져오기 작업 후에도 자산은 사용자 이름과 그룹 이름을 기준으로 동일한 사용자와 동일한 사용자 그룹에 계속 속하게 됩니다.

      예:

      카탈로그를 에서 내보내서 SystemA 로 가져오려고 SystemB 합니다.

      • SystemA 다음과 같은 세 명의 사용자와 두 개의 사용자 그룹이 있습니다:

      사용자:
      admin: 1000330992
      user1: 1000330991
      user2: 1000331004

      그룹:
      group1: 10013
      group2: 10014

      카탈로그에는 다음과 같은 소유권을 가진 세 개의 자산이 있습니다:

      asset1 - admin 및
      group1 에 속함 asset2 - user1 및
      group2 에 속함 asset3 - user2 및 group1 에 속함

      • SystemB 다음과 같은 4명의 사용자와 3개의 사용자 그룹이 있습니다:

      사용자:
      admin: 1000330993
      user1: 1000330995
      user2: 1000331006
      user3: 1000331001

      그룹:
      group1: 10011
      group2: 10014
      group3: 10018

      가져오기가 완료된 후, 예시에서 앞서 설명한 바와 같이 자산의 소유권은 변경되지 않습니다. 즉:

      asset1 - admin 및
      group1 에 속함 asset2 - user1 및
      group2 에 속함 asset3 - user2 및 group1 에 속함

      하지만 더 이상 user1 계정이 없고, 가져오기 과정에서 SystemB SystemBasset2 의 소유권을 다른 사용자(예: user3 )로 변경하려는 경우, 다음 세부 정보를 지정할 수 있습니다:

       "user_map":{"users":{"1000330992":"1000330993","1000330991":"1000331001","1000331004":"1000331006"},"groups":{"10013":"10011","10014":"10014"}
      

      가져오기가 완료되면 자산 소유권이 다음과 같이 변경됩니다:

      asset1 - admin 및
      group1 에 속함 asset2 - user3 및
      group2 에 속함 asset3 - user2 및 group1 에 속함

카탈로그 자산 가져오기

IBM Knowledge Catalog 서비스에 카탈로그 자산을 가져오려면 다음 작업을 수행하십시오. 다른 클러스터에서 생성된 내보내기 파일을 가져오려면, 내보낸 아카이브 파일을 현재 클러스터로 복사한 다음 현재 클러스터에 로그인하십시오.

주의:

다른 클러스터에서 내보낸 컨테이너 패키지를 가져올 때는 아카이브 내의 파일에 액세스할 수 있도록 권한을 설정해야 할 수 있습니다. 설정이 필요한지 확인하려면 ‘클러스터 간 가져오기 작업에 대한 권한 구성’을 참조하십시오.

하나의 소스 컨테이너에서 여러 대상 컨테이너로 자산을 가져오는 것은 허용되지 않지만, 여러 소스 컨테이너에서 하나의 대상 컨테이너로 자산을 가져오는 것은 허용됩니다. 이는 컨테이너 간 관계가 올바르게 처리되도록 하기 위함입니다.

  1. 명령줄 cpd-cli 인터페이스가 설치된 디렉터리로 이동하십시오.

  2. 내보낸 패키지를 업로드하세요:

    cpd-cli export-import export upload -n ${PROJECT_CPD_INST_OPERANDS} \
    -f Export_archive_file_name \
    --profile=${CPD_PROFILE_NAME}
    
  3. IMPORT_NAME 환경 변수를 가져오기 작업을 식별하는 데 사용할 이름으로 설정하십시오:

    export IMPORT_NAME=<name>
    
  4. 사용 중인 범위에 맞는 import 명령어를 실행하세요:

    • 내보내기 파일의 모든 자산을 가져오려면 다음 명령어를 사용하세요:
      cpd-cli export-import import create ${IMPORT_NAME} -n ${PROJECT_CPD_INST_OPERANDS} \
       --from-export ${EXPORT_NAME} \
       --backoff-limit=0 \
       --profile=${CPD_PROFILE_NAME}
      
    • 가져올 자산을 선택하려면, 다음 명령어의 ‘가져오기 범위 선택’ 단계에서 생성된 YAML 파일을 참조하십시오:
      cpd-cli export-import import create ${IMPORT_NAME} -n ${PROJECT_CPD_INST_OPERANDS} \
        --from-export ${EXPORT_NAME} \
        --values ${OVERRIDE_YAML_FILE} \
        --backoff-limit=0 \
        --profile=${CPD_PROFILE_NAME}
      
  5. 가져오기가 완료될 때까지 기다려 주세요. 다음 명령어를 사용하여 가져오기 상태를 확인할 수 있습니다:

    cpd-cli export-import import status ${IMPORT_NAME} -n ${PROJECT_CPD_INST_OPERANDS} \
    --profile=${CPD_PROFILE_NAME}
    

자세히 알아보기