이 페이지에서는 배포를 만드는 방법을 설명합니다. 배포는 구성에 정의된 리소스 집합의 인스턴스화를 의미합니다. 배포를 만들기 위해서는 요청에 유효한 구성을 제공합니다. 하나의 배포에는 여러 Google Cloud 서비스에서 사용되는 여러 리소스가 포함될 수 있습니다. 배포를 만들 때, Deployment Manager는 해당 Google Cloud API에 기술된 모든 리소스를 만듭니다.
시작하기 전에
- 이 가이드의 명령줄 예시를 사용하려면 'gcloud' 명령줄 도구를 설치합니다.
- 이 가이드의 API 예시를 사용하려면 API 액세스를 설정합니다.
- 구성을 만듭니다.
배포 만들기
배포를 만들 때는 리소스 모음이 포함된 배포 리소스를 만듭니다. 각 리소스는 요청에 제공하는 구성에 명시적으로 정의됩니다.
gcloud
Google Cloud CLI에서 deployments create
명령어를 사용합니다.
gcloud deployment-manager deployments create my-first-deployment \
--config vm.yaml
--config
플래그는 YAML 구성 파일의 상대 경로입니다.
기본적으로 구성에 이미 프로젝트에 있는 리소스가 포함된 경우 이 리소스를 배포로 가져오고 배포를 사용하여 관리할 수 있습니다. 리소스를 가져오지 않으려면 다음 gcloud beta
명령어와 같이 --create-policy
옵션을 사용해야 합니다.
gcloud beta deployment-manager deployments create my-first-deployment \
--config vm.yaml --create-policy CREATE
배포를 만들 때 사용할 수 있는 정책에 대한 자세한 내용은 리소스를 만들기 위한 정책 설정을 참조하세요.
배포가 성공적으로 생성되었으면, 배포에 대한 설명을 가져올 수 있습니다.
gcloud deployment-manager deployments describe my-first-deployment
API
API에서 인라인으로 제공된 구성을 사용하여 요청 본문에서 insert()
요청을 수행합니다.
POST https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments
{
"name": "example-config-with-templates",
"target": {
"config": {
"content": "resources:\n- name: vm-created-by-cloud-config\n type: compute.v1.instance\n properties:\n zone: us-central1-a\n machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1\n disks:\n - deviceName: boot\n type: PERSISTENT\n boot: true\n autoDelete: true\n initializeParams:\n diskName: disk-created-by-cloud-config\n sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20151104\n networkInterfaces:\n - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default\n"
}
}
}
템플릿을 가져올 경우에는 이 템플릿을 요청 본문의 일부로 제공해야 합니다. 예를 들어 다음 API 요청에는 vm_template.jinja
라는 템플릿 하나를 가져오는 target
이 있습니다.
POST https://www-www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments
{
"name": "my-example-config-with-templates-2",
"target": {
"config": {
"content": "imports:\n- path: vm_template.jinja\n\nresources:\n- name: my-vm\n type: vm_template.jinja"
},
"imports": [
{
"content": "resources:\n- name: vm-created-by-cloud-config\n type: compute.v1.instance\n properties:\n zone: us-central1-a\n machineType: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/machineTypes/n1-standard-1\n disks:\n - deviceName: boot\n type: PERSISTENT\n boot: true\n autoDelete: true\n initializeParams:\n diskName: disk-created-by-cloud-config\n sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-7-wheezy-v20151104\n networkInterfaces:\n - network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default",
"name": "vm_template.jinja"
}
]
}
}
리소스를 만들기 위한 정책 설정
새 배포를 만들 때, 만들려는 리소스가 이미 프로젝트에 있으면 배포로 이를 가져옵니다.
이러한 경우에는 Deployment Manager가 새 리소스를 만들지 않습니다.
기존 리소스를 가져오지 않으려면, 배포에 대해 CREATE
정책을 사용해야 합니다.
리소스를 만드는 데 다음 정책을 사용할 수 있습니다.
CREATE_OR_ACQUIRE
- [기본값] Deployment Manager가 프로젝트에 있는 리소스를 사용하거나, 리소스가 없으면 리소스를 만듭니다. 리소스를 가져오기 위해 Deployment Manager는 구성에서 개발자가 만들려는 리소스의 속성을 확인합니다. 동일한 속성의 기존 리소스가 있으면 Deployment Manager가 이 리소스를 배포 중에 가져옵니다.Deployment Manager가 확인하는 속성은 개발자가 만들려는 리소스 유형에 따라 달라지며 다음을 포함할 수 있습니다.
- 리소스의
name
- 리소스의
type
- 리소스의
zone
또는region
(해당되는 경우)
속성은 리소스의
GET
API 요청에 대한 URL의 일부입니다. 리소스를 가져오기 위해 Deployment Manager에서 사용하는 속성을 확인하려면 리소스의GET
메서드에 대한 API 참고 리소스를 참조하세요. 예를 들어 Compute Engine 인스턴스의 경우instances.get
메서드의 요청 URL에는resourceId
(구성의name
),zone
,project
가 포함됩니다.- 리소스의
CREATE
- Deployment Manager가 존재하지 않는 리소스를 만듭니다. 구성에 포함된 리소스 중에 프로젝트에 이미 존재하는 리소스가 있을 경우 배포가 실패합니다.ACQUIRE
- Deployment Manager가CREATE_OR_ACQUIRE
와 동일한 기준을 사용하여 이미 있는 리소스를 가져옵니다.프로젝트에 이미 리소스가 다수 있고 이를 단일 배포로 함께 관리하려면
ACQUIRE
정책을 사용합니다.템플릿 또는 구성에서는 리소스를 만들 때와 마찬가지로 이러한 리소스의 필수 속성을 제공해야 합니다. 구성에 포함된 리소스가 프로젝트에 없으면 배포가 실패합니다.
배포 나열
Google Cloud 콘솔, API 또는 Google Cloud CLI에서 배포 목록을 확인합니다.
콘솔
Google Cloud 콘솔의 배포 페이지로 이동합니다.
gcloud
Google Cloud CLI에서 deployments list
하위 명령어를 사용합니다.
gcloud deployment-manager deployments list
API
API에서 배포 모음에 대해 비어 있는 GET
요청을 수행합니다.
GET https://www.googleapis.com/deploymentmanager/v2beta1/projects/myproject/global/deployments
다음 단계
- 지문에 라벨을 추가합니다.
- 배포를 업데이트합니다.