Spring Boot Kotlin uygulamasını container mimarisine alma ve Cloud Run'a dağıtma

1. Başlamadan önce

Google, Docker veya Dockerfile kullanmadan Java uygulamaları için optimize edilmiş Docker container görüntülerini kolayca derleyip yayınlamanıza olanak tanıyan güçlü bir görüntü derleme aracı sunar. Google Cloud ayrıca durum bilgisiz container'larınızı otomatik olarak ölçeklendiren yönetilen bilgi işlem platformu Cloud Run ile container'lara sunucusuz çözüm sunar. Bu codelab'de, Spring Boot Kotlin uygulamanızı container mimarisine almanın, Container Registry'de yayınlamanın ve görüntüyü Google Cloud'da sorunsuz bir şekilde çalıştırmanın ne kadar kolay olduğunu göreceksiniz.

Bu codelab'de Jib, Container Registry ve Cloud Run gibi Google Cloud hizmet ve araçlarının kullanımını gösteren, Kotlin'de basit bir uygulamayı nasıl oluşturacağınızı öğrenebilirsiniz.

Ön koşullar

  • Java programlama dili ve araçları hakkında bilgi
  • Vim, Emacs ve nano gibi standart Linux metin düzenleyicileri hakkında bilgi

Yapacaklarınız

  • Spring Boot Kotlin uygulaması oluşturun.
  • Optimize edilmiş bir Docker görüntüsü oluşturun.
  • Görüntüyü Container Registry'de yayınlayın.
  • Container mimarisine alınmış uygulamayı Cloud Run'da çalıştırın.

Gerekenler

  • Bir Google Cloud projesi
  • Google Chrome gibi bir tarayıcı

2. Kurulum

Kendi hızınızda ortam kurulumu

  1. Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Tüm Google Cloud projelerinde benzersiz bir ad olan proje kimliğini unutmayın (yukarıdaki ad zaten alınmış ve size uygun olmayacaktır!). Bu kod laboratuvarın ilerleyen bölümlerinde PROJECT_ID olarak adlandırılacaktır.

  1. Sonraki adımda, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.

Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. "Temizleme" bölümündeki talimatları izlediğinizden emin olun. bölümünde, bu eğiticinin dışında faturalandırmayla karşılaşmamanız için kaynakları nasıl kapatacağınız konusunda tavsiyelerde bulunuyoruz. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.

Cloud Shell

Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de bu codelab'de Google Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız.

Cloud Shell'i etkinleştirme

  1. Cloud Console'da, Cloud Shell'i etkinleştir 4292cbf4971c9786.png simgesini tıklayın.

bce75f34b2c53987.png

Cloud Shell'i daha önce hiç başlatmadıysanız ne olduğunu açıklayan bir ara ekran (ekranın alt kısmında) gösterilir. Bu durumda Devam'ı tıklayın (bunu bir daha görmezsiniz). Tek seferlik ekran şöyle görünür:

70f315d7b402b476.png

Temel hazırlık ve Cloud Shell'e bağlanmak yalnızca birkaç dakika sürer.

fbe3a0674c982259.png

İhtiyaç duyduğunuz tüm geliştirme araçları bu sanal makinede yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu codelab'deki çalışmalarınızın tamamı olmasa bile büyük bir kısmı yalnızca bir tarayıcı veya Chromebook'unuzla yapılabilir.

Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin proje kimliğinize ayarlandığını görürsünüz.

  1. Kimlik doğrulamanızın tamamlandığını onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud auth list

Komut çıkışı

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud komutunun projenizi bildiğini onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Doğru değilse aşağıdaki komutla ayarlayabilirsiniz:

gcloud config set project <PROJECT_ID>

Komut çıkışı

Updated property [core/project].

3. Spring Boot uygulamasını başlatma

  1. Spring Initializr ile yeni bir Spring Boot uygulaması oluşturun.
$ curl https://start.spring.io/starter.tgz \
    -d language=kotlin \
    -d dependencies=web \
    -d baseDir=kotlin-jib-cloud-run | tar -xzvf -

Başlatıcı'nın, spring-boot-starter-web öğesini şablon uygulamasının pom.xml bölümündeki bağımlılıklarınıza otomatik olarak ekleyeceğini unutmayın.

  1. Şablon uygulamasının dizinine geçin.
$ cd kotlin-jib-cloud-run
  1. Uygulamayı Maven kullanarak derleyip çalıştırın.
$ ./mvnw -DskipTests spring-boot:run
  1. Başlatıldıktan sonra uygulama 8080 numaralı bağlantı noktasından dinlemeye başlar. Uygulamaya erişmek için Cloud Shell araç çubuğunda Web Önizlemesi'ni 396bfd51f55afb5d.pngtıklayın ve 8080 bağlantı noktasında önizle'yi seçin.

4172e1e141daf0c1.png

  1. Uygulama henüz faydalı bir özellik sunmadığından 404 yanıtı alırsınız. Control+C ile uygulamayı durdurun.

4. Web denetleyicisi ekleyin

  1. Demo paketinde şu Controller sınıfını oluşturun:
