기존 Google Cloud 리소스 대량 가져오기 및 내보내기


이 페이지에서는 config-connector bulk-export 명령어와 이를 사용해서 Google Cloud 리소스를 구성 커넥터 YAML 파일로 내보내고 이후에 이를 구성 커넥터로 가져오는 방법을 설명합니다.

config-connector bulk-exportCloud 애셋 인벤토리내보내기 기능을 사용하여 기존 Google Cloud 리소스를 검색합니다. Cloud 애셋 인벤토리 내보내기를 제공하거나 config-connector로 내보내기를 자동으로 수행할 수 있습니다.

Cloud 애셋 인벤토리는 JSON 구조를 내보냅니다. 각 구조에는 리소스 이름, 애셋 인벤토리 유형, 상위 리소스(프로젝트, 폴더, 조직)가 포함됩니다. 애셋 인벤토리에서 지원되는 유형을 알아보려면 지원되는 애셋 유형을 참조하세요.

시작하기 전에

  1. config-connector tool 설치

  2. config-connector 도구를 사용하여 Cloud 애셋 인벤토리에서 직접 내보내려면 Google Cloud ID의 프로젝트에서 gcloud로 Cloud 애셋 인벤토리 API를 사용 설정합니다.

    gcloud services enable cloudasset.googleapis.com
    

일괄 내보내기 예시

이 예시에서는 Google Cloud CLI로 PubSubTopic을 만들고 이를 Config Connector로 가져옵니다.

  1. Google Cloud CLI를 사용하여 sample-topic이라는 주제를 만듭니다.

    gcloud pubsub topics create sample-topic
    

    주제가 생성되었다는 확인이 표시됩니다.

    Created topic [projects/PROJECT_ID/topics/sample-topic].
    

    출력에서 PROJECT_ID는 Google Cloud 프로젝트로 대체됩니다.

  2. 주제의 Google Cloud 리소스 이름을 가져오고 다음 명령어로 이를 환경 변수에 저장합니다.

    TOPIC_RESOURCE_NAME=$(gcloud pubsub topics describe sample-topic --format "value(name)")
    
  3. 객체를 식별하기 위해 config-connector 도구는 Cloud 애셋 인벤토리 JSON 구조를 사용합니다. 주제 애셋의 JSON 구조를 환경 변수에 저장합니다.

    TOPIC_ASSET='{"name":"//pubsub.googleapis.com/'"${TOPIC_RESOURCE_NAME}"'","asset_type":"pubsub.googleapis.com/Topic"}'
    
  4. 다음 명령어를 실행하여 애셋을 config-connector bulk-export에 전달합니다.

    echo ${TOPIC_ASSET} | config-connector bulk-export
    

    출력은 YAML 형식의 Config Connector 리소스입니다.

    ---
    apiVersion: pubsub.cnrm.cloud.google.com/v1beta1
    kind: PubSubTopic
    metadata:
      annotations:
        cnrm.cloud.google.com/project-id: PROJECT_ID
      name: sample-topic
    ...
    

    출력에서 PROJECT_ID는 Google Cloud 프로젝트로 대체됩니다.

  5. kubectl apply -f -로 이 리소스를 Config Connector로 전달할 수 있습니다. 리소스를 직접 전달하려면 다음 명령어를 실행합니다.

    echo ${TOPIC_ASSET} | config-connector bulk-export | kubectl apply -f -  --namespace CC_NAMESPACE
    

    CC_NAMESPACE를 Config Connector가 관리하는 리소스의 네임스페이스로 바꿉니다.

    Config Connector가 리소스를 가져옵니다.

  6. Config Connector가 kubectl describe로 리소스를 관리하는지 확인합니다.

    kubectl describe pubsubtopic sample-topic --namespace CC_NAMESPACE
    

    CC_NAMESPACE를 Config Connector가 관리하는 리소스의 네임스페이스로 바꿉니다.

삭제

config-connector bulk-exportkubectl delete로 PubSubTopic을 삭제할 수 있습니다.

echo ${TOPIC_ASSET} | config-connector bulk-export | kubectl delete -f - --namespace CC_NAMESPACE

CC_NAMESPACE를 Config Connector가 관리하는 리소스의 네임스페이스로 바꿉니다.

가져올 리소스 검색

리소스를 가져올 때 Cloud 애셋 인벤토리 내보내기를 수행하고 결과를 config-connector bulk-export에 제공하거나 config-connector bulk-export로 작업을 자동으로 수행할 수 있습니다.

Cloud 애셋 인벤토리 내보내기에서 가져오기

내보내기가 포함된 로컬 파일 경로를 제공하거나 내보내기 결과를 STDIN에서 config-connector로 파이핑하여 애셋 인벤토리 내보내기를 제공할 수 있습니다.

로컬 파일에서 가져오기

로컬 파일에 --input 매개변수를 사용하여 애셋 인벤토리 내보내기config-connector bulk-export에 제공할 수 있습니다.

config-connector bulk-export --input ASSET_INVENTORY_EXPORT

ASSET_INVENTORY_EXPORT를 Cloud 애셋 인벤토리 내보내기의 파일 이름으로 바꿉니다.

STDIN에서 가져오기

STDIN에서 애셋 인벤토리 내보내기를 제공하려면 내보내기 결과를 config-connector bulk-export로 파이핑합니다. 예를 들어 내보내기가 export.json이라는 로컬 파일에 있으면 내보내기 매개변수를 제공하지 않고 파일 내용을 config-connector bulk-export로 파이핑합니다.

cat export.json | config-connector bulk-export

STDIN에서 애셋 인벤토리 내보내기 필터링

애셋 인벤토리 내보내기를 필터링하려면 jq 도구 및 파이프를 사용하여 결과를 config-connector bulk-export에 입력할 수 있습니다. 예를 들어 EXPORT_FILE 파일에서 PubSubTopic 애셋만 가져오려면 다음 명령어를 실행합니다.

cat EXPORT_FILE | jq '. | select( .asset_type == "pubsub.googleapis.com/Topic" )' | config-connector bulk-export

config-connector로 인벤토리 내보내기

config-connector bulk-export 도구는 Google Cloud 리소스 계층 구조에서 리소스를 내보낼 수 있습니다.

프로젝트 내보내기

프로젝트에서 모든 리소스를 내보내려면 --project 매개변수를 사용합니다.

config-connector bulk-export --project PROJECT_ID

PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.

폴더 내보내기

폴더에서 모든 리소스를 내보내려면 --folder 매개변수를 사용합니다.

config-connector bulk-export --folder FOLDER_NUMBER

FOLDER_NUMBER를 Google Cloud 폴더 번호로 바꿉니다.

조직 내보내기

조직에서 모든 리소스를 내보내려면 --organization 매개변수를 사용합니다.

config-connector bulk-export --organization ORGANIZATION_ID

ORGANIZATION_ID를 Google Cloud 조직 ID로 바꿉니다.

Cloud Storage 위치

애셋 인벤토리 내보내기의 출력 위치는 Cloud Storage URI입니다. config-connector bulk-export는 내보내기를 수행할 때 Cloud Storage 버킷을 사용합니다. 기본적으로 config-connector bulk-export는 임시 버킷을 만듭니다. 버킷 이름을 지정할 수도 있습니다.

임시 Cloud Storage 버킷

--storage-key 매개변수를 제공하지 않으면 config-connector bulk-export가 임시 Cloud Storage 버킷을 자동으로 만듭니다. 버킷은 스토리지 버킷의 기본 위치인 US 멀티 리전에 생성됩니다. 내보내기가 완료되면 버킷이 삭제됩니다.

임시 버킷 지정

버킷을 지정하려면 storage-key 매개변수로 Cloud Storage URI를 사용합니다. URI가 오직 버킷의 이름이면 내보내기 스토리지 객체에 대해 이름이 생성됩니다. URI가 스토리지 객체의 전체 경로이면 전체 경로가 사용됩니다.

