gcloud compute

gcloud compute 명령줄 도구를 사용하면 Compute Engine API를 사용하는 것보다 친숙한 형식으로 Compute Engine 리소스를 쉽게 관리할 수 있습니다.

gcloud 도구는 Cloud SDK에 포함되어 있으며 문 자동 완성, 인플레이스(in-place) 업데이트, 광범위한 설명 페이지 스타일의 도움말, 사람이 읽을 수 있고 머신에서 구문 분석할 수 있는 출력 형식, Google Cloud SDK와의 통합 등의 기능을 포함하는 통합 명령줄 도구입니다.

Compute Engine을 사용해 본 적이 없다면 빠른 시작 가이드 중 하나로 시작하세요.

gcloud compute 설치 또는 업데이트

gcloud compute 설정

Compute Engine은 OAuth2를 사용하여 액세스를 인증하고 승인합니다. 먼저 Cloud SDK에서 사용자를 대신하여 프로젝트에 액세스하고 인증 토큰을 획득할 수 있게 승인해야 gcloud compute를 사용할 수 있습니다.

gcloud 명령줄 도구를 처음 사용하는 경우 gcloud가 자동으로 default 구성을 사용합니다. 대부분의 경우 default 구성만 필요합니다.

  1. gcloud init를 실행하여 인증 프로세스를 시작합니다. 메시지가 나타나면 Enter 키를 누릅니다.

    이 명령은 URL을 인쇄하고 브라우저 창을 열어 프로젝트에 대한 액세스 요청을 시도합니다. 브라우저 창을 열 수 있으면 다음과 같은 출력이 표시됩니다.

    gcloud init
    
    Welcome! This command will take you through the configuration of gcloud.
    
    Your current configuration has been set to: [default]
    
    ...
    
    To continue, you must login. Would you like to login (Y/n)?  y
    
    Your browser has been opened to visit:
    
    https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.co%2
    Fauth%2Fappengine.admin+https%3A%2F%2...

    Cloud SDK가 브라우저를 열 수 없음을 감지하면(예: 원격 컴퓨터에서 작업 중) 아래와 같은 출력이 표시됩니다. 또는 로컬 머신에서 작업 중이며 브라우저가 URL을 자동으로 로드하지 않는 경우 --console-only 플래그와 함께 gcloud init 명령어를 다시 시도하세요.

    gcloud init --console-only
    

    인증 URL을 복사하여 브라우저에 붙여넣습니다. 그런 다음 인증 코드를 다시 터미널에 붙여넣습니다.

    Go to the following link in your browser:
    
    https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.co%2
    Fauth%2Fappengine.admin+https%3A%2F%2...
    
    Enter verification code:
  2. 액세스 권한을 부여합니다.

    브라우저 창에서 애플리케이션 권한을 검토하고 준비가 되면 수락을 클릭합니다. 원격 머신에서 작업 중이거나 --console-only 플래그를 사용한 경우 명령줄에서 반환된 코드를 복사하여 인증 코드 입력: 다음에 붙여넣습니다. 그렇지 않으면 코드가 명령줄 도구로 자동 전송됩니다.

  3. 이 구성에 대한 사용자 인증 정보를 선택합니다.

    사용자 인증 정보를 설정하면 gcloud가 이 구성의 기본 프로젝트를 묻는 메시지를 표시합니다. 목록에서 프로젝트 ID를 선택합니다.

    이 속성을 설정한 후 기본 프로젝트 ID를 --project 플래그로 재정의하거나 CLOUDSDK_CORE_PROJECT 환경 변수를 설정하지 않으면 모든 gcloud compute 명령어가 기본 프로젝트 ID를 사용합니다. 기본 프로젝트나 환경 변수를 설정하지 않을 경우 실행하는 각 gcloud compute 명령어에 --project 플래그를 포함해야 합니다.

영역 또는 리전에 속하는 리소스를 사용하여 작업하려면 영역 또는 리전이 필요합니다. 예를 들어 가상 머신 인스턴스를 조작할 때 영역을 지정해야 합니다. 기본 영역과 지역을 설정하면 사용자가 각 요청을 제공하지 않아도 gcloud가 이 정보를 추론할 수 있습니다. 언제든지 이러한 기본 설정을 수동으로 재정의하거나 변경할 수 있습니다.

자세한 내용은 기본 속성 설정을 참조하세요.

구성 사용하기

gcloud는 여러 계정의 사용자 인증 정보를 관리할 수 있게 configurations의 개념을 사용합니다. 각 구성에는 인증할 이메일 계정과 기본 프로젝트 ID, 기본 영역 설정 등의 특정 설정이 들어 있습니다. gclouddefault 구성으로 자동 설치됩니다. 이 구성의 사용자 인증 정보가 Google Cloud Platform 서비스로 인증에 사용됩니다.

대부분의 사용자는 default 구성만으로 충분합니다. 계정 전환이 필요한 사용 사례가 있는 경우 번갈아 사용할 수 있는 구성을 더 만들 수 있습니다.

구성 사용에 대한 자세한 내용은 gcloud topic configurations를 참조하세요.

기본 속성 설정

메타데이터 서버에는 프로젝트 ID, 프로젝트 이름 등 프로젝트에 대한 메타데이터 정보가 포함됩니다. 메타데이터 서버에 쿼리하여 프로젝트에 관한 정보를 가져와서 사용할 수 있습니다.

프로젝트의 기본 리전 및 영역을 지정하면 Compute Engine이 프로젝트의 메타데이터 서버에 이 값을 설정합니다.

다음 값을 사용하여 기본 리전 및 영역이 설정됩니다.

  • google-compute-default-zone
  • google-compute-default-region

기본 리전 및 영역 설정을 확인하려면 다음 gcloud 명령어를 실행하세요.

gcloud compute project-info describe --project [PROJECT_ID]

여기서 [PROJECT_ID]는 프로젝트 ID입니다.

응답에서 다음과 같은 메타데이터 키와 값을 찾습니다.

- key: google-compute-default-region
  value: ...
- key: google-compute-default-zone
  value: ..

응답에 google-compute-default-regiongoogle-compute-default-zone 키와 값이 없으면 기본 영역이나 리전이 설정되지 않은 것입니다.

  • 기본값이 설정되어 있지 않으면 gcloud는 각 요청과 함께 리전 및 영역을 입력하라는 메시지를 표시합니다.
  • 기본값이 설정되어 있으면 기본 설정을 수동으로 재정의하지 않는 한 사용자가 생성하는 모든 gcloud 요청에 gcloud가 자동으로 기본값을 사용합니다.

기본 속성을 변경, 설정 또는 재정의하려면 아래 방법을 사용하세요.

메타데이터 서버에서 기본 영역 및 리전 변경

메타데이터 서버에 요청하여 메타데이터 서버에서 기본 영역과 리전을 변경할 수 있습니다. 예를 들면 다음과 같습니다.

gcloud compute project-info add-metadata \
    --metadata google-compute-default-region=europe-west1,google-compute-default-zone=europe-west1-b

gcloud 명령줄 도구는 gcloud init 명령어를 재실행한 후 새로운 기본 영역 및 지역 변경사항만 선택합니다. 기본 메타데이터를 업데이트한 후 gcloud init를 실행하여 default 구성을 다시 초기화합니다.

로컬 클라이언트에 기본 영역 및 리전 설정

메타데이터 서버를 업데이트하지 않고 gcloud 클라이언트에서 이러한 속성을 로컬로 설정하여 수동으로 다른 영역이나 리전을 선택할 수 있습니다.

먼저 이 속성을 설정하려는 구성을 사용하고 있는지 확인합니다. 구성마다 고유한 설정이 있습니다. 구성 간을 전환하려면 다음을 실행하세요.

gcloud config configurations activate CONFIGURATION_NAME

다음으로 클라이언트에서 영역 또는 지역 속성을 설정하려면 다음을 실행하세요.

gcloud config set compute/zone ZONE
gcloud config set compute/region REGION

기본 속성을 완전히 삭제하려면 unset 명령어를 사용하세요.

gcloud config unset compute/zone
gcloud config unset compute/region

기본 속성을 완전히 삭제하면 gcloud에서 사용자가 실행하는 모든 명령어에 대한 영역이나 지역을 묻습니다.

환경 변수에 기본값 설정

gcloud compute 명령어에 값을 제공하는 환경 변수를 설정할 수 있습니다. 환경 변수가 gcloud config 명령어로 설정하는 기본 속성을 재정의하지만 --zone이나 --region과 같은 명시적 플래그는 재정의하지 않습니다.

Linux/macOS
export 명령어를 사용하여 영역 및 지역 변수를 설정합니다.
$ export CLOUDSDK_COMPUTE_ZONE=ZONE
$ export CLOUDSDK_COMPUTE_REGION=REGION
환경 변수를 영구적으로 만들려면 ~/.bashrc 파일에 다음 명령어를 포함하고 터미널을 다시 시작합니다.
Windows
set 명령어를 사용하여 영역 및 지역 변수를 설정합니다.
C:\> set CLOUDSDK_COMPUTE_ZONE=ZONE
C:\> set CLOUDSDK_COMPUTE_REGION=REGION

명령어와 함께 특정 --zone 또는 --region 플래그를 포함하여 환경 변수를 재정의할 수 있습니다.

각 요청에 값 설정

각 명령어와 함께 특정 --zone 또는 --region 플래그를 포함하여 기본 속성을 재정의할 수 있습니다. 예를 들면 다음과 같습니다.

gcloud compute instances create example-instance --zone us-central1-f

이들 플래그는 함께 사용하는 단일 명령어에 대해서만 작동합니다. 플래그는 사용자의 기본 설정을 변경하지 않고 해당 요청에 맞게 이를 재정의하기만 합니다.

기본 속성의 우선 순위

gcloud 명령줄 도구는 각 구성에 대해 다음 순서로 기본 속성을 평가합니다.

  • 명시적 --zone, --region, --project 플래그를 제공하면 해당 단일 요청에 대한 다른 설정이 모두 재정의됩니다.
  • 기본 영역 및 리전 속성이 메타데이터 서버에 정의된 경우 gcloud init를 실행하면 gcloud 명령줄 도구가 로컬 gcloud 클라이언트를 이러한 속성으로 설정합니다. 후속 요청에 대해서는 도구가 영역을 묻습니다.
  • 기본 영역 및 지역 속성이 메타데이터 서버와 로컬 클라이언트 모두에 정의된 경우 도구는 로컬 클라이언트의 기본 속성을 사용합니다.
  • 기본 영역 및 지역 속성이 메타데이터 서버, 로컬 클라이언트, 환경 변수에 정의된 경우 도구는 사용 중인 구성에 관계없이 환경 변수의 기본 속성을 사용합니다.

일반 gcloud compute 명령어

다음은 인스턴스 작업 시 수행하는 일반적인 작업의 예입니다. 일반적인 인스턴스 작업에 대한 자세한 내용은 인스턴스를 참조하세요.

인스턴스 만들기

instances create 명령어를 사용하여 새 인스턴스를 만듭니다. 예를 들어, 다음 명령은 'us-central1-a' 영역에 'my-instance'라는 인스턴스를 만듭니다.

gcloud compute instances create my-instance

--zone 플래그를 생략하면 gcloud기본 속성을 기준으로 원하는 영역을 추론할 수 있습니다.

머신 유형이미지와 같은 기타 필수 인스턴스 설정은 create 명령어에 지정되지 않은 경우 기본값으로 설정됩니다. create command의 도움말을 표시하여 기본값을 볼 수 있습니다.

gcloud compute instances create --help

인스턴스 나열

instances list 명령어를 사용하여 인스턴스를 나열하는 방법에는 여러 가지가 있습니다. 다음 명령어를 사용하여 사람이 읽을 수 있는 표 형식의 출력을 만들 수 있습니다.

gcloud compute instances list

정규 표현식을 사용하여 이름을 기준으로 반환되는 인스턴스 목록의 범위를 좁힐 수 있습니다. 예를 들어 다음 명령어는 이름이 'my-'로 시작하는 모든 인스턴스를 반환합니다.

