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 gibi 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ı
Kendi hızınızda ortam kurulumu
- Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. (Gmail veya G Suite hesabınız yoksa oluşturmanız gerekir.)
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.
- Ardından, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.
Bu codelab'i tamamlamak birkaç dolardan fazla tutmaz. Ancak daha fazla kaynak kullanmaya karar verirseniz veya kaynakları çalışır durumda bırakırsanız maliyet artabilir.
Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme sürümünden 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
- Cloud Console'da Cloud Shell'i etkinleştir 'i
tıklayın.
Daha önce Cloud Shell'i başlatmadıysanız ne olduğunu açıklayan bir ara ekran (sayfanın alt kısmında) gösterilir. Bu durumda Devam'ı tıklayın (bu ekranı bir daha görmezsiniz). Bu tek seferlik ekran aşağıdaki gibi görünür:
Cloud Shell'in sağlanması ve bağlanması yalnızca birkaç dakikanızı alır.
Bu sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde iyileştirilir. Bu codelab'deki çalışmalarınızın çoğu (hatta tamamı) 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.
- Kimliğinizin doğrulandığı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`
gcloud config list project
Komut çıkışı
[core] project = <PROJECT_ID>
Değilse aşağıdaki komutla ayarlayabilirsiniz:
gcloud config set project <PROJECT_ID>
Komut çıkışı
Updated property [core/project].
- 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.
- Şablon uygulamasının dizinine geçin.
$ cd kotlin-jib-cloud-run
- Maven kullanarak uygulamayı derleyin ve çalıştırın.
$ ./mvnw -DskipTests spring-boot:run
- 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 tıklayın
ve 8080 bağlantı noktasında önizle'yi seçin.
- Uygulama henüz yararlı bir işlem yapmadığı için 404 yanıtı almanız gerekir.
Control+C
ile uygulamayı durdurun.
- 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!"
}
}
- Uygulamayı yeniden oluşturup çalıştırın.
$ ./mvnw spring-boot:run
- Web Önizlemesi 'ni
kullanarak uygulamayı tekrar kontrol edin. Bu kez "
Kotlin app on Cloud Run, containerized by Jib!
" mesajını görmelisiniz.Control+C
ile uygulamayı durdurun.
Jib ile uygulamanızı Docker olmadan optimize edilmiş bir şekilde container'a alabilir ve herhangi bir container kayıt defterinde yayınlayabilirsiniz.
- 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
- 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:1.8.0:build \ -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run
Sonunda, uygulamanın kapsayıcıya 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.
- 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 çözümleri container'lara getirerek durum bilgisiz container'larınızı otomatik olarak ölçeklendirir.
- Gezinme menüsü'nü
tekrar tıklayın ve 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österiliyorsa Cloud Run'ı kullanmaya başla'yı tıklayın.
- Cloud Run sayfasında Hizmet Oluştur'u tıklayın.
- 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.
- İletişim kutusunda, daha önce oluşturduğunuz görüntü gösterilir. Resmi seçip Devam'ı tıklayın.
- Uygulamayı hemen dağıtmak için birkaç tıklama yapmanız 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 işaretleyin ve Oluştur'u tıklayın. İşte bu kadar.
Resim tamamen dağıtıldığında Cloud Run sayfasında uygulamaya erişmek için bir URL gösterilir. Bu URL'yi inceleyin.
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 Revizyon Dağıt'ı tıklayarak bunu yapabilirsiniz.
- 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.
- 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ü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şturmayı optimize eder. Bu sayede, Docker hakkında derinlemesine bilgi sahibi olmayan herkes Java uygulamalarını hızlı ve verimli bir şekilde container'a dönüştürebilir. Ardından, birkaç tıklamayla uygulamayı Cloud Run'a dağıtarak kısa sürede hizmet vermeye başladınız.
Daha fazla bilgi
- Google Kubernetes Engine'deki Kubernetes'e Java uygulaması dağıtma
- Cloud Run belgeleri
- Cloud Run'a genel bakış
- Jib ile tanışın: Java Docker görüntülerini daha iyi derleyin
- Java uygulamaları için Google görüntü oluşturma aracı olan Jib ile daha hızlı container oluşturma
- Jib: Java uygulamanızı kapsayıcıya dönüştürme
- Jib Gitter kanalı
- Jib kullanıcıları posta listesi