이 전체 예는 컨테이너 최적화 이미지를 사용하는 가상 머신으로 배포를 생성하는 방법을 설명합니다. Compute Engine에서 컨테이너를 사용하는 자세한 방법은 컨테이너 최적화 Compute Engine 이미지를 참조하세요.
여기서는 다음 방법을 안내합니다.
- 간단한 컨테이너 매니페스트를 만듭니다.
- 컨테이너 이미지를 사용하는 구성 및 템플릿을 만듭니다.
- 리소스를 배포하고 배포가 성공적인지 확인합니다.
컨테이너 매니페스트 만들기
컨테이너를 사용하려면 컨테이너 매니페스트를 정의해야 합니다. 매니페스트에서는 컨테이너 이미지, 시작할 컨테이너, 부팅 시 실행할 명령어, 사용 설정할 포트와 같은 속성을 설명합니다.
다음 콘텐츠로 container_manifest.yaml
라는 파일을 만듭니다.
이 매니페스트는 Hello Application 컨테이너 이미지를 사용하고 포트 8080에서 리슨하는 echo 서버를 실행하는 simple-echo라는 컨테이너를 만듭니다.
템플릿 및 구성 만들기
다음으로 컨테이너 최적화 이미지로 가상 머신 인스턴스를 시작하는 템플릿을 만듭니다. 다음 콘텐츠로 container_vm.[jinja|py]
라는 파일을 만듭니다.
Jinja
Python
템플릿의 구조를 적용하는 해당 스키마 파일을 만듭니다.
Jinja
Python
이 템플릿에는 다음을 비롯한 많은 매개변수가 정의되어 있습니다.
deployment
,name
,project
환경 변수. Deployment Manager는 사용자의 추가 작업 없이 이러한 변수를 자동으로 채웁니다.- 구성에서 정의될
zone
,containerImage
,containerManifest
속성
다음과 같이 container_vm.yaml
이라는 구성 파일을 만듭니다.
Jinja
Python
ZONE_TO_RUN
을 원하는 가상 머신 영역으로 바꿔야 합니다. 이 파일은 사용할 컨테이너 이미지와 이전에 만든 컨테이너 매니페스트도 정의했습니다.
가상 머신 인스턴스 배포
마지막으로 Google Cloud CLI를 사용하여 가상 머신 인스턴스를 배포합니다.
gcloud deployment-manager deployments create my-container-deployment \
--config container_vm.yaml
배포가 생성되면 배포 세부정보를 확인할 수 있습니다. 예를 들면 다음과 같습니다.
$ gcloud deployment-manager deployments describe my-container-deployment
creationTimestamp: '2015-04-02T12:24:31.645-07:00'
fingerprint: ''
id: '8602410885927938432'
manifest: https://www.googleapis.com/deploymentmanager/v2/projects/myproject/global/deployments/my-container-deployment/manifests/manifest-1428002671645
name: my-container-deployment
state: DEPLOYED
resources:
NAME TYPE ID UPDATE_STATE ERRORS
my-container-deployment-my-container-vm compute.v1.instance 3775082612632070557 COMPLETED -
인스턴스가 실행 중인지 확인
컨테이너 인스턴스가 시작되었는지 테스트하려면 브라우저에서 hello world
를 인쇄할 가상 머신의 외부 IP 주소에 방문합니다.
포트 8080을 통해 가상 머신에서 트래픽 쿼리를 허용하도록 Compute Engine 방화벽 규칙을 추가합니다.
gcloud compute firewall-rules create allow-8080 --allow tcp:8080
인스턴스의 외부 IP 주소를 가져옵니다.
$ gcloud compute instances describe my-container-deployment-my-container-vm ... name: my-container-vm-my-container-deployment networkInterfaces: - accessConfigs: - kind: compute#accessConfig name: external-nat natIP: 104.197.8.138 type: ONE_TO_ONE_NAT name: nic0 network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/default networkIP: 10.240.97.220 scheduling: automaticRestart: true onHostMaintenance: MIGRATE selfLink: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a/instances/my-container-deployment-my-container-vm status: RUNNING tags: fingerprint: 42WmSpB8rSM= zone: https://www.googleapis.com/compute/v1/projects/myproject/zones/us-central1-a ...
이 경우 외부 IP는
104.197.8.138
입니다.브라우저 창에서 브라우저 주소 표시줄에 외부 IP와 포트 8080을 입력합니다. 예를 들면
104.197.8.138:8080
입니다.성공하면
hello world
메시지가 표시됩니다.
(선택사항) 배포 삭제
비용을 절약하고 배포를 더 이상 원하거나 필요로 하지 않는 경우, 배포를 삭제하세요.
gcloud deployment-manager deployments delete my-container-deployment
다음 단계
전체 사용자 가이드에서 또는 API를 통해 Deployment Manager에 대해 자세히 알아봅니다.
다른 가이드를 사용해 보세요.