gcloud compute instances list --filter="name ~ ^my-.*"

리소스 나열 및 필터링에 대한 자세한 내용은 리소스 가져오기를 참조하세요.

하나의 인스턴스에 대한 세부정보를 반환하려면 instances describe 명령어를 사용하세요. 예를 들어, 다음 명령어는 'my-instance'에 대한 정보를 반환합니다.

gcloud compute instances describe my-instance --zone us-central1-a

이전 명령어는 결과를 YAML 형식으로 반환합니다. --format 플래그를 사용하여 결과 표시 방법을 변경할 수 있습니다. 인스턴스를 비롯한 리소스 가져오기 및 나열에 대한 자세한 예는 리소스 가져오기를 참조하세요.

인스턴스에 연결

gcloud compute를 사용하면 인스턴스에 쉽게 연결할 수 있습니다. gcloud compute sshgcloud compute scp 명령어는 SSH와 SCP 주위에 래퍼를 제공하여 인증 및 인스턴스 이름과 IP 주소의 매핑을 처리합니다.

'us-central1-a' 영역의 'my-instance'에 ssh로 연결하려면 다음 명령어를 사용하세요.

gcloud compute ssh my-instance --zone us-central1-a

로컬 파일 'file-1'을 'us-central1-a' 영역의 'my-instance'에 복사하려면 다음을 사용하세요.

gcloud compute scp ~/file-1 my-instance:~/remote-destination --zone us-central1-a

scp 명령어를 인스턴스에서 로컬 머신으로 파일을 복사하는 데 사용할 수도 있습니다. 예를 들어, 'us-central1-a' 영역의 인스턴스 'my-instance'에 있는 'file-1'의 로컬 사본을 만들려면 다음을 사용하세요.

gcloud compute scp my-instance:~/file-1 ~/local-destination --zone us-central1-a

gcloud compute ssh 명령어와 gcloud compute scp 명령어 모두 기본적으로 '~/.ssh/google_compute_engine'에 위치한 비공개 키 파일을 사용합니다. 이 키 파일을 사용하지 않으려는 경우 --ssh-key-file 플래그로 다른 위치를 지정하여 다른 키 파일을 지정할 수 있습니다. 사용하려는 비공개 키가 이미 있거나 다른 프로젝트에서 다른 개인 키를 사용하려는 경우를 예로 들 수 있습니다.

SSH 기반 프로그램 직접 사용

sshscp를 직접 사용하려는 경우 gcloud compute에서 인증 구성으로 인스턴스의 호스트 별칭을 포함하는 SSH 구성 파일을 생성할 수 있습니다. 이렇게 하려면 다음을 실행하세요.

gcloud compute config-ssh

다음은 SSH 구성 파일(~/.ssh/config)에 추가된 1가지 별명의 예입니다.

Host my-instance.us-central1-a.myproject
HostName 107.178.220.224
IdentityFile ~/.ssh/google_compute_engine
UserKnownHostsFile=/dev/null
CheckHostIP=no
StrictHostKeyChecking=no

--ssh-config-file 플래그를 사용하여 사용자별 대체 SSH 구성 파일을 지정할 수 있습니다.

인스턴스를 추가하거나 삭제할 때마다 config-ssh 명령어를 재실행해야 합니다.

config-ssh 명령어로 SSH 구성 파일을 업데이트한 후에는 SSH 기반 프로그램을 사용하여 인스턴스에 액세스할 수 있습니다. 예를 들어, 'myproject'라는 프로젝트의 'us-central1-a' 영역에 있는 'my-instance'라는 인스턴스의 경우 다음과 같이 OpenSSH ssh 클라이언트를 사용할 수 있습니다.

$ ssh my-instance.us-central1-a.myproject

인스턴스에서 'file-1' 파일의 로컬 사본을 만들려면 다음과 같이 scp 클라이언트를 사용하면 됩니다.

$ scp my-instance.us-central1-a.myproject:~/file-1 .

메타데이터 작업하기

