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

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

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

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

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

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

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

  • Spring बूट Kotlin ऐप्लिकेशन सेट अप करें.
  • ऑप्टिमाइज़ की गई Docker इमेज बनाएं.
  • इमेज को कंटेनर रजिस्ट्री में पब्लिश करें.
  • 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 डॉलर के मुफ़्त ट्रायल वाले प्रोग्राम में हिस्सा ले सकते हैं.

क्लाउड शेल

Google Cloud को आपके लैपटॉप से, कहीं से भी ऑपरेट किया जा सकता है. हालांकि, इस कोडलैब में Cloud Shell का इस्तेमाल किया जा रहा है. यह Google Cloud की कमांड-लाइन सुविधा है.

Cloud Shell चालू करें

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

bce75f34b2c53987.png

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

70f315d7b402b476.png

प्रावधान करने और Cloud Shell से कनेक्ट होने में कुछ ही समय लगेगा.

fbe3a0674c982259.png

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

कमांड आउटपुट

[core]
project = <PROJECT_ID>

अगर ऐसा नहीं है, तो आप इसे इस निर्देश की मदद से सेट कर सकते हैं:

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].

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

  1. Spring Initializr से नया Spring बूट ऐप्लिकेशन जनरेट करें.
$ curl https://start.spring.io/starter.tgz \
    -d language=kotlin \
    -d dependencies=web \
    -d baseDir=kotlin-jib-cloud-run | tar -xzvf -

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

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

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 पेज पर, सेवा बनाएं पर क्लिक करें.

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. इसी तरह, कंटेनर रजिस्ट्री पेज पर जाकर, इमेज को मिटाएं.

1b724136c1655935.png

8. बधाई हो

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

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

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