یک برنامه Spring Boot Kotlin را کانتینر کنید و آن را در Cloud Run اجرا کنید

۱. قبل از شروع

گوگل یک ابزار قدرتمند برای ساخت ایمیج ارائه می‌دهد که با آن می‌توانید به راحتی و بدون نیاز به داکر یا داکرفایل، یک ایمیج کانتینر داکر بهینه‌شده برای برنامه‌های جاوا بسازید و منتشر کنید. گوگل کلود همچنین با Cloud Run ، یک پلتفرم محاسباتی مدیریت‌شده که به طور خودکار کانتینرهای بدون وضعیت شما را مقیاس‌بندی می‌کند، قابلیت بدون سرور را به کانتینرها می‌آورد. در این آزمایشگاه کد، خواهید دید که کانتینر کردن برنامه Spring Boot Kotlin، انتشار در Container Registry و اجرای ایمیج روی Google Cloud به روشی یکپارچه چقدر آسان است!

این آزمایشگاه کد، شما را در راه‌اندازی یک برنامه ساده در کاتلین راهنمایی می‌کند که نحوه استفاده از سرویس‌ها و ابزارهای Google Cloud، از جمله Jib ، Container Registry و Cloud Run را نشان می‌دهد.

پیش‌نیازها

  • آشنایی با زبان برنامه نویسی جاوا و ابزارهای آن
  • آشنایی با ویرایشگرهای متن استاندارد لینوکس مانند Vim، Emacs و nano

کاری که انجام خواهید داد

  • یک برنامه Spring Boot Kotlin راه‌اندازی کنید.
  • یک تصویر داکر بهینه شده بسازید.
  • تصویر را در Container Registry منتشر کنید.
  • برنامه کانتینر شده را روی Cloud Run اجرا کنید.

آنچه نیاز دارید

  • یک پروژه ابری گوگل
  • یک مرورگر، مانند گوگل کروم

۲. راه‌اندازی

تنظیم محیط خودتنظیم

  1. وارد Cloud Console شوید و یک پروژه جدید ایجاد کنید یا از یک پروژه موجود دوباره استفاده کنید. اگر از قبل حساب Gmail یا Google Workspace ندارید، باید یکی ایجاد کنید .

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

شناسه پروژه را به خاطر بسپارید، یک نام منحصر به فرد در تمام پروژه‌های Google Cloud (نام بالا قبلاً گرفته شده و برای شما کار نخواهد کرد، متاسفیم!). بعداً در این آزمایشگاه کد به آن PROJECT_ID گفته خواهد شد.

  1. در مرحله بعد، برای استفاده از منابع گوگل کلود، باید پرداخت را در Cloud Console فعال کنید .

اجرای این آزمایشگاه کد، اگر اصلاً هزینه‌ای نداشته باشد، نباید هزینه زیادی داشته باشد. حتماً دستورالعمل‌های بخش «پاکسازی» را که به شما نحوه خاموش کردن منابع را آموزش می‌دهد، دنبال کنید تا پس از این آموزش، متحمل هزینه نشوید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان ۳۰۰ دلاری هستند.

پوسته ابری

اگرچه می‌توان گوگل کلود را از راه دور و از طریق لپ‌تاپ شما مدیریت کرد، اما در این آزمایشگاه کد از Cloud Shell ، یک محیط خط فرمان که در گوگل کلود اجرا می‌شود، استفاده خواهید کرد.

فعال کردن پوسته ابری

  1. از کنسول ابری، روی فعال کردن پوسته ابری کلیک کنید 4292cbf4971c9786.png .

bce75f34b2c53987.png

اگر قبلاً Cloud Shell را شروع نکرده‌اید، یک صفحه میانی (در پایین صفحه) به شما نمایش داده می‌شود که توضیح می‌دهد چیست. در این صورت، روی ادامه کلیک کنید (و دیگر هرگز آن را نخواهید دید). آن صفحه یکبار مصرف به این شکل است:

70f315d7b402b476.png

آماده‌سازی و اتصال به Cloud Shell فقط چند لحظه طول می‌کشد.

fbe3a0674c982259.png

این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز شما پر شده است. این ماشین یک دایرکتوری خانگی ۵ گیگابایتی دائمی ارائه می‌دهد و در فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی بهبود می‌بخشد. بخش عمده‌ای از کار شما در این آزمایشگاه کد، اگر نگوییم همه، را می‌توان به سادگی با یک مرورگر یا کروم‌بوک انجام داد.

پس از اتصال به 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].

۳. مقداردهی اولیه یک برنامه Spring Boot

  1. یک برنامه Spring Boot جدید با Spring Initializr ایجاد کنید.
$ curl https://start.spring.io/starter.tgz \
    -d language=kotlin \
    -d dependencies=web \
    -d baseDir=kotlin-jib-cloud-run | tar -xzvf -

توجه داشته باشید که Initializr به طور خودکار spring-boot-starter-web را به وابستگی‌های شما در pom.xml برنامه قالب اضافه می‌کند.

  1. به دایرکتوری برنامه قالب بروید.
$ cd kotlin-jib-cloud-run
  1. برنامه را با استفاده از Maven بسازید و اجرا کنید.
