Panduan memulai: Deploy layanan Ruby ke Cloud Run

Pelajari cara membuat aplikasi Hello World sederhana, memaketkannya ke dalam image container, mengupload image container ke Artifact Registry, lalu men-deploy image container ke Cloud Run. Anda dapat menggunakan bahasa lain selain yang sudah ditampilkan.

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. Install the Google Cloud CLI.
  5. To initialize the gcloud CLI, run the following command:

    gcloud init
  6. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

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

  8. Install the Google Cloud CLI.
  9. To initialize the gcloud CLI, run the following command:

    gcloud init
  10. Guna menetapkan project default untuk layanan Cloud Run Anda:
     gcloud config set project PROJECT_ID
    Ganti PROJECT_ID dengan nama project yang Anda buat untuk panduan memulai ini.
  11. Jika Anda dikenai kebijakan organisasi pembatasan domain yang membatasi pemanggilan yang tidak terautentikasi untuk project, Anda perlu mengakses layanan yang di-deploy seperti yang dijelaskan di bagian Menguji layanan pribadi.

Menulis aplikasi contoh

Untuk menulis sebuah aplikasi Ruby:

  1. Buatlah direktori baru bernama helloworld, lalu pindahlah ke direktori tersebut:

    mkdir helloworld
    cd helloworld
    
  2. Buat file bernama app.rb lalu tempelkan kode berikut ke dalamnya:

    require "sinatra"
    
    set :bind, "0.0.0.0"
    port = ENV["PORT"] || "8080"
    set :port, port
    
    get "/" do
      name = ENV["NAME"] || "World"
      "Hello #{name}!"
    end

    Kode ini menghasilkan sebuah web server dasar yang memantau port yang ditentukan oleh variabel PORT lingkungan.

  3. Buat nama file Gemfile dan salin kode berikut ke dalamnya:

    source "https://rubygems.org"
    
    gem "sinatra", "~>3.1"
    gem "thin"
    
    group :test do
      gem "rack-test"
      gem "rest-client"
      gem "rspec"
      gem "rspec_junit_formatter"
      gem "rspec-retry"
      gem "rubysl-securerandom"
    end
    
  4. Apabila Anda belum menginstal Bundler 2.0 atau yang lebih baru, instal Bundler.

  5. Buat file Gemfile.lock dengan menjalankan:

    bundle install

  6. Buat file baru bernama Dockerfile di dalam direktori yang sama dengan file sumber:

    
    # Use the official Ruby image.
    # https://hub.docker.com/_/ruby
    FROM ruby:3.2-buster
    
    # Install production dependencies.
    WORKDIR /usr/src/app
    COPY Gemfile Gemfile.lock ./
    ENV BUNDLE_FROZEN=true
    RUN gem install bundler && bundle config set --local without 'test'
    
    # Copy local code to the container image.
    COPY . ./
    RUN bundle install
    
    # Run the web service on container startup.
    CMD ["ruby", "./app.rb"]
    
  7. Tambahkan file .dockerignore untuk mengecualikan file dari image container Anda.

    Dockerfile
    README.md
    .ruby-version
    .bundle/
    vendor/
    

Aplikasi Anda sudah selesai dan siap untuk di-deploy.

Deploy ke Cloud Run dari sumber

Penting: Panduan memulai ini mengasumsikan bahwa Anda memiliki peran pemilik atau editor dalam project yang Anda gunakan untuk panduan memulai tersebut. Atau melihat izin deployment Cloud Run, izin Cloud Build, dan izin Artifact Registry untuk izin yang diperlukan.

Men-deploy dari sumber secara otomatis akan mem-build image container dari kode sumber dan men-deploy-nya.

Untuk men-deploy dari sumber:

  1. Dalam direktori kode sumber Anda, deploy dari sumber menggunakan perintah berikut:

    gcloud run deploy

    Jika diminta mengaktifkan API, Balas y untuk mengaktifkan.

    1. Ketika Anda diminta untuk memasukkan lokasi kode sumber, tekan Enter untuk men-deploy folder saat ini.

    2. Saat diminta memasukkan nama layanan, tekan Enter untuk menerima nama default, misalnya helloworld.

    3. Jika Anda diminta untuk mengaktifkan Artifact Registry API atau mengizinkan pembuatan repositori Artifact Registry, tanggapi dengan menekan y.

    4. Saat Anda diminta untuk memasukkan region: pilih region pilihan Anda, misalnya us-central1.

    5. Anda akan diminta untuk mengizinkan pemanggilan yang tidak diautentikasi: merespons y .

    Lalu tunggu sebentar sampai proses deployment selesai. Jika berhasil, command line akan menampilkan URL layanannya.

  2. Kunjungi layanan yang telah di-deploy dengan membuka URL layanan pada browser web.

