이 페이지에서는 Deployment Manager에서 복합 유형을 만드는 방법을 설명합니다. 복합 유형을 만든 후에는 구성에서 이 유형을 호출하고 배포를 만들 수 있습니다.
복합 유형은 Deployment Manager에 영구적으로 추가되었고, 함께 작동하도록 구성된 하나 이상의 템플릿입니다. 한 번 추가된 복합 유형은 Google 소유의 다른 유형과 마찬가지로 사용할 수 있습니다. 유형에 대한 자세한 내용은 유형 개요를 참조하세요.
예를 들어 네트워크에 부하 분산된 관리형 인스턴스 그룹을 배포하는 템플릿 집합을 만들 수 있습니다. 이러한 템플릿을 Deployment Manager에 복합 유형으로 추가하고, 추가한 템플릿을 이후 구성에서 다른 유형과 마찬가지로 사용할 수 있습니다.
프로젝트 간 유형 공유도 참조하세요.
시작하기 전에
- 이 가이드의 명령줄 예시를 사용하려면 'gcloud' 명령줄 도구를 설치합니다.
- 이 가이드의 API 예시를 사용하려면 API 액세스를 설정합니다.
- 이 가이드의 API 예제로 v2beta API를 사용합니다.
복합 유형 구성요소
복합 유형을 만들기 위해서는 최상위 Jinja 또는 Python 템플릿과 결과적으로 기본 유형으로 확인되는 지원 파일 집합(선택사항)이 있어야 합니다. 복합 유형은 그 자체로 다른 복합 유형인 리소스로 구성될 수 있습니다. Deployment Manager는 배포 중 이러한 유형을 재귀적으로 확장합니다.
복합 유형은 다음으로 구성됩니다.
- 최상위 템플릿: 유형이 호출될 때 확장 중에 실행되는 최상위 Jinja 또는 Python 템플릿입니다.
- 스키마: 최상위 템플릿 및 정의된 모든 하위 가져오기 항목에 대한 정보를 설명하는 JSON 스키마 파일입니다.
- 가져온 파일: 도우미 파일, 하위 템플릿, 하위 템플릿의 관련 스키마(해당하는 경우) 등 실행에 필요한 모든 추가 파일입니다. 하지만 이 파일은 선택사항입니다. 복합 유형은 단일 최상위 템플릿만 포함할 수도 있습니다.
복합 유형 만들기
구성의 최상위 템플릿 및 연관된 가져오기 항목과 스키마를 등록하여 복합 유형을 만들 수 있습니다. gcloud
또는 API를 사용하여 복합 유형을 만듭니다.
또한 복합 유형 만들기 및 호출 방법 설명 예제도 참조하세요.
gcloud
이 명령어를 실행하려면 이 복합 유형의 일부인 최상위 템플릿 및 하위 템플릿을 저장한 디렉토리에 있어야 합니다.
gcloud CLI를 사용하여 types create
요청을 만들고 이 복합 유형을 호출하기 위한 최상위 템플릿과 원하는 유형 이름을 지정합니다.
템플릿 파일이 있는 로컬 디렉터리에서 이 명령어를 실행합니다.
$ gcloud beta deployment-manager types create [TYPE_NAME] --template=[TOP_LEVEL_TEMPLATE]
각 항목의 의미는 다음과 같습니다.
[TYPE_NAME]
은 이 유형을 호출하려는 이름입니다.[TOP_LEVEL_TEMPLATE]
은 이 유형을 설명하는 최상위 템플릿의 상대 경로입니다.
API
API에서 composite
필드와 name
필드가 포함된 POST
요청을 만듭니다. composite
필드에서 다음을 정의합니다.
- 최상위 스키마
- 가져온 템플릿의 콘텐츠
- 최상위 템플릿의 콘텐츠
API 요청 본문에는 다음 구조가 포함됩니다.
POST https://www.googleapis.com/deploymentmanager/v2beta/projects/[PROJECT_ID]/global/compositeTypes
{
"composite": {
"files": {
"schema": "[CONTENTS_OF_SCHEMA]",
"imports": [
{
"name": "[TEMPLATE_FILE]",
"content": "[CONTENTS_OF_TEMPLATE_FILE]"
},
{
"name": "[ANOTHER_TEMPLATE_IF_NECESSARY]",
"content": "[CONTENTS_OF_TEMPLATES]"
}
],
"template": "[TOP-LEVEL_TEMPLATE_CONTENTS]",
"templateFileType": "[FILE_TYPE]"
}
},
"name": "[TYPE_NAME]"
}
이러한 요청을 구성하는 방법에 대한 예는 자동 확장된 관리형 인스턴스 그룹 복합 유형 만들기를 참조하세요.
자세한 내용은 insert
메서드의 문서를 참조하세요.
복합 유형 배포
유형은 프로젝트별 리소스이고 액세스 제어 문서에 설명된 권한에 따라 액세스할 수 있습니다. 즉, 다음과 같습니다.
- 프로젝트 편집자와 뷰어 및 유형 편집자는 이 프로젝트에 제공되는 유형을 만들고 사용할 수 있습니다.
- 유형 뷰어는 유형 목록을 가져오고 이 프로젝트에 제공되는 유형을 사용할 수 있습니다.
또한 자신의 유형에 액세스할 수 있도록 다른 프로젝트를 유형 뷰어로 추가할 수 있습니다. 프로젝트 간 유형 공유를 참조하세요.
복합 유형을 등록한 다음에는 Google에서 관리되는 유형을 호출할 때와 같은 방식으로 이 유형을 배포할 수 있습니다.
types: [PROJECT_ID]/composite:[TYPE_NAME]
예를 들면 다음과 같습니다.
resources:
- name: my example-resource
type: example-project/composite:autoscaled-igm
properties:
...
명령줄 도구를 사용하여 직접 복합 유형 배포
Deployment Manager에서는 Google Cloud CLI를 사용해서 복합 유형을 직접 배포할 수 있습니다. 최상위 구성 파일을 만드는 대신 gcloud CLI는 최상위 구성을 자동으로 생성합니다.
예를 들어 다음 명령어는 autoscaled-igm
이라는 복합 유형을 배포합니다.
gcloud deployment-manager deployments create my-igm \
--composite-type example-project/composite:autoscaled-igm
--properties
플래그를 사용하여 복합 유형의 속성을 설정할 수도 있습니다.
gcloud deployment-manager deployments create my-igm \
--composite-type example-project/composite:autoscaled-igm \
--properties zone:us-central1-a
다음 사항에 유의하세요.
모든 값은 YAML 값으로 파싱됩니다. 예를 들어
version: 3
은 정수로 전달됩니다. 문자열로 지정하려면version: \'3\'
값을 이스케이프 처리된 작은 따옴표로 묶습니다.불리언 값은 대소문자를 구분하지 않으므로
TRUE
,true
,True
는 모두 동일하게 취급됩니다.복합 유형으로 정의된 모든 필수 속성을 전달해야 합니다. 속성의 하위 집합만 제공할 수는 없습니다. 특정 속성에 기본값이 포함된 경우, 명령줄에서 해당 속성을 생략할 수 있습니다.
여러 속성을 지정하려면 쉼표로 구분된 키:값 쌍을 제공합니다. 쌍을 지정하는 순서는 중요하지 않습니다. 예를 들면 다음과 같습니다.
gcloud deployment-manager deployments create my-igm \ --composite-type example-project/composite:autoscaled-igm \ --properties zone:us-central1-a,machineType:n1-standard-1,image:debian-8
이 명령어를 실행하면 Deployment Manager는 개발자가 제공한 복합 유형을 사용하여 배포를 만듭니다. Google Cloud 콘솔 또는 gcloud CLI를 사용하여 만든 배포를 확인할 수 있습니다. 배포 보기에 대한 자세한 내용은 매니페스트 보기를 참조하세요.
예제: 복합 유형 만들기
Deployment Manager는 Deployment Manager GitHub 저장소에서 복합 유형으로 사용할 수 있는 여러 예제 구성을 제공합니다. 이 예에서는 부하 분산된 고가용성 서비스를 단일 지역의 여러 영역에 배포하는 복합 유형을 추가합니다. 자세한 내용은 전체 예시를 참조하세요.
이 예에서 최상위 구성 파일은 ha-service.py 파일입니다. 모든 하위 템플릿은 스키마 파일로 가져옵니다.
- GitHub 디렉토리에서 Python 및 스키마 파일을 다운로드합니다. 하위 디렉터리의 모든 파일과 모든 다이어그램 파일을 생략합니다.
모든 파일을 다운로드한 로컬 디렉터리에서 다음 명령어를 실행하여
ha-service-example
이라는 새 복합 유형을 만듭니다.gcloud beta deployment-manager types create ha-service-example --template=ha-service.py
유형 목록을 가져와 유형이 성공적으로 생성되었는지 확인합니다.
gcloud beta deployment-manager types list --provider composite
새 유형을 기술합니다.
gcloud beta deployment-manager types describe ha-service-example --provider composite
유형을 배포하는 새 구성을 만듭니다.
[PROJECT_ID]
를 프로젝트 ID로 바꿉니다.resources: - name: ha-service-example type: [PROJECT_ID]/composite:ha-service-example properties: dockerImage: gcr.io/deployment-manager-examples/nodejsservicestatic zones: - us-central1-b - us-central1-a
구성을
example-config.yaml
로 저장합니다. 구성에서 어떤 템플릿도 가져올 필요가 없었습니다.새 복합 유형을 배포합니다.
gcloud deployment-manager deployments create ha-service-deployment --config example-config.yaml
API가 유형에서 생성된 리소스 목록을 반환합니다.
Waiting for create [operation-1488254932422-5498f5a950d71-2bd3b8c8-b13ddab5]...done. Create operation operation-1488254932422-5498f5a950d71-2bd3b8c8-b13ddab5 completed successfully. NAME TYPE STATE ERRORS INTENT ha-service-deployment-lb-fr compute.v1.forwardingRule COMPLETED [] ha-service-deployment-lb-hc compute.v1.httpHealthCheck COMPLETED [] ha-service-deployment-lb-tp compute.v1.targetPool COMPLETED [] ha-service-deployment-service-us-central1-a-as compute.v1.autoscaler COMPLETED [] ha-service-deployment-service-us-central1-a-igm compute.v1.instanceGroupManager COMPLETED [] ha-service-deployment-service-us-central1-a-it compute.v1.instanceTemplate COMPLETED [] ha-service-deployment-service-us-central1-b-as compute.v1.autoscaler COMPLETED [] ha-service-deployment-service-us-central1-b-igm compute.v1.instanceGroupManager COMPLETED [] ha-service-deployment-service-us-central1-b-it compute.v1.instanceTemplate COMPLETED []
축하합니다. 첫 번째 복합 유형이 생성되었습니다.