1. Başlamadan önce
Google, Docker veya Dockerfile olmadan Java uygulamaları için kısa sürede optimize edilmiş bir Docker container görüntüsü oluşturup yayınlayabileceğiniz güçlü bir görüntü oluşturma aracı sunar. 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ı 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, Jib, Container Registry ve Cloud Run gibi Google Cloud hizmetlerinin ve araçlarının kullanımını gösteren Kotlin'de basit bir uygulama oluşturma sürecinde size yol gösterir.
Ö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
- 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.



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 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, 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.

Cloud Shell'i daha önce hiç başlatmadıysanız ne olduğunu açıklayan bir ara ekran (kaydırma yapmadan görünen alanın altında) 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:

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

Bu sanal makine, ihtiyaç duyduğunuz tüm geliştirme araçlarıyla birlikte gelir. 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.
- 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`
- 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>
Ayarlanmamışsa şu komutla ayarlayabilirsiniz:
gcloud config set project <PROJECT_ID>
Komut çıkışı
Updated property [core/project].
3. Spring Boot uygulaması 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 -
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ını dinlemeye başlar. Uygulamaya erişmek için Cloud Shell araç çubuğunda Web Önizlemesi'ni
tıklayın ve 8080 numaralı bağlantı noktasında önizle'yi seçin.

- Uygulama henüz yararlı bir işlem yapmadığı için 404 yanıtı alırsınız.
Control+Cile uygulamayı durdurun.
4. Web denetleyici ekleme
- Demo paketinde aşağıdaki
Controllersı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+Cile 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.
- 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:3.1.1: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.

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.
- 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çin ve Devam'ı tıklayın.

- 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 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ümlerini dağıtmanız gerekirse sayfada Yeni Revizyonu 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 gidip 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'ın yüklü olmadığı veya Dockerfile yazılmadığı durumlarda optimize edilmiş bir container 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 derinlemesine bilgi sahibi 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
- Google Kubernetes Engine'de Java uygulamasını Kubernetes'e 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