본문 바로가기
Cloud/GCP

[GCP] Compute Engine VM Instance 생성 방법 및 속성 설명

by SystemAnswer 2022. 10. 12.
반응형

 

 

 

Google Cloud Platform(GCP)에서 Compute Engine의 VM Instance를 생성하는 방법을 다루고자 합니다. VM를 생성하면서 요구되는 옵션들에 대해서도 하나하나 상세히 들어다 보겠습니다.

생성되는 환경은 앞서 진행한 VPC Networks 환경에 맞춰 진행하겠습니다.

 

GCP 활용 가이드

2022.10.12 - [Cloud/GCP] - [GCP] Compute Engine VM Instance 생성 방법 및 속성 설명 <= 현재 여기

2022.10.06 - [Cloud/GCP] - [GCP] VPC(Virtual Private Cloud) networks 구성 및 사용법

 

구성 환경

1. Network

    1.1 VPC

        a. vpc-demo : 172.22.36.0/24

    1.2 Public subnet

        b subnet-demo-ext-01 : 172.22.36.0/26

 

2. Comput Engine

    2.1 VM Instances

        a. Name : vm-demo-web

        b. OS : CentOS 7

        c. Spec : 2 vCPU, 4GB memory

 

Compute Engine 생성 방법 4가지

GCP에서 VM을 생성하는 방법으로는 4가지 방법이 있다. 이 중 "New VM Instances"에 대해서 상세히 다룰 것이며 나머지 방법들은 간략하게 설명하고 넘어가도록 하겠다.

 

1. New VM Instances : 아래에서 상세히 다루도록 하겠다.

 

2. New VM Instances form template

    2.1 Template는 부팅 디스크 이미지 또는 컨테이너 이미지, 스크립트 등 VM을 생성하는데 필요한 속성값들을 정의합니다.

    2.2 만들어진 Template은 MIG(Managed Instance Groups) 또는 VM을 만들 수 있게 된다.

    2.3 특히, MIG(Managed Instance Groups)를 통해서 동일한 VM를 생성할 수 있게되어 자동 확장, 자동 복구, 리전 배포, 자동 업데이트 등 자동화된 워커로드를 가져갈 수 있다.

 

3. New VM Instance form machine image

    3.1 공개 이미지 또는 커스텀 이미지로 생성된 이미지를 활용해서 동일한 속성의 VM를 생성할 수 있도록 해준다.

 

4. Marketplace

    4.1 Marketplace는 다양한 벤더에서 제공하는 무료 & 유료 솔루션들을 손쉽게 설치할 수 있도록 도와준다.

    4.2 데이터베이스, 개발자 도구, 금융 서비스 등 다양하게 제공 중에 있다.

    4.3 아래 그림은 apache web server with CentOS 7.8을 제공하고 있는 것을 검색한 것이다.

 

GCE New VM Instances 생성 절차 및 속성별 상세 내용

1. 기본 속성

    1.1 Name

        a. vm-demo-web 등록

    1.2 Lables

        a. "component : web", "environment : demo" 등록

        b. 설명

            - Key:Value 쌍으로 라벨을 등록하여 각 리소스들을 필터링하는데 사용 할 수 있다.

            - GCP의 비용 관련 시스템에 해당 값이 전달되어 요금을 확인하는데 필터링하여 사용할 수 있다.

            - 보통 구성요소(component:web), 환경(environment:production), 상태 라벨(state:active) 등으로 사용 된다.

    1.3 Region & Zone

        a. Region : asis-northeast3 (Seoul) 선택

        b. Zone : asia-northeast3-a (a,b,c 중 a 선택) 선택

        c. VM이 위치할 원하는 리전을 선택하면 된다.

 

2. Machine configuration

    2.1 Machine family

        a. demo로 간단하게 테스트를 진행할 것이기 때문에 GENERAL-PURPOSE에서 e2-medium를 선택

        b. Machine family는 크게 4가지로 분류 됨

            - GENERAL-PURPOSE : 범용

            - COMPUTE-OPTIMIZED : 컴퓨팅 최적화

            - MEMORY-OPTIMIZED : 메모리 최적화

            - GPU : 가속기 최적화

            - 4가지 Type에 대해서 상세한 내용은 아래 참고 자료 URL를 참고하길 바랍니다.

    2.2 Display device

        a. 선택하지 않음(비활성화)

        b. 어플리케이션에서 고가의 GPU 성능을 요하는게 아닌 적당한 GPU 사용의 요구조건이 있을 경우 해당 속성을 enable하면 된다. (GPU를 별도록 mount하지 않아도 되기 때문에 비용을 save할 수 있다)

 

3. Confidential VM service

    3.1 선택하지 않음(비활성화)

    3.2 설명

        a. 엔드 투 엔드 암호화가 적용된 VM으로 저장, 전송 중, 사용 중인 데이터들에 대해서 암호화하여 데이터를 보호.

        b. 승인되지 않은 액세스 또는 수정을 방지하는 보안 격리 환경이다.

 

4. Container

    4.1 선택하지 않음(비활성화)

    4.2 설명

        a. GCP Container Registry에 등록되어 있는 Container Image파일들을 읽어 서버에 설치할 수 있게 해주는 기능이다.

        b. Container를 deploy할 때 필요한 Volume, Arguments, variables 등 속성값을 지정할 수 있다.

 