$ 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. Uygulamayı yeniden derleyip çalıştırın.
$ ./mvnw spring-boot:run
  1. Web Önizlemesi a6cfcaa1d2119c52.png aracını kullanarak uygulamayı tekrar kontrol edin. Bu kez "Kotlin app on Cloud Run, containerized by Jib!" mesajını göreceksiniz. Control+C ile uygulamayı durdurun.

5. Uygulamanızı container mimarisine alma ve Container Registry'de yayınlama

Jib sayesinde, uygulamanızı Docker olmadan optimize edilmiş bir şekilde container mimarisine alabilir ve herhangi bir container kayıt otoritesine yayınlayabilirsiniz.

  1. Devam etmeden önce Container Registry API'yi etkinleştirmeniz gerekir. Bu işlemin API'yi erişilebilir hale getirmek için proje başına yalnızca bir kez yapılması yeterlidir.
$ gcloud services enable containerregistry.googleapis.com
  1. Docker görüntüsü derlemek ve Container Registry'de yayınlamak için Jib'i çalıştırın.
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:3.1.1:build \
    -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run

Son olarak, uygulamanın container mimarisine alındığını ve Container Registry'nize aktarıldığını belirten aşağıdaki mesajı görürsünüz.

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

Hata görüyorsanız $GOOGLE_CLOUD_PROJECT öğesinin Google Cloud proje kimliğinize (PROJECT_ID) doğru şekilde ayarlanıp ayarlanmadığını tekrar kontrol edin.

  1. Devam etmeden önce resmin başarıyla yayınlanıp yayınlanmadığını kontrol edin. Cloud Console'a dönün, gezinme menüsünüc8b4ea3c68f4c1e3.png tıklayın ve Container Registry'yi seçin.

6421550ba806beab.png

38ae0ca573c3dcd.png

Resminizin başarıyla yayınlandığını görürsünüz.

c9086605411691c3.png

6. Container mimarisine alınmış uygulamayı Cloud Run'da çalıştırın

Cloud Run, durum bilgisiz container'larınızı otomatik olarak ölçeklendirerek container'lara sunucusuzdur.

  1. Gezinme menüsünüc8b4ea3c68f4c1e3.png tekrar tıklayın ve Cloud Run'ı seçin.

812c7c87527ebe4a.png

Cloud Run'a ilk kez erişiyorsanız tek seferlik kurulum için aşağıdaki iletişim kutusunu görürsünüz. Gösteriliyorsa Cloud Run'ı Kullanmaya Başla'yı tıklayın.

1b2bf05712f6150a.png

  1. Cloud Run sayfasında Create Service'i (Hizmet Oluştur) tıklayın.

c0b4b980662f7807.png

  1. Bir sonraki ekranda Kaynak bölümünde Seç'i tıklayın. Kaynak, Cloud Run'da çalıştırmak istediğiniz görüntüdür.

2049621ae97d62ee.png

  1. İletişim kutusunda daha önce oluşturduğunuz resim gösterilir. Resmi seçin ve Devam'ı tıklayın.

564367bc65caefbf.png

  1. Uygulamanızı hemen dağıtmanıza yalnızca birkaç tıklama kaldı. Hizmetin Google Cloud'da tümüyle yönetilmesi için Dağıtım platformu bölümünde Cloud Run (tümüyle yönetilen) seçeneğini belirleyin. Konumunuz için uygun bir bölge seçin, Kimliği doğrulanmayan çağrılara izin ver'i seçin ve Oluştur'u tıklayın. İşte bu kadar.

3eb0f51d15326cac.png

Görüntü tamamen dağıtıldığında Cloud Run sayfasında uygulamaya erişim URL'si gösterilir. Mutlaka göz atın.

8bf800dd6e2f44f2.png

Sonunda uygulamadan beklediğiniz mesajı görürsünüz.

Kotlin app on Cloud Run, containerized by Jib!

İşte bu kadar. Gelecekte yeni uygulama sürümleri dağıtmanız gerekirse sayfada Yeni Düzeltmeyi Dağıt'ı tıklayarak bunu yapabilirsiniz.

7. Temizleme

  1. Ortamınızı temizlemek için Cloud Run'da dağıtılan uygulamayı ve Container Registry'de yayınlanan görüntüyü silmeniz gerekir. Cloud Run'a gidin, uygulamayı seçin ve Sil'i tıklayın.

1dfc2f51c1b5f6e.png

  1. Benzer şekilde, Container Registry sayfasına gidin ve görüntüyü silin.

1b724136c1655935.png

8. Tebrikler

Tebrikler! Spring Boot Kotlin uygulamanızı başarıyla container mimarisine aldınız ve Cloud Run'a dağıttınız.

Jib'i kullanarak, Docker yüklenmeden veya Dockerfile yazmadan optimize edilmiş bir container görüntüsü derleyip Container Registry'de yayınladınız. Jib, görüntü oluşturma işlemini optimize eder. Böylece, ayrıntılı Docker bilgisi olmayan herkes Java uygulamalarını hızlı ve verimli bir şekilde container mimarisine alabilir. Ardından, birkaç tıklamayla uygulamayı hemen Cloud Run'a dağıtarak hizmet vermeye hemen başlayabilirsiniz.

Daha fazla bilgi