Panduan memulai: Deploy layanan shell ke Cloud Run

Deploy layanan shell ke Cloud Run

Pelajari cara membuat aplikasi Hello World yang sederhana, mengemasnya 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. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Menginstal Google Cloud CLI.
  5. Untuk initialize gcloud CLI, jalankan perintah berikut:

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

    Buka pemilih project

  7. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  8. Menginstal Google Cloud CLI.
  9. Untuk initialize gcloud CLI, jalankan perintah berikut:

    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 diautentikasi untuk project Anda, maka Anda perlu mengakses layanan yang sudah Anda deploy seperti yang dijelaskan di bagian Menguji layanan pribadi.

Menulis aplikasi contoh

Untuk menulis aplikasi Shell:

  1. Buat direktori baru yang bernama helloworld-shell, dan pindahlah ke direktori tersebut:

    mkdir helloworld-shell
    cd helloworld-shell
    
  2. Lakukan inisialisasi file go.mod untuk mendeklarasikan go modul:

    module github.com/GoogleCloudPlatform/cloud-run-samples/helloworld-shell
    
    go 1.19
    

    Anda dapat membuat file go.mod secara langsung dalam format seperti yang ditunjukkan di atas atau Anda dapat melakukan inisialisasi dari direktori project dengan:

    go mod init
    
  3. Buat file script.sh dengan konten berikut:

    
    set -e
    echo "Hello ${NAME:-World}!"
    

    Untuk menjalankan skrip shell ini pada setiap permintaan yang masuk, contoh ini menggunakan Go program kecil yang memulai server web dasar dan memproses port yang ditentukan oleh variabel lingkungan PORT.

  4. Buat file invoke.go dengan konten berikut:

    
    // Sample helloworld-shell is a Cloud Run shell-script-as-a-service.
    package main
    
    import (
    	"log"
    	"net/http"
    	"os"
    	"os/exec"
    )
    
    func main() {
    	http.HandleFunc("/", scriptHandler)
    
    	// Determine port for HTTP service.
    	port := os.Getenv("PORT")
    	if port == "" {
    		port = "8080"
    		log.Printf("Defaulting to port %s", port)
    	}
    
    	// Start HTTP server.
    	log.Printf("Listening on port %s", port)
    	if err := http.ListenAndServe(":"+port, nil); err != nil {
    		log.Fatal(err)
    	}
    }
    
    func scriptHandler(w http.ResponseWriter, r *http.Request) {
    	cmd := exec.CommandContext(r.Context(), "/bin/bash", "script.sh")
    	cmd.Stderr = os.Stderr
    	out, err := cmd.Output()
    	if err != nil {
    		w.WriteHeader(500)
    	}
    	w.Write(out)
    }
    
  5. Buat file baru yang bernama Dockerfile di direktori yang sama dengan file sumber:

    
    # Use the offical golang image to create a binary.
    # This is based on Debian and sets the GOPATH to /go.
    # https://hub.docker.com/_/golang
    FROM golang:1.20-buster as builder
    
    # Create and change to the app directory.
    WORKDIR /app
    
    # Retrieve application dependencies.
    # This allows the container build to reuse cached dependencies.
    # Expecting to copy go.mod and if present go.sum.
    COPY go.* ./
    RUN go mod download
    
    # Copy local code to the container image.
    COPY invoke.go ./
    
    # Build the binary.
    RUN go build -mod=readonly -v -o server
    
    # Use the official Debian slim image for a lean production container.
    # https://hub.docker.com/_/debian
    # https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds
    FROM debian:buster-slim
    RUN set -x && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
        --no-install-recommends \
        ca-certificates && \
        rm -rf /var/lib/apt/lists/*
    
    # Create and change to the app directory.
    WORKDIR /
    
    # Copy the binary to the production image from the builder stage.
    COPY --from=builder /app/server /app/server
    COPY script.sh ./
    
    # Run the web service on container startup.
    CMD ["/app/server"]
    

Aplikasi Anda sudah selesai dan siap untuk di-deploy.

Deploy ke Cloud Run dari sumber

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

Deploy dari sumber secara otomatis 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 untuk mengaktifkan API, Balas y untuk mengaktifkan.

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

    2. Saat Anda 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 diminta untuk memasukkan region: pilih region pilihan Anda, misalnya us-central1.

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

    Maka tunggu sebentar sampai deployment selesai. Jika berhasil, command line akan menampilkan layanan URL:

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

Lokasi Cloud Run

Cloud Run bersifat regional, yang berarti bahwa 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 Anda dijalankan. Umumnya, Anda dapat memilih region yang paling dekat dengan pengguna Anda, tetapi Anda harus mempertimbangkan lokasi produk Google Cloud lain yang digunakan oleh layanan Cloud Run Anda. Menggunakan produk Google Cloud bersama-sama 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 CO 2 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

  • 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 (Warsaw, 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 (Dammam)
  • 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 Anda 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 secara otomatis dan horizontal menyebarkan skala image container Anda 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

Hapus project pengujian Anda

Meskipun Cloud Run tidak mengenakan biaya saat layanannya tidak digunakan, Anda mungkin tetap dikenakan biaya atas penyimpanan image container di Artifact Registry. Anda dapat menghapus image container Anda atau menghapus project Google Cloud Anda untuk menghindari timbulnya 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 berikutnya

Untuk informasi lebih lanjut tentang cara mem-build container dari sumber kode dan mengirimnya ke repositori, lihat: