Spring Boot Kotlin uygulamasını container mimarisine alın ve Cloud Run'a dağıtın

Google, Docker uygulamaları için 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ınlayabileceğiniz güçlü bir görüntü oluşturma aracı sağlar. Google Cloud, durum bilgisiz container'larınızı otomatik olarak ölçeklendiren yönetilen bir işlem platformu olan Cloud Run ile container'lara sunucusuz hizmetler sunar. Bu codelab'de, Spring Boot Kotlin uygulamanızı container mimarisine almanın, Container Registry'de yayınlamanın ve Google Cloud'da görüntünüzü sorunsuz şekilde çalıştırmanın ne kadar kolay olduğunu göreceksiniz.

Bu codelab'de, Kotlin'de Jib, Container Registry ve Cloud Run gibi Google Cloud hizmet ve araçlarının kullanımını gösteren basit bir uygulama bulabilirsiniz.

Ö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

Yapacaklarınız

  • Bir Spring Boot Kotlin uygulaması kurun.
  • 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ı

Bağımsız tempolu ortam kurulumu

  1. Cloud Console'da oturum açın ve yeni bir proje oluşturun ya da mevcut bir projeyi yeniden kullanın. (Henüz bir Gmail veya G Suite hesabınız yoksa hesap oluşturmanız gerekir.)

Proje kimliğini tüm Google Cloud projeleri genelinde benzersiz bir ad olarak hatırlayın (yukarıdaki ad zaten alınmıştı ve maalesef sizin için çalışmaz). Bu, daha sonra bu codelab'de 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 gözden geçirmeniz için size birkaç dolar tutarından daha fazla ödeme yapmanız gerekmez, ancak daha fazla kaynak kullanmaya karar verirseniz veya çalışır durumda bırakırsanız daha fazla harcama yapabilirsiniz.

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ılabilir 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'dan Cloud Shell'i Etkinleştir'i tıklayın.

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 (bu seçeneği bir daha görmezsiniz). Tek seferlik ekran şu şekilde görünür:

Cloud Shell'in temel hazırlığı ve bağlantısı yalnızca birkaç dakika içinde tamamlanacak.

Bu sanal makine, ihtiyacınız olan tüm geliştirme araçları yüklüdür. 5 GB kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulama işlemini önemli ölçüde iyileştirir. Bu codelab'deki çalışmalarınızın büyük bir kısmının tamamı bir tarayıcı veya Chromebook ile yapılabilir.

Cloud Shell'e bağlandıktan sonra kimliğinizin zaten doğrulanmış olduğunu ve projenin proje kimliğinize ayarlanmış olduğunu görmeniz gerekir.

  1. Kimliğinizin doğrulanmasını sağlamak 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`
gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Ayarlanmamışsa şu komutla ayarlayabilirsiniz:

gcloud config set project <PROJECT_ID>

Komut çıkışı

Updated property [core/project].
  1. Spring Starterr 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 -

İlkleştirici'nin, spring-boot-starter-web uygulamasını şablon uygulamasının pom.xml uygulamasındaki bağımlılıklarınıza otomatik olarak ekleyeceğini unutmayın.

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

  1. Uygulama henüz yararlı bir şey yapmadığı için 404 yanıtı almanız gerekir. Uygulamayı Control+C ile durdurun.
  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şturun ve çalıştırın.
$ ./mvnw spring-boot:run
  1. Web Önizlemesi'ni kullanarak uygulamayı tekrar kontrol edin. Bu kez "Kotlin app on Cloud Run, containerized by Jib!" mesajını göreceksiniz. Uygulamayı Control+C ile durdurun.

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

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

Sonuç olarak, uygulamanın container mimarisine alındığını ve Container Registry'ye aktarıldığını belirten bir mesaj görürsünüz.

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

Bir hata mesajı görürseniz $GOOGLE_CLOUD_PROJECT öğesinin Google Cloud proje kimliğinize (PROJECT_ID) doğru şekilde ayarlandığından emin olun.

  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ü tıklayın ve Container Registry'yi seçin.

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

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

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

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örünüyorsa Cloud Run'ı Kullanmaya Başla'yı tıklayın.

  1. Cloud Run sayfasında Hizmet Oluştur'u tıklayın.

  1. Sonraki ekranda Kaynak'ın altında Seç'i tıklayın. Kaynak, Cloud Run'da çalıştırmak istediğiniz görüntüdür.

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

  1. Uygulamayı dağıtmanıza yalnızca birkaç tıklama kaldı. 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ğrulanmayan çağrılara izin ver'i seçin ve Oluştur'u tıklayın. İşte oldu.

Görüntü tamamen dağıtıldığında Cloud Run sayfasında uygulamaya erişmek için bir URL görüntülenir. Şuna göz atın.

Son olarak, uygulamadan beklediğiniz mesajı görürsünüz.

Kotlin app on Cloud Run, containerized by Jib!

İşte oldu. İleride yeni uygulama sürümlerini dağıtmanız gerekiyorsa bu işlemi sayfada Yeni Düzeltme Dağıt'ı tıklayarak yapabilirsiniz.

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

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

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üklemeden veya Dockerfile yazıp yazmadan optimize edilmiş bir kapsayıcı görüntüsü derleyip Container Registry'de yayınladınız. Jib, görüntü derlemesini 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 yayınlamaya başlamak için Cloud Run'a dağıttınız.

Daha fazla bilgi