$ ./mvnw -DskipTests spring-boot:run
  1. پس از شروع، برنامه شروع به گوش دادن به پورت ۸۰۸۰ می‌کند. روی پیش‌نمایش وب کلیک کنید ۳۹۶bfd51f55afb5d.png در نوار ابزار Cloud Shell کلیک کنید و برای دسترسی به برنامه ، پیش‌نمایش را روی پورت ۸۰۸۰ انتخاب کنید.

4172e1e141daf0c1.png

  1. شما باید با خطای ۴۰۴ مواجه شوید، زیرا برنامه هنوز هیچ کار مفیدی انجام نمی‌دهد. برنامه را با Control+C متوقف کنید.

۴. یک کنترلر وب اضافه کنید

  1. کلاس Controller زیر را در پکیج demo ایجاد کنید:
$ 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 متوقف کنید.

۵. برنامه خود را کانتینرایز کنید و در Container Registry منتشر کنید

با Jib ، می‌توانید برنامه خود را به روشی بهینه و بدون Docker کانتینرایز کنید و در هر رجیستری کانتینری منتشر کنید.

  1. قبل از ادامه، باید API مربوط به رجیستری کانتینر را فعال کنید. این کار فقط یک بار در هر پروژه لازم است تا API قابل دسترسی شود.
$ gcloud services enable containerregistry.googleapis.com
  1. Jib را اجرا کنید تا یک تصویر Docker بسازید و آن را در Container Registry منتشر کنید.
$ ./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. قبل از ادامه، بررسی کنید که آیا تصویر با موفقیت منتشر شده است یا خیر. به کنسول ابری برگردید، روی منوی ناوبری کلیک کنید. c8b4ea3c68f4c1e3.png و گزینه‌ی «ثبت کانتینر» را انتخاب کنید.

6421550ba806beab.png

38ae0ca573c3dcd.png

خواهید دید که تصویر شما با موفقیت منتشر شده است.

c9086605411691c3.png

۶. برنامه کانتینر شده را روی Cloud Run اجرا کنید

Cloud Run سرور را به کانتینرها می‌آورد و به طور خودکار کانتینرهای بدون وضعیت شما را مقیاس‌بندی می‌کند.

  1. روی منوی ناوبری کلیک کنید c8b4ea3c68f4c1e3.png دوباره کلیک کنید و Cloud Run را انتخاب کنید.

812c7c87527ebe4a.png

اگر این اولین بار است که به Cloud Run دسترسی پیدا می‌کنید، کادر محاوره‌ای زیر را برای تنظیمات یک‌باره مشاهده خواهید کرد. در صورت نمایش، روی «شروع استفاده از Cloud Run» کلیک کنید.

۱b2bf05712f6150a.png

  1. در صفحه Cloud Run، روی ایجاد سرویس کلیک کنید.

c0b4b980662f7807.png

  1. در صفحه بعد، در قسمت منبع (Source) ، روی انتخاب (Select) کلیک کنید. منبع، تصویری است که می‌خواهید روی Cloud Run اجرا کنید.

2049621ae97d62ee.png

  1. پنجره‌ی محاوره‌ای، ایمیجی که قبلاً ساخته‌اید را نشان می‌دهد. ایمیجی را انتخاب کنید و روی ادامه کلیک کنید.

564367bc65caefbf.png

  1. اکنون فقط چند کلیک تا استقرار برنامه فاصله دارید. در قسمت Deployment platform ، گزینه Cloud Run (fully managed) را انتخاب کنید تا سرویس به طور کامل در Google Cloud مدیریت شود. منطقه ای مناسب با موقعیت مکانی خود انتخاب کنید، Allow unauthenticated invocations را انتخاب کنید و روی Create کلیک کنید. همین!

3eb0f51d15326cac.png

وقتی تصویر به طور کامل مستقر شد، صفحه Cloud Run یک URL برای دسترسی به برنامه نمایش می‌دهد. آن را امتحان کنید!

8bf800dd6e2f44f2.png

در نهایت، پیامی را که از برنامه انتظار دارید، مشاهده خواهید کرد.

Kotlin app on Cloud Run, containerized by Jib!

همین! در آینده، اگر نیاز به استقرار نسخه‌های جدید برنامه داشتید، می‌توانید با کلیک روی Deploy New Revision در صفحه، این کار را انجام دهید.

۷. تمیز کردن

  1. برای پاکسازی محیط خود، باید برنامه‌ی مستقر شده در Cloud Run و تصویر منتشر شده در Container Registry را حذف کنید. به Cloud Run بروید، برنامه را انتخاب کنید و روی Delete کلیک کنید.

۱dfc2f51c1b5f6e.png

  1. به همین ترتیب، به صفحه رجیستری کانتینر بروید و تصویر را حذف کنید.

۱b724136c1655935.png

۸. تبریک

تبریک! شما با موفقیت برنامه Spring Boot Kotlin خود را کانتینرایز (Containerize) کردید و آن را در Cloud Run مستقر (Deploy) نمودید!

با استفاده از Jib، شما یک تصویر کانتینر بهینه شده بدون نصب Docker یا نوشتن Dockerfile ساختید و آن را در Container Registry منتشر کردید. Jib ساخت تصویر را بهینه می‌کند، بنابراین هر کسی که دانش عمیقی در مورد Docker ندارد می‌تواند برنامه‌های جاوا را به سرعت و به طور کارآمد کانتینری کند. سپس، با چند کلیک، برنامه را در Cloud Run مستقر کردید تا در کمترین زمان شروع به سرویس‌دهی کند.

بیشتر بدانید