Spring Boot Kotlin uygulamasını container mimarisine alın ve Cloud Run'a dağıtın
Bu codelab hakkında
1. Başlamadan önce
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ı
2. Hazırlanma
Bağımsız tempolu ortam kurulumu
- 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.
- 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
- 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.
- 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].
3. Spring Boot uygulamasını başlatma
- 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.
- Şablon uygulama dizinine geçin.
$ cd kotlin-jib-cloud-run
- Maven'i kullanarak uygulamayı oluşturun ve çalıştırın.
$ ./mvnw -DskipTests spring-boot:run
- 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.
- Uygulama henüz yararlı bir şey yapmadığı için 404 yanıtı almanız gerekir. Uygulamayı
Control+C
ile durdurun.
4. Web denetleyicisi ekleme
- 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şturun ve ç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öreceksiniz. UygulamayıControl+C
ile durdurun.
5. Uygulamanızı container mimarisine alma ve Container Registry'de yayınlama
Jib ile uygulamanızı kapsayıcı olmadan optimize edilmiş bir şekilde container mimarisine alabilir ve herhangi bir kapsayıcı kayıt defterinde yayınlayabilirsiniz.
- 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
- 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.
- 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 mimarisi container'lara getirerek durum bilgisiz kapsayıcılarınızı otomatik olarak ölçeklendirir.
- 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.
- Cloud Run sayfasında Hizmet Oluştur'u tıklayın.
- 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.
- İletişim kutusunda daha önce oluşturduğunuz resim gösterilir. Resmi seçin ve Devam'ı tıklayın.
- 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.
7. Temizleme
- 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.
- 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'ı 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
- Google Kubernetes Engine'de Kubernetes'e Java uygulaması dağıtma
- Cloud Run dokümanları
- Cloud Run'a genel bakış
- Jib ile tanışın: Java Docker görüntülerini daha iyi oluşturun
- Java uygulamaları için bir Google görsel derleme aracı olan Jib ile kapsayıcıları daha hızlı oluşturun
- Jib: Java uygulamanızı container mimarisine alın
- Jib Gitter kanalı
- Jibe kullanıcıları posta listesi