Lokasi Cloud Run

Cloud Run bersifat regional, berarti infrastruktur yang menjalankan layanan Cloud Run Anda terletak di region tertentu dan dikelola oleh Google agar tersedia secara redundan di semua zona dalam region tersebut.

Memenuhi persyaratan latensi, ketersediaan, atau ketahanan adalah faktor utama untuk memilih region tempat layanan Cloud Run dijalankan. Pada umumnya, Anda dapat memilih region yang paling dekat dengan pengguna Anda, tetapi Anda harus mempertimbangkan lokasi dari produk Google Cloud lain yang digunakan oleh layanan Cloud Run Anda. Menggunakan produk Google Cloud secara bersamaan di beberapa lokasi dapat memengaruhi latensi serta biaya layanan Anda.

Cloud Run tersedia di region berikut:

Tergantung harga Tingkat 1

  • asia-east1 (Taiwan)
  • asia-northeast1 (Tokyo)
  • asia-northeast2 (Osaka)
  • europe-north1 (Finlandia) ikon daun CO2 Rendah
  • europe-southwest1 (Madrid)
  • europe-west1 (Belgia) ikon daun CO2 Rendah
  • europe-west4 (Belanda)
  • europe-west8 (Milan)
  • europe-west9 (Paris) ikon daun CO2 Rendah
  • me-west1 (Tel Aviv)
  • us-central1 (Iowa) ikon daun CO2 rendah
  • us-east1 (South Carolina)
  • us-east4 (North Virginia)
  • us-east5 (Columbus)
  • us-south1 (Dallas)
  • us-west1 (Oregon) ikon daun CO2 Rendah

Tergantung harga Tingkat 2

  • africa-south1 (Johannesburg)
  • asia-east2 (Hong Kong)
  • asia-northeast3 (Seoul, Korea Selatan)
  • asia-southeast1 (Singapura)
  • asia-southeast2 (Jakarta)
  • asia-south1 (Mumbai, India)
  • asia-south2 (Delhi, India)
  • australia-southeast1 (Sydney)
  • australia-southeast2 (Melbourne)
  • europe-central2 (Warsawa, Polandia)
  • europe-west10 (Berlin)
  • europe-west12 (Turin)
  • europe-west2 (London, Inggris Raya) ikon daun CO2 Rendah
  • europe-west3 (Frankfurt, Jerman) ikon daun CO2 Rendah
  • europe-west6 (Zurich, Swiss) ikon daun CO2 Rendah
  • me-central1 (Doha)
  • me-central2 (Damam)
  • northamerica-northeast1 (Montreal) ikon daun CO2 Rendah
  • northamerica-northeast2 (Toronto) ikon daun CO2 Rendah
  • southamerica-east1 (Sao Paulo, Brasil) ikon daun CO2 Rendah
  • southamerica-west1 (Santiago, Cile) ikon daun CO2 Rendah
  • us-west2 (Los Angeles)
  • us-west3 (Salt Lake City)
  • us-west4 (Las Vegas)

Jika sudah membuat layanan Cloud Run, Anda dapat melihat region di dasbor Cloud Run di Konsol Google Cloud.

Selamat! Anda baru saja men-deploy image container dari kode sumber ke Cloud Run. Cloud Run meningkatkan skala image container secara otomatis dan horizontal untuk menangani permintaan yang diterima, lalu menurunkan skala saat permintaan berkurang. Anda hanya membayar untuk CPU, memori, dan jaringan yang terpakai selama penanganan permintaan.

Pembersihan

Menghapus project pengujian Anda

Meskipun Cloud Run tidak mengenakan biaya saat layanannya tidak digunakan, Anda mungkin tetap dikenai biaya atas penyimpanan image container di Artifact Registry. Anda dapat menghapus image container atau menghapus project Google Cloud untuk menghindari tagihan. Menghapus project Google Cloud Anda akan menghentikan penagihan untuk semua resource yang digunakan dalam project tersebut.

  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.

Langkah selanjutnya

Untuk informasi lebih lanjut dalam mem-build container dari kode sumber dan penerapan untuk repositori, lihat: