기존 Google Cloud 리소스 대량 가져오기 및 내보내기
이 페이지에서는 config-connector bulk-export
명령어와 이를 사용해서 Google Cloud 리소스를 구성 커넥터 YAML 파일로 내보내고 이후에 이를 구성 커넥터로 가져오는 방법을 설명합니다.
config-connector bulk-export
는 Cloud 애셋 인벤토리의 내보내기 기능을 사용하여 기존 Google Cloud 리소스를 검색합니다. Cloud 애셋 인벤토리 내보내기를 제공하거나 config-connector
로 내보내기를 자동으로 수행할 수 있습니다.
Cloud 애셋 인벤토리는 JSON 구조를 내보냅니다. 각 구조에는 리소스 이름, 애셋 인벤토리 유형, 상위 리소스(프로젝트, 폴더, 조직)가 포함됩니다. 애셋 인벤토리에서 지원되는 유형을 알아보려면 지원되는 애셋 유형을 참조하세요.
시작하기 전에
config-connector
도구를 사용하여 Cloud 애셋 인벤토리에서 직접 내보내려면 Google Cloud ID의 프로젝트에서gcloud
로 Cloud 애셋 인벤토리 API를 사용 설정합니다.gcloud services enable cloudasset.googleapis.com
일괄 내보내기 예시
이 예시에서는 Google Cloud CLI로 PubSubTopic을 만들고 이를 Config Connector로 가져옵니다.
Google Cloud CLI를 사용하여
sample-topic
이라는 주제를 만듭니다.gcloud pubsub topics create sample-topic
주제가 생성되었다는 확인이 표시됩니다.
Created topic [projects/PROJECT_ID/topics/sample-topic].
출력에서
PROJECT_ID
는 Google Cloud 프로젝트로 대체됩니다.주제의 Google Cloud 리소스 이름을 가져오고 다음 명령어로 이를 환경 변수에 저장합니다.
TOPIC_RESOURCE_NAME=$(gcloud pubsub topics describe sample-topic --format "value(name)")
객체를 식별하기 위해
config-connector
도구는 Cloud 애셋 인벤토리 JSON 구조를 사용합니다. 주제 애셋의 JSON 구조를 환경 변수에 저장합니다.TOPIC_ASSET='{"name":"//pubsub.googleapis.com/'"${TOPIC_RESOURCE_NAME}"'","asset_type":"pubsub.googleapis.com/Topic"}'
다음 명령어를 실행하여 애셋을
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 프로젝트로 대체됩니다.kubectl apply -f -
로 이 리소스를 Config Connector로 전달할 수 있습니다. 리소스를 직접 전달하려면 다음 명령어를 실행합니다.echo ${TOPIC_ASSET} | config-connector bulk-export | kubectl apply -f - --namespace CC_NAMESPACE
CC_NAMESPACE를 Config Connector가 관리하는 리소스의 네임스페이스로 바꿉니다.
Config Connector가 리소스를 가져옵니다.
Config Connector가
kubectl describe
로 리소스를 관리하는지 확인합니다.kubectl describe pubsubtopic sample-topic --namespace CC_NAMESPACE
CC_NAMESPACE
를 Config Connector가 관리하는 리소스의 네임스페이스로 바꿉니다.
삭제
config-connector bulk-export
및 kubectl 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
: 상세 로깅을 사용 설정합니다.
다음 단계
- Config Connector의 기존 Google Cloud 리소스 가져오기 방법 알아보기
- Cloud 애셋 인벤토리 및 Cloud Storage에 애셋 내보내기 알아보기
- Config Connector가 지원하는 리소스 알아보기