이 페이지에서는 확정 인스턴스 템플릿을 만들어야 하는 경우와 이유를 설명합니다. 확정 인스턴스 템플릿을 사용하면 인스턴스 템플릿을 배포할 때 인스턴스에 설치해야 하는 타사 서비스 또는 앱의 유형을 명확하게 알 수 있습니다. 확정 인스턴스 템플릿을 만들면 인스턴스 템플릿의 모호성과 예기치 않은 동작을 최소화할 수 있습니다.
확정 인스턴스 템플릿을 만드는 이유
일반적으로 인스턴스 템플릿의 속성은 최대한 명시적이고 확정적인 것이 좋습니다. 타사 서비스를 설치하거나 사용하는 시작 스크립트를 인스턴스 템플릿에 사용하는 경우 이러한 스크립트가 설치할 앱의 버전과 같은 명시적인 정보를 제공하는지 확인하세요. Compute Engine은 템플릿에 정의된 정보에만 의존하며 참조된 타사 서비스를 제어할 수 없습니다. 템플릿이 너무 모호하면 인스턴스 템플릿이 예상과 다르게 작동할 수 있습니다.
예를 들어 apache2를 설치하고 외부 서버에서 호스팅되는 파일을 사용하는 시작 스크립트로 인스턴스 템플릿을 만들려면 다음 명령어를 사용할 수 있습니다.
gcloud compute instance-templates create example-template-with-startup \
--image-family debian-9 \
--image-project debian-cloud \
--metadata startup-script='#! /bin/bash
sudo apt install -y apache2
scp myuser@108.59.87.185:index.php /var/www/'
이 시작 스크립트에는 두 가지 잠재적인 문제가 있습니다.
- 스크립트가 설치할 apache2의 버전을 명시적으로 정의하지 않으며
apt
저장소에서 사용할 수 있는 현재 버전을 사용합니다. - 스크립트가 버전이 관리되지 않고 인스턴스 템플릿을 마지막으로 사용한 이후로 변경되었을 수 있으며 타사에서 호스팅하는 파일에 의존합니다.
자동 확장 처리를 사용하는 경우 비확정 인스턴스 템플릿으로 인해 자동 확장 처리가 관리형 인스턴스 그룹에 새 인스턴스를 다른 구성(예: 다른 버전의 apache2)으로 추가할 수 있습니다.
마찬가지로 이 템플릿을 관리형 인스턴스 그룹에 적용하고 그룹을 다른 템플릿 서비스로 업데이트한 후 이전 템플릿으로 롤백하기로 결정할 경우 인스턴스가 업데이트 전과 다른 버전의 apache2 또는 index.php 파일을 사용하게 될 수 있습니다. 이는 인스턴스가 시작 시 항상 최신 버전을 가져오기 때문입니다.
모호하거나 예기치 않은 인스턴스 템플릿 동작 방지
예기치 않은 템플릿 동작을 방지하려면 다음 방법 중 하나를 사용하세요.
컨테이너 최적화 이미지나 Docker(Docker 태그 포함)를 사용합니다. 예를 들어 Docker 이미지의 모든 새 빌드에 새 태그를 할당하고 이 태그를 기본 최신 태그 대신 인스턴스 템플릿에 사용하는 것이 좋습니다. 컨테이너 최적화 이미지의 경우 매니페스트 파일에서 이미지의 특정 빌드를 명시적으로 참조할 수 있습니다. 아래 예에서는 'version_2_1_3' 태그로 지정된 버전의 Docker 이미지 'myimage'를 사용합니다.
version: v1beta2 containers: - name: simple-echo image: myimage:version_2_1_3 [ rest of your manifest file ]
템플릿의 이미지로 사용할 커스텀 이미지를 만듭니다. 이 방법을 사용하면 모든 인스턴스가 동일해지므로 시작 스크립트보다 더 좋습니다. 시작 스크립트는 배포 패키지 업데이트 후 결과가 달라질 수 있습니다. 프로토타입 제작 및 신속한 개발을 위한 인스턴스 템플릿에는 시작 스크립트를 사용하고, 프로덕션 품질 서비스를 배포할 준비가 되면 커스텀 이미지를 사용하세요.
시작 스크립트를 사용하는 경우 스크립트를 확정적으로 업데이트하는 것이 좋습니다. 예를 들어 이전 템플릿의 새 버전을 만들고 다음과 같이 확정 시작 스크립트를 지정합니다.
gcloud compute instance-templates create example-template-with-startup-2-1-3 \ --image-family debian-9 \ --image-project debian-cloud \ --metadata startup-script='#! /bin/bash sudo apt install -y apache2=2.2.20-1ubuntu1 scp myuser@108.59.87.185:version_2_1_3/index.php /var/www/'
여기에서 'version_2_1_3'은 서비스 버전 2.1.3을 위한 PHP 스크립트가 포함된 하위 디렉터리입니다.