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

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

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

ज़रूरी बातें

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

आप क्या कर पाएंगे!

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

आपको इनकी ज़रूरत होगी

  • Google Cloud का कोई प्रोजेक्ट
  • ब्राउज़र, जैसे कि Google Chrome

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

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

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

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

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

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

क्लाउड शेल

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

Cloud Shell चालू करें

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

अगर आपने &#39 को पहले कभी भी Cloud Shell शुरू नहीं किया है, तो आपको # स्क्रीन के बीच में (पेज के नीचे) जानकारी दी जाएगी कि यह क्या है. अगर ऐसा है तो जारी रखें पर क्लिक करें (और आप इसे कभी भी दोबारा नहीं देख पाएंगे). यहां बताया गया है कि एक बार की स्क्रीन कैसी दिखती है:

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

इस वर्चुअल मशीन में डेवलपमेंट से जुड़े सभी टूल हैं#39. इसमें 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 Initializer से नया 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 पर सुनना शुरू कर देगा. ऐप्लिकेशन के ऐक्सेस के लिए, 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 के साथ ऐप्लिकेशन बंद करें.

Jif के साथ, आप अपने ऐप्लिकेशन को डॉकर के बिना ऑप्टिमाइज़ किए गए तरीके से कंटेनर में डाल सकते हैं और किसी भी कंटेनर रजिस्ट्री में प्रकाशित कर सकते हैं.

  1. आगे बढ़ने से पहले, आपको कंटेनर रजिस्ट्री एपीआई को चालू करना होगा. एपीआई को ऐक्सेस करने लायक बनाने के लिए, आपको हर प्रोजेक्ट में सिर्फ़ एक बार ऐसा करना होगा.
$ gcloud services enable containerregistry.googleapis.com
  1. डॉकर इमेज बनाने और कंटेनर रजिस्ट्री में प्रकाशित करने के लिए, 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 पर जाएं, नेविगेशन मेन्यू पर क्लिक करें और कंटेनर रजिस्ट्री चुनें.

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

Cloud Run की मदद से, कंटेनर के लिए बिना सर्वर वाले सर्वर मिलते हैं. इससे आपके स्टेटलेस कंटेनर अपने-आप बढ़ जाते हैं.

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

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

  1. क्लाउड रन पेज पर सेवा बनाएं पर क्लिक करें.

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

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

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

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

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

Kotlin app on Cloud Run, containerized by Jib!

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

  1. अपने एनवायरमेंट को साफ़ करने के लिए, आपको Cloud Run पर लागू किए गए ऐप्लिकेशन और कंटेनर रजिस्ट्री पर प्रकाशित इमेज को मिटाना होगा. Cloud Run पर जाएं, ऐप्लिकेशन चुनें और Delete क्लिक करें.

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

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

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

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