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
- 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.
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.
- 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
- Cloud Console'da, Cloud Shell'i etkinleştir simgesini 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 (bunu bir daha görmezsiniz). Tek seferlik ekran şöyle görünür:
Temel hazırlık ve Cloud Shell'e bağlanmak yalnızca birkaç dakika sürer.
İ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.
- 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`
- 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
- 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.
- Şablon uygulamasının dizinine geçin.
$ cd kotlin-jib-cloud-run
- Uygulamayı Maven kullanarak derleyip çalıştırın.
$ ./mvnw -DskipTests spring-boot:run
- 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 tıklayın ve 8080 bağlantı noktasında önizle'yi seçin.
- Uygulama henüz faydalı bir özellik sunmadığından 404 yanıtı alırsınız.
Control+C
ile uygulamayı durdurun.
4. Web denetleyicisi ekleyin
- 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!"
}
}
- Uygulamayı yeniden derleyip çalıştırın.
$ ./mvnw spring-boot:run
- Web Önizlemesi 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.
- 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
- 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.
- 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ü tıklayın ve Container Registry'yi seçin.
Resminizin başarıyla yayınlandığını görürsünüz.
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.
- 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 Create Service'i (Hizmet Oluştur) tıklayın.
- 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.
- İletişim kutusunda daha önce oluşturduğunuz resim gösterilir. Resmi seçin ve Devam'ı tıklayın.
- 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.
Görüntü tamamen dağıtıldığında Cloud Run sayfasında uygulamaya erişim URL'si gösterilir. Mutlaka göz atın.
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
- 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 gidin ve görüntüyü silin.
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
- Google Kubernetes Engine'de 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ü derleme aracı olan Jib ile container'ları daha hızlı derleyin
- Jib: Java uygulamanızı container mimarisine alın
- Jib Gitter kanalı
- Jib kullanıcıları posta listesi