config-connector bulk-export --storage-key gs://BUCKET_NAME

결과

config-connector bulk-export 명령어의 출력은 YAML 형식의 구성 커넥터 리소스입니다. YAML 파일은 기본적으로 STDOUT에 기록됩니다. output 옵션으로 리소스 출력을 파일로 지정할 수 있습니다.

단일 파일로 출력

--output 매개변수를 설정할 때 config-connector bulk-export는 다음 조건 중 하나가 만족할 때 결과를 단일 파일로 기록합니다.

  • output으로 지정된 파일이 존재하고 regular 파일입니다.
  • output으로 지정된 파일이 존재하지 않고 output으로 표시된 상위 디렉터리가 존재합니다.

디렉터리로 출력

config-connector--output 매개변수가 /로 끝나는 디렉터리인 경우 해당 결과를 여러 파일에 기록합니다. config-connector bulk-export가 리소스당 파일을 하나 만들고 파일 이름은 해당 리소스 이름과 일치합니다.

config-connector bulk-export --project PROJECT_ID --on-error continue --output OUTPUT_DIRECTORY/

PROJECT_ID를 Google Cloud 프로젝트 ID로 바꿉니다.

예를 들어 my-project 프로젝트에서 sample 디렉터리로 애셋을 출력하려면 다음 명령어를 실행합니다.

config-connector bulk-export --project my-project --on-error continue --output sample/

지원되는 리소스

다음 명령어를 실행하여 리소스 이름 형식과 함께 config-connector 도구의 리소스 목록을 출력할 수 있습니다.

config-connector print-resources

명령줄 옵션

config-connector bulk-export 명령어의 옵션은 다음과 같습니다.

config-connector bulk-export
    --input FILENAME \
    --output FILENAME \
    --storage-key gs://BUCKET_NAME \
    --project PROJECT_ID \
    --folder FOLDER_NUMBER \
    --organization ORGANIZATION_ID \
    --oauth2-token TOKEN \
    --on-error [halt | continue | ignore] \
    --iam-format [policy | policymember | none] \
    --filter-deleted-iam-members [true | false] \
    --verbose
  • --input: Cloud 애셋 인벤토리 입력 파일입니다.
  • --output: 선택적인 출력 파일 경로이며, 표준 출력을 사용 중지합니다. 파일일 때는 결과에 모든 명령어 결과가 포함되며, 디렉터리일 때는 출력의 각 리소스에 대한 새 파일이 디렉터리에 포함됩니다.
  • --storage-key: 내보낼 임시 Cloud Storage 버킷을 대상으로 합니다.
  • --project: 내보낼 Google Cloud 프로젝트 ID입니다.
  • --folder: 내보낼 Google Cloud 폴더 ID입니다.
  • --organization: 내보낼 Google Cloud 조직 ID입니다.
  • --oauth2-token: Google Cloud ID의 OAUTH2 토큰입니다. 기본적으로 config-connector에는 Google Cloud CLI 기본 사용자 인증 정보가 사용됩니다.
  • --on-error: 복구 가능한 오류가 발생할 때의 동작을 제어합니다. 옵션은 'continue', 'halt', 'ignore'입니다
    • halt: 오류 발생 시 실행을 중지합니다(기본값).
    • continue: 리소스 처리를 계속하고 오류를 STDERR로 출력합니다.
    • ignore: 리소스 처리를 계속하고 오류를 출력하지 않습니다.
  • --iam-format: 내보내기에서 IAM 리소스 출력의 종류를 지정합니다. 옵션은 policy(기본값), policymember, none입니다.
  • --filter-deleted-iam-members: 삭제된 IAM 원칙을 필터링할지 여부를 지정합니다. 옵션은 true 또는 false입니다. 기본값은 false입니다.
  • --verbose: 상세 로깅을 사용 설정합니다.

다음 단계