发布时间:2023-01-15 文章分类:编程知识 投稿人:赵颖 字号: 默认 | | 超大 打印

1 简介

如果要选择GCP为云平台,则经常需要创建GCE(Google Compute Engine),有以下几种方式:

(1) 在浏览器创建

(2) 命令 gcloud

(3) Terraform

在开始之前,可以查看:《初始化一个GCP项目并用gcloud访问操作》。

2 GCP Console

登陆操作界面,点击创建按钮,然后选择好参数即可:

在GCP上创建GCE的三种方式(Console,gcloud,Terraform)

会显示出对应的价格。

3 gcloud命令

在操作界面创建时,可以直接查看对应的gcould命令:

在GCP上创建GCE的三种方式(Console,gcloud,Terraform)

我们直接运行就可以创建了:

$ gcloud compute instances create pkslow-vm \
--project=pkslow \
--zone=us-west1-a \
--machine-type=e2-micro \
--network-interface=network-tier=PREMIUM,subnet=default \
--maintenance-policy=MIGRATE \
--service-account=admin-for-all@pkslow.iam.gserviceaccount.com \
--scopes=https://www.googleapis.com/auth/cloud-platform \
--tags=http-server,https-server \
--create-disk=auto-delete=yes,boot=yes,device-name=instance-1,image=projects/centos-cloud/global/images/centos-8-v20211105,mode=rw,size=20,type=projects/pkslow/zones/us-west1-a/diskTypes/pd-standard \
--no-shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring \
--reservation-affinity=any
Created [https://www.googleapis.com/compute/v1/projects/pkslow/zones/us-west1-a/instances/pkslow-vm].
NAME       ZONE        MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
pkslow-vm  us-west1-a  e2-micro                   10.138.0.5   34.145.124.xxx  RUNNING
                10.138.0.5   34.145.124.xxx  RUNNING

检查是否创建成功:

$ gcloud compute instances list
NAME       ZONE        MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
pkslow-vm  us-west1-a  e2-micro   

4 Terraform

当然,最佳实践是使用Terraform来管理,代码简单易懂,具体如下:

provider "google" {
  project     = "pkslow"
}
resource "google_compute_instance" "test" {
  name         = "pkslow-test"
  machine_type = "e2-micro"
  zone         = "us-west1-a"
  tags = ["http-server", "https-server"]
  boot_disk {
    initialize_params {
      image = "projects/centos-cloud/global/images/centos-8-v20211105"
    }
  }
  network_interface {
    network = "default"
    access_config {
      // Ephemeral public IP
    }
  }
  metadata = {
    foo = "bar"
  }
  metadata_startup_script = "echo hi > /test.txt"
  service_account {
    # Google recommends custom service accounts that have cloud-platform scope and permissions granted via IAM Roles.
    email  = "admin-for-all@pkslow.iam.gserviceaccount.com"
    scopes = ["cloud-platform"]
  }
}

检查是否创建成功:

$ gcloud compute instances list
NAME         ZONE        MACHINE_TYPE  PREEMPTIBLE  INTERNAL_IP  EXTERNAL_IP     STATUS
pkslow-test  us-west1-a  e2-micro                   10.138.0.6   34.83.138.xxx   RUNNING
pkslow-vm    us-west1-a  e2-micro                   10.138.0.5   34.145.124.xxx  RUNNING

也可以界面上查看:

在GCP上创建GCE的三种方式(Console,gcloud,Terraform)

5 代码

代码请查看GitHub: https://github.com/LarryDpk/pkslow-samples