Build aplikasi Kotlin Spring Boot Kotlin dan deploy ke Cloud Run

Google menyediakan alat build gambar yang canggih agar Anda dapat dengan mudah mem-build dan memublikasikan image container Docker yang dioptimalkan untuk aplikasi Java dalam waktu singkat tanpa Docker atau Dockerfile. Google Cloud juga menghadirkan server tanpa server ke container dengan Cloud Run, sebuah platform komputasi terkelola yang secara otomatis menskalakan container stateless Anda. Dalam codelab ini, Anda akan melihat betapa mudahnya mem-build aplikasi Kotlin Spring Boot, memublikasikan ke Container Registry, dan menjalankan gambar di Google Cloud dengan lancar.

Codelab ini memandu Anda dalam menyiapkan aplikasi sederhana di Kotlin, yang menunjukkan penggunaan layanan dan alat Google Cloud, termasuk Jib, Container Registry, dan Cloud Run.

Prasyarat

  • Pemahaman tentang bahasa dan alat pemrograman Java
  • Pengetahuan tentang editor teks Linux standar, seperti Vim, Emacs, dan nano

Yang akan Anda lakukan

  • Siapkan aplikasi Kotlin Spring Boot.
  • Membuat image Docker yang dioptimalkan.
  • Publikasikan gambar ke Container Registry.
  • Jalankan aplikasi dalam container di Cloud Run.

Yang Anda butuhkan

  • Project Google Cloud
  • Browser, seperti Google Chrome

Penyiapan lingkungan mandiri

  1. Login ke Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. (Jika belum memiliki akun Gmail atau G Suite, Anda harus membuatnya.)

Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project ID tersebut selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID.

  1. Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.

Menjalankan melalui codelab ini tidak akan menghabiskan biaya lebih dari beberapa dolar, tetapi bisa lebih jika Anda memutuskan untuk menggunakan lebih banyak resource atau jika Anda membiarkannya tetap berjalan.

Pengguna baru Google Cloud memenuhi syarat untuk mendapatkan uji coba gratis senilai$300.

Cloud Shell

Meskipun Google Cloud dapat dioperasikan dari jarak jauh dari laptop Anda, dalam codelab ini, Anda akan menggunakan Cloud Shell, lingkungan command line yang berjalan di Google Cloud.

Aktifkan Cloud Shell

  1. Dari Cloud Console, klik Aktifkan Cloud Shell .

Jika belum pernah memulai Cloud Shell, Anda akan melihat layar perantara (di paruh bawah) yang menjelaskan apa itu Cloud Shell. Jika demikian, klik Lanjutkan (dan Anda tidak akan pernah melihatnya lagi). Berikut tampilan layar sekali-tampil tersebut:

Perlu waktu beberapa saat untuk penyediaan dan terhubung ke Cloud Shell.

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda dalam codelab ini dapat dilakukan hanya dengan browser atau Chromebook.

Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke project ID Anda.

  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list

Output perintah

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

Output perintah

[core]
project = <PROJECT_ID>

Jika tidak, Anda dapat menyetelnya dengan perintah ini:

gcloud config set project <PROJECT_ID>

Output perintah

Updated property [core/project].
  1. Membuat aplikasi Spring Boot baru dengan Spring Initializr.
$ curl https://start.spring.io/starter.tgz \
    -d language=kotlin \
    -d dependencies=web \
    -d baseDir=kotlin-jib-cloud-run | tar -xzvf -

Perhatikan bahwa Initializr akan otomatis menambahkan spring-boot-starter-web ke dependensi Anda di pom.xml aplikasi template.

  1. Ubah ke direktori aplikasi template.
$ cd kotlin-jib-cloud-run
  1. Buat dan jalankan aplikasi menggunakan Maven.
$ ./mvnw -DskipTests spring-boot:run
  1. Setelah dimulai, aplikasi akan mulai mendengarkan di port 8080. Klik Pratinjau Web di toolbar Cloud Shell dan pilih Pratinjau di port 8080 untuk mengakses aplikasi.

  1. Anda akan mendapatkan kembali respons 404 karena aplikasi belum melakukan tindakan apa pun yang berguna. Hentikan aplikasi dengan Control+C.
  1. Buat class Controller berikut dalam paket demo:
$ vi src/main/kotlin/com/example/demo/Controller.kt
    or
$ nano src/main/kotlin/com/example/demo/Controller.kt

src/main/kotlin/com/example/demo/Controller.kt

package com.example.demo

import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController

@RestController
class Controller {
  
  @GetMapping("/")
  fun saySomething(): String {
    return "Kotlin app on Cloud Run, containerized by Jib!"
  }
}
  1. Buat ulang dan jalankan aplikasi.
$ ./mvnw spring-boot:run
  1. Periksa aplikasi lagi menggunakan Pratinjau Web . Kali ini, Anda akan melihat pesan, "Kotlin app on Cloud Run, containerized by Jib!". Hentikan aplikasi dengan Control+C.

Dengan Jib, Anda dapat mem-build aplikasi dalam container dengan cara yang dioptimalkan tanpa Docker dan memublikasikannya ke registry container apa pun.

  1. Sebelum melanjutkan, Anda perlu mengaktifkan Container Registry API. Hal ini hanya perlu dilakukan sekali per project agar API dapat diakses.
$ gcloud services enable containerregistry.googleapis.com
  1. Jalankan Jib untuk mem-build image Docker dan memublikasikan ke Container Registry.
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:1.8.0:build \
    -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run

Pada akhirnya, Anda akan melihat pesan berikut bahwa aplikasi tersebut ada di dalam container dan dikirim ke Container Registry Anda.

[INFO] Built and pushed image as gcr.io/PROJECT_ID/kotlin-jib-cloud-run
...
[INFO] BUILD SUCCESS

Jika Anda melihat error, periksa kembali apakah $GOOGLE_CLOUD_PROJECT ditetapkan dengan benar ke project ID Google Cloud Anda (PROJECT_ID).

  1. Sebelum melanjutkan, periksa apakah gambar berhasil dipublikasikan. Kembali ke Cloud Console, klik Menu navigasi , lalu pilih Container Registry.

Anda akan melihat bahwa gambar berhasil dipublikasikan.

Cloud Run menghadirkan container tanpa server ke container, yang secara otomatis menskalakan container stateless Anda.

  1. Klik Menu navigasi lagi dan pilih Cloud Run.

Jika ini pertama kalinya Anda mengakses Cloud Run, Anda akan melihat dialog berikut untuk penyiapan satu kali. Klik Mulai Menggunakan Cloud Run jika muncul.

  1. Di halaman Cloud Run, klik Buat Layanan.

  1. Di layar berikutnya, klik Pilih pada bagian Sumber. Sumber adalah gambar yang ingin Anda jalankan di Cloud Run.

  1. Dialog akan menampilkan gambar yang telah Anda buat sebelumnya. Pilih gambar, lalu klik Lanjutkan.

  1. Anda hanya perlu beberapa klik untuk men-deploy aplikasi sekarang. Di bagian Platform deployment, pilih Cloud Run (terkelola sepenuhnya) agar layanan terkelola sepenuhnya di Google Cloud. Pilih region yang sesuai dengan lokasi Anda, pilih Izinkan pemanggilan yang tidak diautentikasi, lalu klik Buat. Selesai.

Setelah image diterapkan sepenuhnya, halaman Cloud Run akan menampilkan URL untuk mengakses aplikasi. Coba lihat!

Pada akhirnya, Anda akan melihat pesan yang Anda harapkan dari aplikasi.

Kotlin app on Cloud Run, containerized by Jib!

Selesai. Di masa mendatang, jika perlu men-deploy versi aplikasi baru, Anda dapat melakukannya dengan mengklik Deploy Revisi Baru di halaman.

  1. Untuk membersihkan lingkungan, Anda harus menghapus aplikasi yang di-deploy di Cloud Run dan image yang dipublikasikan di Container Registry. Buka Cloud Run, pilih aplikasi, lalu klik Hapus.

  1. Demikian pula, buka halaman Container Registry dan hapus gambar.

Selamat! Anda telah berhasil mem-build aplikasi Kotlin Spring Boot dan men-deploy-nya ke Cloud Run.

Dengan menggunakan Jib, Anda mem-build image container yang dioptimalkan tanpa menginstal Docker atau menulis Dockerfile dan memublikasikannya ke Container Registry. Jib mengoptimalkan konstruksi gambar, sehingga siapa pun yang tidak memiliki pengetahuan Docker yang mendalam dapat menampung aplikasi Java dengan cepat dan efisien. Kemudian, dengan beberapa klik, Anda telah men-deploy aplikasi ke Cloud Run untuk mulai menayangkan dalam waktu singkat.

Pelajari lebih lanjut