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

1. शुरू करने से पहले

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 ऐप्लिकेशन सेट अप करें.
  • ऑप्टिमाइज़ की गई डॉकर इमेज बनाएं.
  • इमेज को Container Registry में पब्लिश करें.
  • कंटेनर में मौजूद ऐप्लिकेशन को Cloud Run पर चलाएं.

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

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

2. सेट अप करना

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

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

प्रोजेक्ट आईडी याद रखें. यह सभी 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 चालू करें 4292cbf4971c9786.png पर क्लिक करें.

bce75f34b2c53987.png

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

70f315d7b402b476.png

Cloud Shell से कनेक्ट होने में कुछ ही सेकंड लगेंगे.

fbe3a0674c982259.png

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल पहले से मौजूद होते हैं. यह 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`
  1. यह पुष्टि करने के लिए कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है, Cloud Shell में यह कमांड चलाएं:
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

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

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].

3. Spring Boot ऐप्लिकेशन को शुरू करना

  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 टूलबार में मौजूद वेब की झलक 396bfd51f55afb5d.pngपर क्लिक करें. इसके बाद, पोर्ट 8080 पर झलक देखें चुनें.

4172e1e141daf0c1.png

  1. आपको 404 जवाब मिलेगा, क्योंकि ऐप्लिकेशन अभी तक कोई काम का काम नहीं करता है. Control+C की मदद से ऐप्लिकेशन को बंद करें.

4. वेब कंट्रोलर जोड़ना

  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. वेब प्रीव्यू a6cfcaa1d2119c52.png का इस्तेमाल करके, ऐप्लिकेशन को फिर से देखें. इस बार, आपको "Kotlin app on Cloud Run, containerized by Jib!" मैसेज दिखेगा. Control+C की मदद से ऐप्लिकेशन को बंद करें.

5. अपने ऐप्लिकेशन को कंटेनर में बदलना और उसे Container Registry में पब्लिश करना

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:3.1.1: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 पर वापस जाएं. इसके बाद, नेविगेशन मेन्यू c8b4ea3c68f4c1e3.png पर क्लिक करें और Container Registry को चुनें.

6421550ba806beab.png

38ae0ca573c3dcd.png

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

c9086605411691c3.png

6. कंटेनर में मौजूद ऐप्लिकेशन को Cloud Run पर चलाना

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

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

812c7c87527ebe4a.png

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

1b2bf05712f6150a.png

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

c0b4b980662f7807.png

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

2049621ae97d62ee.png

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

564367bc65caefbf.png

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

3eb0f51d15326cac.png

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

8bf800dd6e2f44f2.png

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

Kotlin app on Cloud Run, containerized by Jib!

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

7. व्यवस्थित करें

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

1dfc2f51c1b5f6e.png

  1. इसी तरह, Container Registry पेज पर जाएं और इमेज मिटाएं.

1b724136c1655935.png

8. बधाई हो

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

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

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