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

1. Başlamadan önce

Google, güçlü bir görüntü oluşturma aracı sunar. Bu araçla, Docker veya Dockerfile olmadan Java uygulamaları için optimize edilmiş bir Docker container görüntüsünü kısa sürede kolayca oluşturup yayınlayabilirsiniz. Google Cloud, durum bilgisiz container'larınızı otomatik olarak ölçeklendiren, yönetilen bir bilgi işlem platformu olan Cloud Run ile container'lara sunucusuz işlem özelliği de getiriyor. Bu codelab'de, Spring Boot Kotlin uygulamanızı kapsüllemenin, 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 dahil olmak üzere Google Cloud hizmetlerinin ve araçlarının kullanımını gösteren Kotlin'de basit bir uygulamayı nasıl ayarlayacağınız açıklanmaktadır.

Ön koşullar

  • Java programlama dili ve araçları hakkında bilgi sahibi olma
  • Vim, Emacs ve nano gibi standart Linux metin düzenleyicileri hakkında bilgi sahibi olmanız gerekir.

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.

İhtiyacınız olanlar

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

2. Hazırlanma

Yönlendirmesiz ortam kurulumu

  1. Cloud Console'da oturum açın ve 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

Proje kimliğini unutmayın. Bu kimlik, tüm Google Cloud projelerinde benzersiz bir addır (Yukarıdaki ad zaten alınmış olduğundan sizin için çalışmayacaktır). Bu codelab'in ilerleyen kısımlarında PROJECT_ID olarak adlandırılacaktır.

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

Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırma ücreti alınmaması için kaynakları nasıl kapatacağınız konusunda size tavsiyelerde bulunan "Temizleme" bölümündeki talimatları uyguladığınızdan emin olun. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Cloud Shell

Google Cloud'u dizüstü bilgisayarınızdan uzaktan çalıştırabilirsiniz ancak 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 'i 4292cbf4971c9786.png 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ı) gösterilir. Bu durumda Devam'ı tıkladığınızda bu ekranı bir daha görmezsiniz. Bu tek seferlik ekran aşağıdaki gibi görünür:

70f315d7b402b476.png

Cloud Shell'in temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır.

fbe3a0674c982259.png

Bu sanal makine, ihtiyaç duyduğunuz tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin bulunur ve Google Cloud'da çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki çalışmalarınızın neredeyse tamamını yalnızca bir tarayıcı veya Chromebook'unuzla yapabilirsiniz.

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. Kimliğinizin doğrulandığını onaylamak için Cloud Shell'de şu 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 projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Değilse şu komutla ayarlayabilirsiniz:

gcloud config set project <PROJECT_ID>

Komut çıkışı

Updated property [core/project].

3. Spring Boot uygulaması 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 -

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

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

4172e1e141daf0c1.png

  1. Uygulama henüz yararlı bir işlem yapmadığı için 404 yanıtı almanız gerekir. Control+C ile uygulamayı durdurun.

4. Web denetleyicisi ekleme

  1. Demo paketinde aşağıdaki 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 oluşturup çalıştırın.
$ ./mvnw spring-boot:run
  1. Web Önizleme 'yi a6cfcaa1d2119c52.png kullanarak uygulamayı tekrar kontrol edin. Bu kez "Kotlin app on Cloud Run, containerized by Jib!" mesajını görmelisiniz. Control+C ile uygulamayı durdurun.

5. Uygulamanızı kapsayıcıya alma ve Container Registry'de yayınlama

Jib ile Docker olmadan uygulamanızı optimize edilmiş bir şekilde kapsayabilir ve herhangi bir kapsayıcı kayıt defterinde yayınlayabilirsiniz.

  1. Devam etmeden önce Container Registry API'yi etkinleştirmeniz gerekir. API'ye erişilebilmesi için bu işlemin proje başına yalnızca bir kez yapılması gerekir.
$ gcloud services enable containerregistry.googleapis.com
  1. Docker görüntüsü oluşturmak 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

Sonunda, 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ürseniz $GOOGLE_CLOUD_PROJECT değerinin 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 geri 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ırma

Cloud Run, sunucusuz çözümleri container'lara getirerek durum bilgisiz container'larınızı otomatik olarak ölçeklendirir.

  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 Hizmet Oluştur'u tıklayın.

c0b4b980662f7807.png

  1. 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 görüntü gösterilir. Resmi seçip Devam'ı tıklayın.

564367bc65caefbf.png

  1. Uygulamayı hemen dağıtmak için birkaç tıklama yeterlidir. Hizmetin Google Cloud'da tamamen yönetilmesi için Dağıtım platformu bölümünde Cloud Run (tümüyle yönetilen) seçeneğini belirleyin. Konumunuza uygun bir bölge seçin, Kimliği doğrulanmamış çağırmalara izin ver'i seçin ve Oluştur'u tıklayın. İşte bu kadar.

3eb0f51d15326cac.png

Resim tamamen dağıtıldığında Cloud Run sayfasında uygulamaya erişmek için bir URL gösterilir. Bu URL'yi inceleyin.

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ümlerini dağıtmanız gerekirse sayfada Yeni Revizyonu 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 gidip 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üklü olmadan veya Dockerfile yazmadan optimize edilmiş bir kapsayıcı görüntüsü oluşturup Container Registry'de yayınladınız. Jib, görüntü oluşturma sürecini optimize eder. Bu sayede, Docker hakkında ayrıntılı bilgiye sahip olmayan herkes Java uygulamalarını hızlı ve verimli bir şekilde kapsayabilir. Ardından, uygulamayı birkaç tıklamayla Cloud Run'a dağıtarak kısa sürede hizmet vermeye başladınız.

Daha fazla bilgi