서버 정의 메타데이터 외부의 인스턴스 또는 프로젝트에 커스텀 메타데이터를 설정할 수 있습니다. 이는 인스턴스의 코드에서 쿼리할 수 있는 프로젝트 또는 인스턴스에 임의의 값을 전달할 때 유용합니다. 이 섹션에서는 몇 가지 일반적인 메타데이터 작업을 보여줍니다. 메타데이터 작업에 대한 자세한 내용은 메타데이터 저장 및 검색하기를 참조하세요.

인스턴스 메타데이터 추가 및 삭제

create 명령어를 사용하여 인스턴스를 만들 때 gcloud compute로 인스턴스 메타데이터를 구성하거나 add-metadataremove-metadata 명령어를 사용하여 기존 인스턴스로 인스턴스 메타데이터를 구성할 수 있습니다. 메타데이터는 --metadata 플래그를 사용하여 등호('=')로 구분된 키/값 쌍으로 지정됩니다. 또는 --metadata-from-file 플래그를 사용하여 로컬 파일에서 메타데이터를 읽을 수 있습니다.

예를 들어, 'us-central1-a' 영역의 'my-instance'라는 기존 인스턴스에 커스텀 메타데이터 키 'role', 'unique-id', 'build-num'을 추가하려면 다음을 사용하세요.

gcloud compute instances add-metadata my-instance \
    --zone us-central1-a \
    --metadata role=worker unique-id=1234 build-num=4.32

커스텀 메타데이터 키 'role'과 'unique-id'를 삭제하려면 다음을 사용하세요.

gcloud compute instances remove-metadata my-instance \
    --zone us-central1-a \
    --keys role unique-id

기존 인스턴스에서 메타데이터를 추가하고 삭제한 후 다음을 실행하여 변경사항을 볼 수 있습니다.

gcloud compute instances describe my-instance --zone us-central1-a
...
metadata:
  fingerprint: eU448B6JGQw=
  items:
  - key: build-num
    value: '4.32'
  kind: compute#metadata
...

기존 메타데이터를 변경하거나 새 메타데이터를 추가하려면 add-metadata 명령어를 사용합니다. 인스턴스 메타데이터 업데이트는 누적됩니다. 즉, 추가하거나 변경할 메타데이터 키만 지정하면 됩니다. 기존 키를 지정하면 키 값이 새 값으로 업데이트됩니다.

Compute Engine 도구가 설치된 이미지의 경우 시작 스크립팅 기능용으로 예약된 2개의 메타데이터 키가 있습니다.

  • startup-script: 인스턴스가 시작될 때 실행되는 스크립트 콘텐츠를 나타냅니다. 더 긴 스크립트 내용의 경우 --metadata-from-file 플래그를 사용하여 스크립트 콘텐츠가 들어 있는 파일의 경로를 전달할 수 있습니다.
  • startup-script-url: 인스턴스가 시작할 때 지정된 공개적으로 액세스 가능한 위치의 스크립트가 실행됨을 나타냅니다.

예를 들어, 'us-central1-a' 영역에 'my-instance'라는 인스턴스를 만들려면 --metadata 플래그로 지정된 시작 스크립트 콘텐츠와 함께 다음을 사용합니다.

gcloud compute instances create my-instance --zone us-central1-a \
    --metadata startup-script="echo 'hello world'"

'my-instance'에 SSH 접속하고 시스템 로그(/var/log/syslog)를 확인하면 시작 스크립트의 결과가 표시됩니다.

'my-instance'라는 기존 인스턴스와 함께 --metadata-from-file 플래그를 사용하여 로컬 파일에서 다음 시작 스크립트를 추가할 수 있습니다.

gcloud compute instances add-metadata my-instance \
    --metadata-from-file startup-script=/local/path/to/script/startup

이 예시에서는 gcloud compute instances reset을 사용할 때와 같이 인스턴스가 재부팅될 때 시작 스크립트가 실행됩니다.

프로젝트 수준의 메타데이터 추가 및 삭제하기

프로젝트 수준의 메타데이터는 프로젝트의 모든 인스턴스에서 액세스할 수 있습니다. 기본적으로 프로젝트는 프로젝트 수준의 메타데이터를 예약했습니다. 커스텀 프로젝트 수준의 메타데이터를 추가하고 삭제할 수도 있습니다. 인스턴스 메타데이터와 마찬가지로 프로젝트 메타데이터 업데이트는 누적됩니다. 즉, 추가하거나 변경할 메타데이터 키만 지정하면 됩니다. 기존 키를 지정하면 키 값이 새 값으로 업데이트됩니다.

기존 프로젝트 수준의 메타데이터를 보려면 project-info describe 명령어를 사용하세요.

gcloud compute project-info describe

다음 명령어는 프로젝트 차원의 메타데이터를 2개 추가합니다.

gcloud compute project-info add-metadata \
    --metadata-from-file startup-script=/local/path/to/script
    --metadata startup-id=1234

startup-script 키는 예약되어 있으며 인스턴스가 시작될 때 지정된 로컬 파일의 콘텐츠가 실행됨을 의미합니다.

방금 추가한 2개의 메타데이터를 삭제하려면 다음을 사용하세요.

gcloud compute project-info remove-metadata --keys startup-script startup-id

인스턴스 삭제하기

'us-central1-a' 영역에서 'my-instance'라는 인스턴스를 삭제하려면 instances delete 명령어를 사용합니다.

gcloud compute instances delete my-instance --zone us-central1-a

인스턴스를 만들면 영구 디스크도 생성됩니다. 이 디스크는 영구 디스크 할당량에 반영되며 매월 영구 디스크 요금이 발생합니다. 인스턴스 삭제를 위한 instances delete 명령어는 기본적으로 인스턴스와 연결된 영구 디스크를 삭제합니다. 이 동작을 재정의하려면 다음을 수행하세요.

  • instances delete 명령어의 --keep-disks 플래그를 사용합니다.
  • 자동으로 삭제되지 않도록 디스크를 구성합니다. 인스턴스를 만든 후 인스턴스를 삭제하기 전에 언제든지 instances set-disk-auto-delete 명령어를 사용하여 영구 디스크를 보존할 수 있습니다. instances delete 명령어의 --delete-disks 플래그는 자동 삭제 구성에 관계없이 디스크를 삭제합니다.

자세한 내용은 영구 디스크의 자동 삭제 상태 설정을 참조하세요.

작업 나열

작업은 Compute Engine 리소스 변경사항의 레코드입니다. 프로젝트의 모든 작업 목록을 얻으려면 operations list 명령어를 사용합니다.

gcloud compute operations list

작업에는 목록 요청에서 반환된 작업의 범위를 좁히는 데 사용할 수 있는 범위가 있습니다. 예를 들어, --global, --zones, --regions 플래그를 사용하여 결과를 구체화할 수 있습니다. 다음 명령어는 'us-central1-a' 및 'us-central1-b' 영역의 작업만 반환합니다.

gcloud compute operations list --filter="zone:(us-central1-a us-central1-b)"

작업을 포함한 리소스 가져오기 및 나열의 추가 예는 리소스 가져오기를 참조하세요.

도움말 페이지 보기

다음 명령어는 gcloud compute 명령어에 대한 일반 도움말에서 리소스 그룹(instances)이나 명령어(create)에 대한 특정 도움말까지 여러 유형의 도움말에 액세스하는 방법을 보여줍니다. 모든 리소스와 명령어에 대한 포괄적 도움말은 다음 패턴을 따릅니다.

gcloud compute --help
gcloud compute instances --help
gcloud compute instances create --help

--help 플래그 대신 -h 플래그를 사용하여 빠른 도움말을 볼 수 있습니다. Cloud SDK 참조에서 포괄적 도움말을 모두 검토할 수도 있습니다.

gcloud 도구 구성을 위한 명령어가 포함된 포괄적 도움말을 보려면 다음을 실행하세요.

gcloud topic TOPIC

여기에서 TOPIC은 도움말을 보려는 주제입니다. 도움말을 볼 수 있는 주제의 목록은 gcloud topic 참조 문서를 확인하세요.

다음 단계

이제 직접 gcloud compute 도구 사용을 시작할 수 있습니다. 다음과 같이 시작하세요.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Compute Engine 문서