Memasukkan aplikasi Kotlin Spring Boot ke dalam container dan men-deploy-nya ke Cloud Run

1. Sebelum memulai

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

Codelab ini memandu Anda dalam menyiapkan aplikasi sederhana di Kotlin, yang mendemonstrasikan 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.
  • Membangun image Docker yang dioptimalkan.
  • Publikasikan image ke Container Registry.
  • Jalankan aplikasi dalam container di Cloud Run.

Yang Anda butuhkan

  • Project Google Cloud
  • Browser, seperti Google Chrome

2. Mempersiapkan

Penyiapan lingkungan mandiri

  1. Login ke Cloud Console lalu buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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 operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai$300 USD.

Cloud Shell

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

Mengaktifkan Cloud Shell

  1. Dari Cloud Console, klik Aktifkan Cloud Shell 4292cbf4971c9786.pngS.

bce75f34b2c53987.png

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:

70f315d7b402b476.pngS

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

fbe3a0674c982259.png

Mesin virtual ini dimuat dengan semua alat pengembangan yang Anda butuhkan. 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`
  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda:
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].

3. Melakukan inisialisasi aplikasi Spring Boot

  1. Buat 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. Bangun dan jalankan aplikasi menggunakan Maven.
$ ./mvnw -DskipTests spring-boot:run
  1. Setelah dimulai, aplikasi akan mulai memproses di port 8080. Klik Web Preview 396bfd51f55afb5d.pngS di toolbar Cloud Shell, lalu pilih Preview on port 8080 untuk mengakses aplikasi.

4172e1e141daf0c1.pngS

  1. Anda akan mendapatkan respons 404 karena aplikasi belum melakukan hal yang berguna. Hentikan aplikasi dengan Control+C.

4. Tambahkan pengontrol web

  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. Build ulang dan jalankan aplikasi.
$ ./mvnw spring-boot:run
  1. Periksa aplikasi lagi menggunakan Pratinjau Web a6cfcaa1d2119c52.png. Kali ini, Anda akan melihat pesan, "Kotlin app on Cloud Run, containerized by Jib!". Hentikan aplikasi dengan Control+C.

5. Memasukkan aplikasi ke dalam container dan memublikasikannya ke Container Registry

Dengan Jib, Anda dapat memasukkan aplikasi ke dalam container dengan cara yang optimal tanpa Docker dan memublikasikannya ke container registry apa pun.

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

Terakhir, Anda akan melihat pesan berikut yang menyatakan bahwa aplikasi berada 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 Konsol Cloud, klik Navigation menu c8b4ea3c68f4c1e3.png, lalu pilih Container Registry.

6421550ba806beab.pngS

38ae0ca573c3dcd.pngS

Anda akan melihat bahwa gambar berhasil dipublikasikan.

c9086605411691c3.png

6. Menjalankan aplikasi dalam container di Cloud Run

Cloud Run menghadirkan model serverless ke container, yang otomatis menskalakan container stateless Anda.

  1. Klik Navigation menu c8b4ea3c68f4c1e3.png lagi dan pilih Cloud Run.

812c7c87527ebe4a.pngS

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

1b2bf05712f6150a.png

  1. Di halaman Cloud Run, klik Create Service.

c0b4b980662f7807.png

  1. Di layar berikutnya, klik Select di bagian Source. Sumbernya adalah image yang ingin Anda jalankan di Cloud Run.

2049621ae97d62ee.pngS

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

564367bc65caefbf.png

  1. Anda hanya perlu beberapa klik lagi 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 untuk lokasi Anda, pilih Allow unauthenticated invocations, lalu klik Create. Selesai.

3eb0f51d15326cac.pngS

Setelah image di-deploy sepenuhnya, halaman Cloud Run akan menampilkan URL untuk mengakses aplikasi. Ayo lihat!

8bf800dd6e2f44f2.pngS

Di bagian akhir, Anda akan melihat pesan yang diharapkan 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 New Revisi di halaman.

7. Pembersihan

  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 Delete.

1dfc2f51c1b5f6e.pngS

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

1b724136c1655935.pngS

8. Selamat

Selamat! Anda berhasil memasukkan aplikasi Kotlin Spring Boot ke dalam container dan men-deploy-nya ke Cloud Run.

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

Pelajari lebih lanjut