5. Boot Disk

    5.1 OS : CentOS 7 선택
    5.2 Size : 20GB 선택

    5.3 Boot Disk : Balanced persistent disk 선택

    5.4 속성 설명

        a. Boot Disk는 GCP에서 제공하는 Public Images를 사용 할 수 있고, 기존에 생성해둔 Custom images와 Snapshots을 이용해서도 Boot Disk를 선택할 수 있다.

        b. 일부 OS는 라이센스 비용이 포함되어 있기 때문에 주의가 필요하다.

        c. Disk type은 서비스 performance에 따라서 선택하면 된다.

 

6. Identity and API access

    6.1 Service accounts

        a. Compute Engine default wervice account 선택

        b. 설명

            - VM에 Service accounts를 연결하면 연결된 account의 rules가 VM에 제공된다. 이렇게 제공된 사용자 인증 정보는 GCP API, GCP 리소스 액세스를 승인하는데 사용된다.

            - VM마다 Service account는 하나만 연결가능하다.

            - 따라서, Service account는 VM에서 사용자를 대신하여 내부 리소스나 API에 액세스하는데 사용된다.

    6.2 Access scopes

        a. Allow default access 선택

        b. 설명

            - Service account가 액세스할 수 있는 범위를 정한다.

            - default는 일부 서비스에만 액세스가 가능하다.

 

7. Firewall : 다음 장에서 다루겠습니다.

 

8. Advanced options

    8.1 Networking

        a. Network tags

            - 공란(별도로 지정하지 않음) => 추후 서비스 용도에 따라서 Firewall rule에 맞게 tags를 입력하면 된다. 테스트 목적이기 때문에 공란으로 둔다.

            - 생성한 Firewall rule의 태그 값을 입력하면 해당 Firewall rule이 적용 된다.

        b. Hostname

            - 공란(별도로 지정하지 않음, VM의 Name과 동일하게 생성 됨)

            - VM의 Hostname을 지정할 수 있다.

        c. IP forwarding

            - 선택하지 않음(비활성화)

            - 활성화하면 해당 시스템 안에서 커널이 처리하는 패킷에 대해서 외부로 forwarding이 가능하게 된다.

            - 만약 활성화하지 않으면 수신된 패킷이 자신의 것이 아니면 drop하게 된다.

        d. Network performance configuration

            - 선택하지 않음(비활성화)

            - GCP는 NIC 또는 IP 주소당 대역폭이 아니라 VM당 대역폭을 고려한다.

            - GPU가 연결된 VM과 최적의 성능을 목적으로하는 VM들에서 더 높은 네트워크 대역폭을 지원하려면 gVNIC를 사용이 필요하다. gVNIC은 최대 98Gbps까지 이그레스를 설정할 수 있다.

            - VirtIO는 Linux KVM에서 사용되고 있는 표준 인터페이스이다. 가상화 I/O 인터페이스에 대한 표준 정의이다.

        e. Network bandwidth

            - 선택하지 않음(비활성화)

            - outbound network bandwidth값을 증가시킬 수 있다. 단, 요구조건이 있기 때문에 충족시켜야 한다.

        f. Network interfaces

            - Network : vpc-demo (생성한  VPC 선택)

            - Subnetwork : subnet-demo-ext-01 IPv4 (생성한 Subnet을 선택)

            - IP stack type : IPv4 선택

            - Primary internal IP : Ephemeral(Custom) 선택 => static ip를 사용하기 위해서 선택

            - Custom ephemeral IP address : 172.22.36.10

            - External IPv4 address : eip-demo-web (신규로 생성한 external ip 선택)

          

    8.2 Disk : 용량 추가가 필요할 경우 설정

 

    8.3 Security

        a. Shielded VM

            - Turn on Secure Boot : Disable

            - Turn on vTPM : Enable

            - Turn on Integrity Monitoring : Enable

            - VM의 사전 게스트 운영체제에서 암호화 키나 민감한 정보를 생성하고 안전하게 저장

            - 부팅 순서 초반에 악성 코드가 로드되지 않도록 방지하고 무결성을 확인하여 VM이 악의적으로 수정되지 않도록 보호

        b. VM access

            - Control VM access through IAM permissions : Disable

            - Block project-wide SSH keys : Disable

            - Block project-wide SSh keys는 모든 project에서 VM에 access할 때 SSH key로 접근을 못하도록 설정된다.

            - remote에서 ssh로 접근할 수 있지만 GCP에서 제공하는 "SSH" 연결로 접속해도 되기 때문에 해당 방법으로 접속 되도록 할 수 있다. 이런 경우  GCP IAM으로 콘솔 접근 권한을 제한하게 할 것이기 때문에 보안상 유리하다.

        c. Add manually generated SSH keys

            - SSH keys 등록 안함

            - Public SSH keys를 등록해서 자신이 보유하고 있는 Private SSH Keys로 OS Login 접근이 가능하다.

 

9. Management

    9.1 Deletion portection

        a. 선택하지 않음(비활성화)

        b. GCP Console에서 서버를 삭제할 때 삭제가 되지 않도록 보호하는 속성이다. 삭제하려면 edit하여 해당 속성은 비활성화 시켜야 한다.

    9.2 Reservations

        a. 기본 값 사용

        b. 서버가 생성될 때 Startup으로 한번 실행되는 script이다.

        c. 서버가 생성될 때 동일한 패키지들이 필요하면 script를 작성하여 반복적인 일을 줄일 수 있다.

    9.3 Metadata

        a. 기본 값 사용

        b. SSH keys 값들을 저장하여 사용할 수 있다.

 

GCE VM 생성 결과

 

참고 자료

1. Compute Engine Type

    https://cloud.google.com/compute/docs/machine-types

 

반응형

댓글