Spring बूट Kotlin ऐप्लिकेशन को कंटेनर बनाया जा सकता है और उसे Cloud Run पर डिप्लॉय किया जा सकता है

Google, इमेज बनाने का एक बेहतरीन टूल उपलब्ध कराता है. इसकी मदद से, Docker या Dockerfile के बिना, Java ऐप्लिकेशन के लिए ऑप्टिमाइज़ की गई Docker कंटेनर इमेज को आसानी से बनाया और पब्लिश किया जा सकता है. Google Cloud, कंटेनर के लिए सर्वरलेस की सुविधा भी उपलब्ध कराता है. इसके लिए, Cloud Run का इस्तेमाल किया जाता है. यह मैनेज किया गया कंप्यूट प्लैटफ़ॉर्म है, जो आपके स्टेटलेस कंटेनर को अपने-आप स्केल करता है. इस कोडलैब में, आपको यह पता चलेगा कि Spring Boot Kotlin ऐप्लिकेशन का कोड बंडल करना, उसे Container Registry पर पब्लिश करना, और Google Cloud पर इमेज को बिना किसी रुकावट के चलाना कितना आसान है!

इस कोडलैब में, Kotlin में एक सामान्य ऐप्लिकेशन सेट अप करने का तरीका बताया गया है. इससे, Jib, Container Registry, और Cloud Run जैसी Google Cloud सेवाओं और टूल का इस्तेमाल करने का तरीका पता चलता है.

ज़रूरी शर्तें

  • Java प्रोग्रामिंग लैंग्वेज और टूल के बारे में जानकारी
  • Vim, Emacs, और nano जैसे स्टैंडर्ड Linux टेक्स्ट एडिटर की जानकारी

आपको क्या करना होगा

  • Spring Boot Kotlin ऐप्लिकेशन सेट अप करें.
  • ऑप्टिमाइज़ की गई Docker इमेज बनाएं.
  • इमेज को Container Registry में पब्लिश करें.
  • कंटेनर वाले ऐप्लिकेशन को Cloud Run पर चलाएं.

आपको किन चीज़ों की ज़रूरत होगी

  • Google Cloud प्रोजेक्ट
  • Google Chrome जैसे ब्राउज़र का इस्तेमाल करके

अपने हिसाब से एनवायरमेंट सेट अप करना

  1. Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से कोई Gmail या G Suite खाता नहीं है, तो आपको एक खाता बनाना होगा.)

प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोड लैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.

  1. इसके बाद, Google Cloud के संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.

इस कोडलैब को पूरा करने में आपको कुछ डॉलर से ज़्यादा खर्च नहीं करने पड़ेंगे. हालांकि, अगर ज़्यादा संसाधनों का इस्तेमाल किया जाता है या उन्हें चालू रखा जाता है, तो यह खर्च बढ़ सकता है.

Google Cloud के नए उपयोगकर्ता, 300 डॉलर के क्रेडिट के साथ मुफ़्त में आज़माने की सुविधा पा सकते हैं.

Cloud Shell

Google Cloud को अपने लैपटॉप से रिमोटली ऐक्सेस किया जा सकता है. हालांकि, इस कोडलैब में Cloud Shell का इस्तेमाल किया जाएगा. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है.

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें पर क्लिक करें.

अगर आपने Cloud Shell का इस्तेमाल पहले कभी नहीं किया है, तो आपको एक इंटरमीडिएट स्क्रीन दिखेगी. यह स्क्रीन, फ़ोल्ड के नीचे दिखेगी. इसमें Cloud Shell के बारे में जानकारी दी गई होगी. अगर ऐसा है, तो जारी रखें पर क्लिक करें. इसके बाद, आपको यह स्क्रीन कभी नहीं दिखेगी. एक बार दिखने वाली स्क्रीन ऐसी दिखती है:

Cloud Shell को चालू करने और उससे कनेक्ट होने में सिर्फ़ कुछ सेकंड लगेंगे.

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है और Google Cloud में काम करता है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की प्रोसेस बेहतर होती है. इस कोडलैब में ज़्यादातर काम, सिर्फ़ ब्राउज़र या Chromebook की मदद से किया जा सकता है.

Cloud Shell से कनेक्ट होने के बाद, आपको दिखेगा कि आपकी पुष्टि पहले ही हो चुकी है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर पहले ही सेट कर दिया गया है.

  1. पुष्टि करने के लिए कि आपने पुष्टि कर ली है, Cloud Shell में यह कमांड चलाएं:
gcloud auth list

कमांड आउटपुट

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

अगर ऐसा नहीं है, तो इस कमांड का इस्तेमाल करके इसे सेट किया जा सकता है:

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].
  1. Spring Initializr की मदद से, नया Spring Boot ऐप्लिकेशन जनरेट करें.
$ curl https://start.spring.io/starter.tgz \
    -d language=kotlin \
    -d dependencies=web \
    -d baseDir=kotlin-jib-cloud-run | tar -xzvf -

ध्यान दें कि Initializr, टेम्प्लेट ऐप्लिकेशन के pom.xml में आपकी डिपेंडेंसी में spring-boot-starter-web को अपने-आप जोड़ देगा.

  1. टेंप्लेट ऐप्लिकेशन की डायरेक्ट्री पर जाएं.
$ cd kotlin-jib-cloud-run
  1. Maven का इस्तेमाल करके ऐप्लिकेशन बनाएं और उसे चलाएं.
$ ./mvnw -DskipTests spring-boot:run
  1. शुरू होने के बाद, ऐप्लिकेशन पोर्ट 8080 पर सुनना शुरू कर देगा. ऐप्लिकेशन को ऐक्सेस करने के लिए, Cloud Shell टूलबार में मौजूद वेब प्रीव्यू पर क्लिक करें. इसके बाद, पोर्ट 8080 पर झलक देखें चुनें.

  1. आपको 404 जवाब मिलेगा, क्योंकि ऐप्लिकेशन अभी तक कोई काम का काम नहीं करता है. Control+C की मदद से ऐप्लिकेशन को बंद करें.
  1. डेमो पैकेज में, यह Controller क्लास बनाएं:
$ 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. ऐप्लिकेशन को फिर से बनाएं और चलाएं.
$ ./mvnw spring-boot:run
  1. वेब प्रीव्यू का इस्तेमाल करके, ऐप्लिकेशन को फिर से देखें. इस बार, आपको "Kotlin app on Cloud Run, containerized by Jib!" मैसेज दिखेगा. Control+C की मदद से ऐप्लिकेशन को बंद करें.

Jib की मदद से, Docker के बिना अपने ऐप्लिकेशन को ऑप्टिमाइज़ किए गए तरीके से कंटेनर में बदला जा सकता है. साथ ही, इसे किसी भी कंटेनर रजिस्ट्री में पब्लिश किया जा सकता है.

  1. आगे बढ़ने से पहले, आपको Container Registry API चालू करना होगा. एपीआई को ऐक्सेस करने के लिए, हर प्रोजेक्ट के लिए ऐसा सिर्फ़ एक बार करना होता है.
$ gcloud services enable containerregistry.googleapis.com
  1. Docker इमेज बनाने और उसे Container Registry में पब्लिश करने के लिए, Jib चलाएं.
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:1.8.0:build \
    -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run

इसके बाद, आपको यह मैसेज दिखेगा कि ऐप्लिकेशन को कंटेनर में रखा गया है और इसे आपकी कंटेनर रजिस्ट्री में पुश कर दिया गया है.

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

अगर आपको कोई गड़बड़ी दिखती है, तो दोबारा जांच करें कि $GOOGLE_CLOUD_PROJECT को आपके Google Cloud प्रोजेक्ट आईडी (PROJECT_ID) के लिए सही तरीके से सेट किया गया है या नहीं.

  1. आगे बढ़ने से पहले, देखें कि इमेज पब्लिश हो गई हो. Cloud Console पर वापस जाएं. इसके बाद, नेविगेशन मेन्यू पर क्लिक करें और Container Registry को चुनें.

आपको दिखेगा कि आपकी इमेज पब्लिश हो गई है.

Cloud Run, कंटेनर के लिए सर्वरलेस की सुविधा देता है. साथ ही, यह आपके स्टेटलेस कंटेनर को अपने-आप स्केल करता है.

  1. नेविगेशन मेन्यू पर फिर से क्लिक करें और Cloud Run चुनें.

अगर Cloud Run को पहली बार ऐक्सेस किया जा रहा है, तो आपको एक बार के सेटअप के लिए यह डायलॉग दिखेगा. अगर Cloud Run का इस्तेमाल शुरू करें विकल्प दिखता है, तो उस पर क्लिक करें.

  1. Cloud Run पेज पर, Create Service पर क्लिक करें.

  1. अगली स्क्रीन पर, सोर्स में जाकर, चुनें पर क्लिक करें. सोर्स, वह इमेज होती है जिसे Cloud Run पर चलाना है.

  1. डायलॉग बॉक्स में, पहले बनाई गई इमेज दिखेगी. इमेज चुनें और जारी रखें पर क्लिक करें.

  1. अब ऐप्लिकेशन को डिप्लॉय करने के लिए, आपको बस कुछ क्लिक करने होंगे. Google Cloud पर सेवा को पूरी तरह से मैनेज करने के लिए, डिप्लॉयमेंट प्लैटफ़ॉर्म में जाकर, Cloud Run (पूरी तरह से मैनेज किया गया) चुनें. अपनी जगह के हिसाब से कोई क्षेत्र चुनें. इसके बाद, बिना पुष्टि किए गए अनुरोधों को अनुमति दें को चुनें और बनाएं पर क्लिक करें. हो गया!

इमेज पूरी तरह से डिप्लॉय हो जाने पर, Cloud Run पेज पर ऐप्लिकेशन को ऐक्सेस करने के लिए यूआरएल दिखेगा. इसे देखें!

आखिर में, आपको ऐप्लिकेशन से मिला मैसेज दिखेगा.

Kotlin app on Cloud Run, containerized by Jib!

हो गया! अगर आपको आने वाले समय में ऐप्लिकेशन के नए वर्शन डिप्लॉय करने हैं, तो पेज पर मौजूद नया वर्शन डिप्लॉय करें पर क्लिक करके ऐसा किया जा सकता है.

  1. अपने एनवायरमेंट को खाली करने के लिए, आपको Cloud Run पर डिप्लॉय किए गए ऐप्लिकेशन और Container Registry पर पब्लिश की गई इमेज को मिटाना होगा. Cloud Run पर जाएं. इसके बाद, ऐप्लिकेशन को चुनें और मिटाएं पर क्लिक करें.

  1. इसी तरह, कंटेनर रजिस्ट्री पेज पर जाएं और इमेज मिटाएं.

बधाई हो! आपने Spring Boot Kotlin ऐप्लिकेशन को कंटेनर में बदल दिया है और उसे Cloud Run पर डिप्लॉय कर दिया है!

आपने Jib का इस्तेमाल करके, Docker इंस्टॉल किए बिना या Dockerfile लिखे बिना, ऑप्टिमाइज़ की गई कंटेनर इमेज बनाई और उसे Container Registry पर पब्लिश किया. Jib, इमेज बनाने की प्रोसेस को ऑप्टिमाइज़ करता है. इसलिए, Docker के बारे में ज़्यादा जानकारी न रखने वाला कोई भी व्यक्ति, Java ऐप्लिकेशन को तेज़ी से और आसानी से कंटेनर में बदल सकता है. इसके बाद, आपने कुछ ही क्लिक में ऐप्लिकेशन को Cloud Run पर डिप्लॉय कर दिया, ताकि इसे तुरंत इस्तेमाल किया जा सके.

ज़्यादा जानें