시작 스크립트는 가상 머신(VM)의 시작 프로세스 동안 작업을 실행합니다. 이 페이지에서는 VM 인스턴스에서 시작 스크립트를 사용하는 단계를 설명합니다.
시작하기 전에
gdcloud
명령줄 인터페이스 (CLI) 명령어를 사용하려면 gdcloud
CLI를 다운로드, 설치, 구성해야 합니다.
GDC 오프라인 어플라이언스의 모든 명령어는 gdcloud
또는 kubectl
CLI를 사용하며 운영체제 (OS) 환경이 필요합니다.
kubeconfig 파일 경로 가져오기
관리 API 서버에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.
관리 API 서버 이름을 찾거나 플랫폼 관리자 (PA)에게 서버 이름을 문의합니다.
관리 API 서버의 kubeconfig 파일이 없는 경우 로그인 및 생성합니다.
이 안내에서 경로를 사용하여
MANAGEMENT_API_SERVER{"</var>"}}
을 바꿉니다.
권한 및 액세스 요청
이 페이지에 나열된 작업을 수행하려면 프로젝트 VirtualMachine 관리자 역할이 있어야 합니다. 액세스 권한을 확인하거나 프로젝트 IAM 관리자가 VM이 있는 프로젝트의 네임스페이스에서 프로젝트 VirtualMachine 관리자 (project-vm-admin
) 역할을 할당하도록 단계를 따르세요.
시작 스크립트 전달
bash 또는 비bash 스크립트를 시작 스크립트로 사용할 수 있습니다. 이렇게 하려면 스크립트 인터프리터를 나타내기 위해 스크립트 시작 부분에 #!/bin/…
을 포함합니다.
예를 들어 Python 3 시작 스크립트를 사용하려면 스크립트 시작 부분에 #! /usr/bin/python3
를 추가합니다.
Google Distributed Cloud (GDC) 에어 갭 어플라이언스는 각 시작 스크립트의 이름을 기준으로 시작 스크립트를 알파벳순으로 실행합니다.
다음 표에는 스크립트 크기에 따라 사용할 스크립트 형식이 나와 있습니다.
스크립트 크기 | 스크립트 형식 |
---|---|
최대 2,048바이트 스크립트 | 텍스트 삭제 |
2,048바이트를 초과하는 스크립트 | Kubernetes 보안 비밀 |
시작 스크립트 정의
시작 스크립트를 사용하려면 VM spec
필드에 startupScripts
필드를 추가해야 합니다. 이 필드 내에서 여러 시작 스크립트를 일반 텍스트 또는 Kubernetes 보안 비밀로 지정할 수 있습니다.
다음 예시에서는 시작 스크립트를 일반 텍스트와 Kubernetes 보안 비밀로 지정합니다.
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachine
metadata:
name: "my-vm"
spec:
…
startupScripts:
- name: hello-world
script: |
#!/bin/bash
echo hello
- name: add-user
scriptSecretRef:
name: add-user
---
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: add-user
data:
script:
IyEvYmluL2Jhc2gKYWRkdXNlciB1c2VyCg==
다음 사항을 검토하세요.
- 시작 스크립트는 부팅할 때마다 실행됩니다.
- 시작 스크립트에는 기본 루트 권한이 있습니다.
- Kubernetes 보안 비밀에서 VM
spec
의scriptSecretRef
이름은metadata.name
필드와 일치해야 합니다. - Kubernetes 보안 비밀에서
data
필드에script
키를 추가하여 시작 스크립트 콘텐츠를 지정합니다.
시작 스크립트로 새 VM 만들기
이 안내는 VM을 만드는 데 사용하는 이미지와 관계없이 적용됩니다. 다음을 완료합니다.
시작 스크립트를 Kubernetes 보안 비밀로 만들려면 다음을 실행하세요.
cat <<EOF >>FILE_NAME STARTUP_SCRIPT_CONTENT EOF
kubectl --kubeconfig MANAGEMENT_API_SERVER create secret -n PROJECT generic SECRET_NAME --from-file=script=FILE_NAME
rm FILE_NAME
VM 만들기 페이지에 설명된 대로 VM을 만드는 단계를 참고하세요. 1단계에서 VM을 만드는 명령어를 실행하기 전에
spec
필드에 시작 스크립트를 추가합니다.이 예시에서는 일반 텍스트와 Kubernetes 보안 비밀을 모두 사용하여 시작 스크립트를 정의합니다.
apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachine metadata: name: VM_NAME namespace: PROJECT spec: … startupScripts: - name: CLEAR_TEXT_SCRIPT_NAME script: | #!/bin/bash CLEAR_TEXT_SCRIPT - name: SECRET_SCRIPT_NAME scriptSecretRef: name: SECRET_NAME
이러한 변수는 다음과 같이 정의됩니다.
변수 정의 MANAGEMENT_API_SERVER
관리 API 서버 kubeconfig
파일입니다.PROJECT
VM을 만들려는 GDC 에어갭 어플라이언스 프로젝트입니다. VM_NAME
VM의 이름입니다. FILE_NAME
시작 스크립트를 저장할 파일의 이름입니다. STARTUP_SCRIPT_CONTENT
시작 스크립트의 일부로 실행할 명령어 CLEAR_TEXT_SCRIPT_NAME
일반 텍스트 시작 스크립트의 이름입니다. CLEAR_TEXT_SCRIPT
정의한 일반 텍스트 스크립트입니다. SECRET_NAME
Kubernetes 보안 비밀의 이름입니다. SECRET_SCRIPT_NAME
시작 스크립트의 이름(Kubernetes 보안 비밀)입니다. 다음 단계에 따라 VM을 만듭니다.
다음은 Kubernetes 보안 비밀과 일반 텍스트를 사용하여 새 사용자를 추가하는 시작 스크립트로 VM을 만드는 방법의 예입니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER \ apply -n PROJECT -f - <<EOF apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachineDisk metadata: name: VM_BOOT_DISK_NAME spec: source: image: name: BOOT_DISK_IMAGE_NAME namespace: vm-system size: BOOT_DISK_SIZE --- apiVersion: v1 kind: Secret type: Opaque metadata: name: add-user data: script: IyEvYmluL2Jhc2gKYWRkdXNlciB1c2VyCg== --- apiVersion: virtualmachine.gdc.goog/v1 kind: VirtualMachine metadata: name: VM_NAME spec: compute: virtualMachineType: MACHINE_TYPE disks: - virtualMachineDiskRef: name: VM_BOOT_DISK_NAME boot: true autoDelete: BOOT_DISK_AUTO_DELETE startupScripts: - name: add-user scriptSecretRef: name: add-user - name: add-to-sudoers script: | #!/bin/bash usermod -aG sudo user EOF
이 예에서 변수는 다음과 같이 정의됩니다.
변수 정의 MANAGEMENT_API_SERVER
관리 API 서버 kubeconfig
파일입니다.PROJECT
VM을 만들려는 GDC 에어갭 어플라이언스 프로젝트입니다. VM_NAME
새 VM의 이름입니다. VM_BOOT_DISK_NAME
새 VM 부팅 디스크의 이름입니다. BOOT_DISK_IMAGE_NAME
새 VM 부팅 디스크에 사용할 이미지의 이름입니다. BOOT_DISK_SIZE
부팅 디스크의 크기입니다(예: 20G
).
이 값은 항상 부팅 디스크 이미지의minimumDiskSize
보다 크거나 같아야 합니다.BOOT_DISK_AUTO_DELETE
true
또는false
입니다. VM 인스턴스가 삭제될 때 부팅 디스크가 자동으로 삭제되는지 여부를 나타냅니다.MACHINE_TYPE
새 VM의 사전 정의된 머신 유형입니다. 사용 가능한 머신 유형을 선택하려면 다음 명령어를 실행하세요.
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachinetype.virtualmachine.gdc.goog --namespace vm-system
시작 스크립트로 기존 VM 업데이트
시작 스크립트로 기존 VM을 업데이트할 수도 있습니다. 업데이트를 실행하기 전에 VM을 종료해야 합니다.
VM 속성을 업데이트하는 단계를 따라 실행할 시작 스크립트로 spec
필드를 업데이트합니다.
시작 스크립트의 출력 보기
- 단계에 따라 VM에 연결합니다.
게스트 VM 내에서 다음 명령어를 실행하여 실행한 시작 스크립트의 로그를 가져옵니다.
sudo journalctl -u cloud-final
시작 스크립트 로그는 다음으로 시작합니다.
Started to run the command: /var/lib/google/startup-scripts/<script-name> ...