가상 머신(VM)은 메타데이터 서버에 메타데이터를 저장합니다. Google Distributed Cloud (GDC) 에어갭 어플라이언스 VM에서 메타데이터를 키-값 쌍 (KVP)으로 추가, 삭제, 볼 수 있습니다.
메타데이터 KVP를 사용하여 서버 이름과 같이 VM을 식별하는 데 도움이 되는 정보를 저장할 수 있습니다. VM 외부 및 내부에서 메타데이터에 액세스하고 메타데이터를 사용하여 서로 다른 시스템 간에 정보를 전달할 수 있습니다.
시작하기 전에
gdcloud
명령줄 인터페이스 (CLI) 명령어를 사용하려면 gdcloud
CLI를 다운로드, 설치, 구성해야 합니다.
GDC 오프라인 어플라이언스의 모든 명령어는 gdcloud
또는 kubectl
CLI를 사용하며 운영체제 (OS) 환경이 필요합니다.
kubeconfig 파일 경로 가져오기
관리 API 서버에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.
관리 API 서버 이름을 찾거나 플랫폼 관리자 (PA)에게 서버 이름을 문의합니다.
관리 API 서버의 kubeconfig 파일이 없는 경우 로그인 및 생성합니다.
이 안내에서 경로를 사용하여
MANAGEMENT_API_SERVER{"</var>"}}
을 바꿉니다.
권한 및 액세스 요청
이 페이지에 나열된 작업을 수행하려면 프로젝트 VirtualMachine 관리자 역할이 있어야 합니다. 단계에 따라 VM이 있는 프로젝트의 네임스페이스에서 확인하거나 프로젝트 IAM 관리자가 프로젝트 VirtualMachine 관리자 (project-vm-admin
) 역할을 할당하도록 합니다.
GDC 콘솔 또는 gdcloud CLI를 사용하는 VM 작업의 경우 프로젝트 IAM 관리자에게 프로젝트 VirtualMachine 관리자 역할과 프로젝트 뷰어 (project-viewer
) 역할을 모두 할당해 달라고 요청하세요.
메타데이터 추가 또는 삭제
이 섹션에서는 기존 VM 인스턴스에서 메타데이터를 추가하고 삭제하는 방법을 설명합니다.
메타데이터를 사용하여 VM에 추가할 임의의 키-값 쌍을 저장할 수 있습니다. 예를 들어 test
및 production
과 같은 다양한 환경을 식별하기 위해 자체 맞춤 메타데이터를 추가하고 관리할 수 있습니다.
메타데이터 추가
gdcloud
특정 VM 인스턴스에 메타데이터를 추가합니다. 명령어에
--metadata
또는--metadata-from-file
플래그 중 하나를 포함해야 합니다. 사용 사례에 필요한 경우 동일한 명령어에 두 플래그를 모두 추가할 수도 있습니다.gdcloud compute instances add-metadata VM_NAME [--project=PROJECT] [--metadata=KEY=KEY_VALUE,[,KEY=KEY_VALUE,...]] [--metadata-from-file=KEY=LOCAL_FILE_PATH,]
다음을 바꿉니다.
VM_NAME
: VM 인스턴스의 이름입니다.PROJECT
: VM이 있는 프로젝트의 이름입니다. 이 값은 선택사항입니다.KEY
: 메타데이터 쌍의 키입니다.KEY_VALUE
: 메타데이터 쌍의 값입니다.LOCAL_FILE_PATH
: 로컬 파일의 메타데이터 쌍 값입니다.
API
API로 메타데이터를 추가하려면 STS
토큰을 사용해야 합니다.
gdcloud CLI를 사용하여
STS
토큰을 생성합니다.gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
ORG_SUFFIX
를 조직 접미사로 바꿉니다. 예를 들어 조직 콘솔 URL이https://console.example-org.com
이면ORG_SUFFIX
는example-org.com
입니다.출력은 다음과 비슷합니다.
STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
특정 VM 인스턴스에 메타데이터를 추가합니다.
curl -X POST "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT/vm/VM_NAME" \ -H "Authorization: Bearer STS_TOKEN \ -H "Content-Type: application/json" \ -d "{"metadata": {"items": [{"key": "test-key", "value": "test-value"}]}}"
다음을 바꿉니다.
ORG_SUFFIX
: 조직 접미사입니다. 예를 들어 조직 콘솔 URL이https://console.example-org.com
이면ORG_SUFFIX
은example-org.com
입니다.VM_NAME
: VM 인스턴스의 이름입니다.PROJECT
: VM이 있는 프로젝트의 이름입니다. 이 값은 선택사항입니다.STS_TOKEN
: gdcloud CLI에서 생성된STS
토큰입니다.
메타데이터 삭제
gdcloud
특정 VM 인스턴스에서 메타데이터를 삭제합니다. 모든 메타데이터 항목을 삭제하려면
--all
플래그를 사용합니다. 명령어에--all
또는--keys
플래그 중 하나를 사용해야 합니다.gdcloud compute instances remove-metadata VM_NAME [--project=PROJECT] [--keys=KEY,[KEY,...]] [--all]
다음을 바꿉니다.
VM_NAME
: VM 인스턴스의 이름입니다.PROJECT
: VM이 있는 프로젝트의 이름입니다. 이 값은 선택사항입니다.KEY
: 메타데이터 쌍의 키 문자열입니다.
API
API로 메타데이터를 삭제하려면 STS
토큰을 사용해야 합니다.
gdcloud CLI를 사용하여
STS
토큰을 생성합니다.gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
ORG_SUFFIX
를 조직 접미사로 바꿉니다. 예를 들어 조직 콘솔 URL이https://console.example-org.com
이면ORG_SUFFIX
은example-org.com
입니다.출력은 다음과 비슷합니다.
STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
특정 VM 인스턴스에서 메타데이터를 삭제합니다.
curl -X POST "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT/vm/VM_NAME" \ -H "Authorization: Bearer STS_TOKEN" \ -H "Content-Type: application/json" \ -d "{"metadata": {"items": [{"key": "test-key", "value": "test-value"}]}}"
다음을 바꿉니다.
ORG_SUFFIX
: 조직 접미사입니다. 예를 들어 조직 콘솔 URL이https://console.example-org.com
이면ORG_SUFFIX
은example-org.com
입니다.VM_NAME
: VM 인스턴스의 이름입니다.PROJECT
: VM이 있는 프로젝트의 이름입니다.STS_TOKEN
: gdcloud CLI에서 생성된STS
토큰입니다.
쿼리 메타데이터
gdcloud
모든 VM 인스턴스 메타데이터를 나열하여 메타데이터 세부정보를 확인합니다.
gdcloud compute instances describe VM_NAME [--project=PROJECT]
다음을 바꿉니다.
VM_NAME
: VM 인스턴스의 이름입니다.PROJECT
: VM이 있는 프로젝트의 이름입니다. 이 값은 선택사항입니다.
출력은 다음과 비슷합니다.
... metadata: items: - key: Key-1 value: val12 - key: key2 value: lksdjfhk-user1
API
gdcloud CLI를 사용하여
STS
토큰을 생성합니다.gdcloud auth print-identity-token --audiences="https://metadata.ORG_SUFFIX"
ORG_SUFFIX
를 조직 접미사로 바꿉니다.출력은 다음과 비슷합니다.
STS-Bearer-QPN1nX6GVdoRKCpRx7FD-61gh6RAvWfM6sqjU2knw9n6RFn1jR2n4i1z1irH2HrMLf0tC3hqNaetYzoOBQ6hI2eS7-58_ZZGCMc_oARuX_T9Wmtwe4xlaIS97aDdu9KETEs0akoVYEsmFsWCu2Cu5pdiwjzSuWnRCMZwq9g8BmnPSck1Auf7rOfM7o2FoGE_lbLFZK4C8TCPdloDZAXYcLeNAQ
모든 VM 인스턴스 메타데이터를 나열하여 메타데이터 세부정보를 확인합니다.
curl "https://metadata.ORG_SUFFIX/virtual-machines/metadata/v1/projects/PROJECT/vm/VM_NAME" \ -H "Authorization: Bearer STS_TOKEN" \ -H "Content-Type: application/json"
다음을 바꿉니다.
ORG_SUFFIX
: 조직 접미사입니다. 예를 들어 조직 콘솔 URL이https://console.example-org.com
이면ORG_SUFFIX
은example-org.com
입니다.VM_NAME
: VM 인스턴스의 이름입니다.PROJECT
: VM이 있는 프로젝트의 이름입니다. 이 값은 선택사항입니다.STS_TOKEN
: gdcloud CLI에서 생성된STS
토큰입니다.
출력은 다음과 비슷합니다.
... metadata: items: - key: Key-1 value: val12 - key: key2 value: lksdjfhk-user1
VM 내에서 메타데이터 쿼리
메타데이터 서버에 연결하지 않고도 VM 내에서 VM 메타데이터를 쿼리할 수 있습니다. 이렇게 하려면 curl
명령어를 사용하고 메타데이터 URL에 해당 메타데이터 키를 추가합니다.
단일 KVP 쿼리
VM 내에서 단일 KVP를 쿼리합니다.
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/KEY" -H "Metadata-Flavor: Google"
KEY
를 쿼리하려는 메타데이터 쌍의 키로 바꿉니다.
값이 있는 모든 KVP 쌍 쿼리
키-값이 있는 VM 내에서 모든 KVP 쌍을 쿼리합니다.
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=true" -H "Metadata-Flavor: Google"
값이 없는 모든 메타데이터 키 쿼리
키-값이 없는 VM 내에서 모든 메타데이터 키를 쿼리합니다.
curl "http://metadata.google.internal/computeMetadata/v1/instance/attributes/?recursive=false" -H "Metadata-Flavor: Google"