Memulai Go di Compute Engine


Tutorial ini menunjukkan cara memulai Compute Engine. Ikuti tutorial ini dengan men-deploy aplikasi web Go Hello World ke Compute Engine. Untuk mendapatkan bantuan memulai App Engine, lihat lingkungan standar App Engine.

Tujuan

  • Gunakan Cloud Shell untuk mendownload dan men-deploy aplikasi contoh Hello World.
  • Gunakan Cloud Build untuk mem-build aplikasi contoh Hello World.
  • Deploy aplikasi contoh Hello World ke satu instance Compute Engine.

Biaya

Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga. Pengguna baru Google Cloud mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Aktifkan API Compute Engine and Cloud Build.

    Mengaktifkan API

  5. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Aktifkan API Compute Engine and Cloud Build.

    Mengaktifkan API

  8. Di konsol Google Cloud, buka aplikasi di Cloud Shell.

    Buka Cloud Shell

    Cloud Shell menyediakan akses command line ke resource cloud Anda langsung dari browser.

  9. Jika Anda setuju untuk meng-clone repositori, klik Konfirmasi untuk mendownload kode contoh dan beralih ke direktori aplikasi.

  10. Di Cloud Shell, konfigurasikan gcloud CLI untuk menggunakan project Google Cloud baru Anda:
    # Configure gcloud for your project
    gcloud config set project YOUR_PROJECT_ID

Menjalankan aplikasi di Cloud Shell

  1. Di Cloud Shell, mulai server web lokal:

    go build -o app
    ./app
    
  2. Di Cloud Shell, klik Web preview , lalu pilih Preview on port 8080. Tindakan ini akan membuka jendela baru dengan aplikasi yang sedang berjalan.

    Di browser web, Anda akan melihat Hello, World!.

  3. Jika Anda sudah siap untuk melanjutkan, hentikan server web lokal dengan menekan Control+C di Cloud Shell.

Men-deploy ke satu instance

Bagian ini akan memandu Anda menjalankan satu instance aplikasi di Compute Engine.

Deployment instance tunggal.

Dari Cloud Shell, Anda dapat men-deploy ke satu instance virtual machine (VM) Compute Engine yang menjalankan aplikasi Anda.

Menggunakan Cloud Build untuk mem-build aplikasi

Cloud Build digunakan untuk mem-build aplikasi, mengompresi dalam file tar, dan mengupload file ke bucket Cloud Storage. Bucket adalah penampung dasar yang menyimpan data Anda di Cloud Storage.

  1. Di jendela terminal, buat bucket Cloud Storage, dengan YOUR_BUCKET_NAME mewakili nama bucket Anda:

    gcloud storage buckets create gs://YOUR_BUCKET_NAME

    Anda dapat memilih nama apa pun untuk bucket Cloud Storage Anda. Sebaiknya beri bucket Anda nama yang sama dengan project ID Anda. Nama bucket harus unik di seluruh Google Cloud, jadi Anda mungkin tidak dapat menggunakan project ID sebagai nama bucket.

  2. Mulai proses Cloud Build:

    gcloud builds submit --substitutions=_DEPLOY_DIR=gs://YOUR_BUCKET_NAME,_DEPLOY_FILENAME=app.tar.gz

    Perintah gcloud builds submit menggunakan --substitutions untuk mengonfigurasi lokasi tempat file tar yang dihasilkan diupload. Kemudian, file tar akan didownload ke instance Compute Engine.

    Cloud Build menggunakan file konfigurasi YAML untuk menentukan langkah-langkah yang diperlukan build.

    steps:
      # Print the Go version being used.
      - name: 'mirror.gcr.io/library/golang'
        args: ['go', 'version']
      # Make a deploy directory we'll tar after building the app.
      - name: 'debian'
        args: ['mkdir', '-p', 'deploy/etc/systemd/system/', 'deploy/usr/bin']
      # Build the app.
      - name: 'mirror.gcr.io/library/golang'
        env: [
          'GO111MODULE=on',
          'GOPROXY=https://proxy.golang.org,direct',
          'GOOS=linux',
          'GOARCH=amd64'
        ]
        args: ['go', 'build', '-o', 'deploy/usr/bin/app', '.']
      # Copy the systemd service file into the deploy directory.
      - name: 'debian'
        args: ['cp', 'my-app.service', 'deploy/etc/systemd/system/']
      # Compress the deploy directory.
      - name: 'debian'
        args: ['tar', '-czf', '${_DEPLOY_FILENAME}', '-C', './deploy', '.']
    # Upload the tarball to Cloud Storage.
    artifacts:
      objects:
        location: '${_DEPLOY_DIR}'
        paths: ['${_DEPLOY_FILENAME}']

Menggunakan skrip startup untuk menginisialisasi instance

Anda memerlukan cara untuk menginstruksikan instance mendownload dan menjalankan kode. Instance dapat memiliki skrip startup yang berjalan setiap kali instance dimulai atau dimulai ulang.

Skrip startup berjalan saat instance pertama kali melakukan booting.

set -ex

# Install logging monitor. The monitor will automatically pickup logs sent to syslog.
curl "https://storage.googleapis.com/signals-agents/logging/google-fluentd-install.sh" --output google-fluentd-install.sh
checksum=$(sha256sum google-fluentd-install.sh | awk '{print $1;}')
if [ "$checksum" != "ec78e9067f45f6653a6749cf922dbc9d79f80027d098c90da02f71532b5cc967" ]; then
    echo "Checksum does not match"
    exit 1
fi
chmod +x google-fluentd-install.sh && ./google-fluentd-install.sh
service google-fluentd restart &

APP_LOCATION=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/app-location" -H "Metadata-Flavor: Google")
gsutil cp "$APP_LOCATION" app.tar.gz
tar -xzf app.tar.gz

# Start the service included in app.tar.gz.
service my-app start

Skrip startup akan melakukan tugas-tugas berikut:

  • Menginstal agen Cloud Logging dan mengonfigurasinya untuk memantau log aplikasi.

  • Mendownload dan mengekstrak file tar deployment.

  • Memulai layanan systemd untuk menjalankan aplikasi.

Membuat dan mengonfigurasi instance Compute Engine

  1. Buat instance Compute Engine

    Linux/macOS

    gcloud compute instances create my-app-instance \
    --image-family=debian-10 \
    --image-project=debian-cloud \
    --machine-type=g1-small \
    --scopes userinfo-email,cloud-platform \
    --metadata-from-file startup-script=startup-script.sh \
    --metadata app-location="gs://YOUR_BUCKET_NAME/app.tar.gz" \
    --zone YOUR_ZONE \
    --tags http-server

    Ganti YOUR_ZONE dengan zona pengembangan, misalnya us-central1-a. Untuk mengetahui informasi selengkapnya tentang region dan zona, lihat Geografi dan region.

    Flag --metadata app-location memberi tahu skrip startup tempat mendownload file tar aplikasi.

    Windows

    gcloud compute instances create my-app-instance ^
    --image-family=debian-10 ^
    --image-project=debian-cloud ^
    --machine-type=g1-small ^
    --scopes userinfo-email,cloud-platform ^
    --metadata-from-file startup-script=startup-script.sh ^
    --metadata app-location="gs://YOUR_BUCKET_NAME/app.tar.gz" ^
    --zone YOUR_ZONE ^
    --tags http-server

    Ganti YOUR_ZONE dengan zona pengembangan, misalnya us-central1-a. Untuk mengetahui informasi selengkapnya tentang region dan zona, lihat Geografi dan region.

    Flag --metadata app-location memberi tahu skrip startup tempat mendownload file tar aplikasi.

    Tindakan ini akan membuat instance baru, memungkinkan instance tersebut mengakses layanan Google Cloud, dan menjalankan skrip startup Anda. Nama instance adalah my-app-instance.

  2. Periksa progres pembuatan instance:

    gcloud compute instances get-serial-port-output my-app-instance --zone YOUR_ZONE
    

    Setelah skrip startup selesai, Anda akan melihat pesan berikut:

    startup-script: INFO Finished running startup scripts.
    
  3. Buat aturan firewall untuk mengizinkan traffic ke instance Anda:

    gcloud compute firewall-rules create default-allow-http-80 \
        --allow tcp:80 \
        --source-ranges 0.0.0.0/0 \
        --target-tags http-server \
        --description "Allow port 80 access to http-server"
    

  4. Dapatkan alamat IP eksternal instance Anda:

    gcloud compute instances list
    
  5. Untuk melihat aplikasi Anda berjalan, masukkan URL ini di browser Anda:

    http://YOUR_INSTANCE_IP
    

    Ganti YOUR_INSTANCE_IP dengan alamat IP eksternal instance Anda.

Mengelola dan memantau instance

Anda dapat menggunakan konsol Google Cloud untuk memantau dan mengelola instance.

  1. Di konsol Google Cloud, buka halaman Instance VM.

    Buka VM instances

  2. Di daftar instance virtual machine, klik SSH di baris instance yang ingin Anda hubungkan.
  3. Untuk melihat semua log yang dihasilkan oleh resource Compute Engine, buka halaman Logs Explorer. Buka Logs Explorer

    Cloud Logging dikonfigurasi secara otomatis untuk mengumpulkan log dari berbagai layanan umum, termasuk syslog.

Pembersihan

Agar tidak perlu membayar biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

  1. Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus resource satu per satu

gcloud compute instances delete my-app-instance --zone=YOUR_ZONE --delete-disks=all
gcloud compute firewall-rules delete default-allow-http-80

Langkah selanjutnya