GCP Essentials :: Compute Engine
Tags: gcp, googlecloud, cloud, cloudcomputing
Published: 2021-01-03 20:10:11

Hello everyone,

Among all of other services that I would be discussing in further posts, Virtual Machine may be the most familiar and common.

In this I will discuss about the Compute Engine service of Google Cloud Platform which is the service for spinning up a vps on GCP.

One of the nice things about virtual machines is that they have the power and generality of a full-fledged operating system. You can flexibly configure a VPS pretty much like you configure your PC, deciding CPU, memory (type and size) and storage (types and size).

You will also learn configuring the vpn and firewall to make your vps even more secure.

Ohk so if you coming from some other cloud service provider, let me amaze you with this: The VPC networks that you define have **global scope**. They can have **subnets in any GCP region** worldwide and subnets can span the zones that make up a region.

This feature let you create your own network configuration and use it as you wish.

Not only this but you can **dynamically increase the size of a subnet** in a custom network by expanding the range of IP addresses allocated to it. Doing that doesn't affect already configured VMs.

You can find the created instances here: https://console.cloud.google.com/compute/instances

![](https://i.imgur.com/97yFKZh.png)

in `gcloud`
```
gcloud compute instances list --project=<PROJECT-ID>
```

If you not created any instances, you will see the dashboard as above. 

So while creating the instances, you will see the 4 types of instances.

![](https://i.imgur.com/4jp3nJw.png)

+ General Purpose : Hosting static website or simple webapps
+ Compute Optimized : High quality dedicated CPUs
+ Memory Optimized : High quality dedicated RAM with more space
+ GPU : Add the Graphical Processing Units for deploying / training machine learning applications

I will be choosing _General Purpose E2 Series and e2-medium_ machine for deployment.

Then in base image and disk space, I have chosen the following

![](https://i.imgur.com/VDspNyT.png)

> **NOTE:** If you want you instance to access the google apis, select second or third option based on your architecture
![](https://i.imgur.com/tn9SwIT.png)

Currently I will be using the default access.

Most of the time you will be deploying a web application on the server. If that is the case, check the firewall rules based on type of traffic you will be receiving

![](https://i.imgur.com/XK7wqby.png)

I will be selecting the HTTP rule for now.

Recheck everything and click "Create" button. Give some time to created and boot the instance.

To create the same instance via gcloud sdk execute the following command

```
gcloud beta compute --project=<PROJECT-ID> instances create myinstace --zone=europe-west2-c --machine-type=e2-medium --subnet=default --network-tier=PREMIUM --maintenance-policy=MIGRATE --service-account=<YOUR-SERVICE-ACCOUNT> --scopes=https://www.googleapis.com/auth/devstorage.read_only,https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring.write,https://www.googleapis.com/auth/servicecontrol,https://www.googleapis.com/auth/service.management.readonly,https://www.googleapis.com/auth/trace.append --tags=http-server --image=ubuntu-2004-focal-v20201211 --image-project=ubuntu-os-cloud --boot-disk-size=30GB --boot-disk-type=pd-standard --boot-disk-device-name=myinstace --no-shielded-secure-boot --shielded-vtpm --shielded-integrity-monitoring --reservation-affinity=any
```
and execute this command to add the HTTP rule for the instance
```
gcloud compute --project=<PROJECT-ID> firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server
```

Once it's created, you need the private key to access the VPC using ssh. The easiest way to connect to the server is `gcloud`. It will created the SSH keys automatically (if doesn't exists) and then create 

```
gcloud beta compute ssh --zone <ZONE-ID> <INSTANCE-NAME> --project <PROJECT-ID>
```

You can also connect to the instance from browser console. Click on the VPC you want to connect then click "Open in Browser"

![](https://i.imgur.com/Jp59Fyq.png)

> **NOTE:** The default username that is created while instance creation is **`ubuntu`**

Since you might be a windows user or if you are linux user, gcloud will create the current logged in user in your VPC. So I personally recommend you to use the in-browser console for accessing the VPC. It will create the same username from every system you will access it. 

### Resources
1. [Deploying Compute Engine via `gcloud`](https://cloud.google.com/compute/docs/gcloud-compute#top_of_page)
2. [Managing Firewall Rules for VPC](https://cloud.google.com/vpc/docs/firewalls)
3. [Types of Machines and Their Configurations](https://cloud.google.com/compute/docs/machine-types)


I am waiting to see what have you deployed on your compute engine and how you are using it. Hit me up at the following

+ Email: tbhaxor@gmail.com (Recommended)
+ Twitter: [@tbhaxor](https://twitter.com/tbhaxor)
+ GitHub: [@tbhaxor](https://github.com/tbhaxor)
+ LinkedIn: [@gurkirat--singh](https://www.linkedin.com/in/gurkirat--singh)
+ Instagram: [@_tbhaxor_](https://instagram.com/_tbhaxor_)