시작 스크립트는 가상 머신(VM)의 시작 프로세스 동안 작업을 실행합니다. 이 페이지에서는 VM 인스턴스에서 시작 스크립트를 사용하는 단계를 설명합니다.
시작하기 전에
gdcloud
명령줄 인터페이스 (CLI) 명령어를 사용하려면 gdcloud
CLI를 다운로드, 설치, 구성해야 합니다.
Distributed Cloud의 모든 명령어는 gdcloud
또는 kubectl
CLI를 사용하며 운영체제 (OS) 환경이 필요합니다.
kubeconfig 파일 경로 가져오기
관리 API 서버에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.
관리 API 서버의 kubeconfig 파일이 없는 경우 로그인 및 생성합니다.
관리 API 서버의 kubeconfig 파일 경로를 사용하여 이 안내의
MANAGEMENT_API_SERVER
를 바꿉니다.
권한 및 액세스 요청
이 페이지에 나열된 작업을 수행하려면 프로젝트 VirtualMachine 관리자 역할이 있어야 합니다. 액세스 권한을 확인하거나 프로젝트 IAM 관리자가 VM이 있는 프로젝트의 네임스페이스에서 프로젝트 VirtualMachine 관리자 (project-vm-admin
) 역할을 할당하도록 단계를 따르세요.
Windows 시작 스크립트 이름 형식 지정
Windows VM의 시작 스크립트는 스크립트 이름과 파일 확장자가 대시로 구분되어 추가된 특정 명명 형식을 따라야 합니다. 예를 들어 스크립트 이름이 create-directory
이고 파일 확장자가 ps1
인 create-directory-ps1
이 있습니다. 잘못된 형식에는 대시 대신 마침표를 사용하고 파일 확장자(예: create-directory.ps1
, create-directory
)를 생략하는 것이 포함됩니다.
다음은 Windows 시작 스크립트에 사용할 파일 확장자를 보여줍니다.
ps1
: PowerShell 명령어를 포함합니다.cmd
: 명령 프롬프트 인터프리터의 일괄 명령어가 포함되어 있습니다.bat
: 일괄 명령어를 포함합니다.
Windows 시작 스크립트를 순서대로 실행
여러 시작 스크립트를 사용할 수 있습니다. 스크립트를 포함하는 파일 유형은 각 스크립트의 실행 순서에 영향을 줍니다. 다음 표에서는 Windows 시작 스크립트의 실행 순서를 보여줍니다.
Windows 스크립트 | 실행할 순서 |
---|---|
Powershell 스크립트 | 부팅할 때마다 첫 번째 |
배치 스크립트 | 부팅할 때마다 두 번째 |
명령어 스크립트 | 부팅할 때마다 세 번째 |
시작 스크립트 두 개의 파일 확장자가 동일한 경우 스크립트는 파일 확장자와 이름을 기준으로 알파벳순으로 실행됩니다. 예를 들어 시작 스크립트 이름이 alpha-script-ps1
및 beta-script-ps1
이면 alpha-script-ps1
이 beta-script-ps1
보다 먼저 실행됩니다.
다음 VM 사양은 startupScripts
필드의 Windows 시작 스크립트 순서와 구조를 보여줍니다.
...
startupScripts:
- name: create-directory-ps1
script: |-
New-Item -ItemType Directory -Path C:\ -Name NewDir
Get-ChildItem -Path C:\
- name: hello-world-bat
script: |-
ECHO "Hello World!"
- name: list-directories-cmd
script: |-
dir C:\Windows > files.txt
...
시작 스크립트 전달
Distributed Cloud는 각 시작 스크립트의 이름을 기준으로 시작 스크립트를 알파벳순으로 실행합니다.
다음 표에는 스크립트 크기에 따라 사용할 스크립트 형식이 나와 있습니다.
스크립트 크기 | 스크립트 형식 |
---|---|
최대 2,048바이트 스크립트 | 텍스트 삭제 |
2,048바이트를 초과하는 스크립트 | Kubernetes 보안 비밀 |
시작 스크립트 정의
시작 스크립트를 사용하려면 VM spec
필드에 startupScripts
필드를 추가해야 합니다. 이 필드 내에서 여러 시작 스크립트를 일반 텍스트 또는 Kubernetes 보안 비밀로 지정할 수 있습니다.
다음 예시에서는 시작 스크립트를 일반 텍스트와 Kubernetes 보안 비밀로 지정합니다.
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachine
metadata:
name: "vm-test"
spec:
...
startupScripts:
- name: create-directory-ps1
script: |-
New-Item -ItemType Directory -Path C:\ -Name NewDir
Get-ChildItem -Path C:\
- name: list-directories-cmd
scriptSecretRef:
name: list-directories
---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: list-directories
data:
script:
ZGlyIEM6XFdpbmRvd3MgID4gZmlsZXMudHh0Cg==
다음 사항을 검토하세요.
- 시작 스크립트는 부팅할 때마다 실행됩니다.
- 시작 스크립트에는 기본 루트 권한이 있습니다.
- Kubernetes 보안 비밀에서 VM
spec
의scriptSecretRef
이름은metadata.name
필드와 일치해야 합니다. - Kubernetes 보안 비밀에서
data
필드에script
키를 추가하여 시작 스크립트 콘텐츠를 지정합니다.
Windows 시작 스크립트로 새 VM 만들기
Windows 시작 스크립트로 VM을 만들려면 시작 스크립트로 새 VM 만들기의 단계를 따르세요.