Vùng chứa ứng dụng Spring Boot trong Kotlin và triển khai ứng dụng đó lên Cloud Run

1. Trước khi bắt đầu

Google cung cấp một công cụ tạo hình ảnh mạnh mẽ giúp bạn dễ dàng tạo và xuất bản hình ảnh vùng chứa Docker được tối ưu hoá cho các ứng dụng Java ngay lập tức mà không cần Docker hoặc Dockerfile. Google Cloud cũng cung cấp mô hình không máy chủ cho các vùng chứa thông qua Cloud Run, một nền tảng điện toán được quản lý giúp tự động mở rộng quy mô các vùng chứa không có trạng thái. Trong lớp học lập trình này, bạn sẽ thấy việc chứa ứng dụng Spring Boot bằng Kotlin, xuất bản lên Container Registry và chạy hình ảnh trên Google Cloud một cách liền mạch dễ dàng như thế nào!

Lớp học lập trình này sẽ hướng dẫn bạn cách thiết lập một ứng dụng đơn giản trong Kotlin, minh hoạ cách sử dụng các dịch vụ và công cụ của Google Cloud, bao gồm cả Jib, Container RegistryCloud Run.

Điều kiện tiên quyết

  • Làm quen với các công cụ và ngôn ngữ lập trình Java
  • Có kiến thức về các trình chỉnh sửa văn bản tiêu chuẩn của Linux, chẳng hạn như Vim, Emacs và nano

Bạn sẽ thực hiện

  • Thiết lập ứng dụng Kotlin Boot (khởi động mùa xuân).
  • Xây dựng hình ảnh Docker được tối ưu hoá.
  • Xuất bản hình ảnh lên Container Registry.
  • Chạy ứng dụng trong vùng chứa trên Cloud Run.

Bạn cần có

  • Một dự án trên Google Cloud
  • Một trình duyệt, chẳng hạn như Google Chrome

2. Thiết lập

Thiết lập môi trường theo tiến độ riêng

  1. Đăng nhập vào Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

96a9c957bc475304.pngs

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

Xin lưu ý rằng mã dự án là một tên riêng biệt trong tất cả dự án Google Cloud (tên ở trên đã được sử dụng nên sẽ không phù hợp với bạn!). Lớp này sẽ được đề cập sau trong lớp học lập trình này là PROJECT_ID.

  1. Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên của Google Cloud.

Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" sẽ tư vấn cho bạn cách tắt tài nguyên để bạn không phải chịu thanh toán ngoài hướng dẫn này. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.

Cloud Shell

Mặc dù bạn có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Cloud Shell, một môi trường dòng lệnh chạy trong Google Cloud.

Kích hoạt Cloud Shell

  1. Trong Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell 4292cbf4971c9786.pngs.

bce75f34b2c53987.png

Nếu trước đây bạn chưa từng khởi động Cloud Shell, thì bạn sẽ thấy một màn hình trung gian (dưới màn hình đầu tiên) mô tả về ứng dụng này. Nếu trường hợp đó xảy ra, hãy nhấp vào Tiếp tục (và bạn sẽ không thấy thông báo đó nữa). Màn hình một lần đó sẽ có dạng như sau:

70f315d7b402b476.pngS

Quá trình cấp phép và kết nối với Cloud Shell chỉ mất vài phút.

fbe3a0674c982259.png

Máy ảo này chứa tất cả các công cụ phát triển mà bạn cần. Dịch vụ này cung cấp thư mục gốc 5 GB ổn định và chạy trong Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Trong lớp học lập trình này, đa số mọi người đều có thể thực hiện chỉ bằng một trình duyệt hoặc Chromebook.

Sau khi kết nối với Cloud Shell, bạn sẽ thấy mình đã được xác thực và dự án đã được đặt thành mã dự án.

  1. Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list

Kết quả lệnh

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Chạy lệnh sau trong Cloud Shell để xác nhận rằng lệnh gcloud biết về dự án của bạn:
gcloud config list project

Kết quả lệnh

[core]
project = <PROJECT_ID>

Nếu chưa, bạn có thể thiết lập chế độ này bằng lệnh sau:

gcloud config set project <PROJECT_ID>

Kết quả lệnh

Updated property [core/project].

3. Khởi chạy ứng dụng Spring Boot

  1. Tạo ứng dụng mới có tên Spring Boot bằng Spring Boot.
$ curl https://start.spring.io/starter.tgz \
    -d language=kotlin \
    -d dependencies=web \
    -d baseDir=kotlin-jib-cloud-run | tar -xzvf -

Lưu ý rằng Trình khởi tạo sẽ tự động thêm spring-boot-starter-web vào các phần phụ thuộc trong pom.xml của ứng dụng mẫu.

  1. Thay đổi sang thư mục của ứng dụng mẫu.
$ cd kotlin-jib-cloud-run
  1. Tạo bản dựng và chạy ứng dụng bằng Maven.
$ ./mvnw -DskipTests spring-boot:run
  1. Sau khi khởi động, ứng dụng sẽ bắt đầu nghe trên cổng 8080. Nhấp vào Web Preview (Bản xem trước trên web) 396bfd51f55afb5d.png.trong thanh công cụ Cloud Shell và chọn Xem trước trên cổng 8080 để truy cập vào ứng dụng.

4172e1e141daf0c1.pngS

  1. Bạn sẽ nhận lại được phản hồi 404 vì ứng dụng này vẫn chưa thực hiện được thao tác hữu ích nào. Dừng ứng dụng bằng Control+C.

4. Thêm trình điều khiển web

  1. Tạo lớp Controller sau trong gói minh hoạ:
$ 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. Tạo lại và chạy ứng dụng.
$ ./mvnw spring-boot:run
  1. Kiểm tra lại ứng dụng bằng cách sử dụng tính năng Xem trước trên web a6cfcaa1d2119c52.png. Lần này, bạn sẽ thấy thông báo "Kotlin app on Cloud Run, containerized by Jib!". Dừng ứng dụng bằng Control+C.

5. Lưu trữ ứng dụng của bạn và xuất bản lên Container Registry

Với Jib, bạn có thể tối ưu hoá vùng chứa ứng dụng của mình mà không cần Docker và xuất bản lên bất kỳ sổ đăng ký vùng chứa nào.

  1. Trước khi tiếp tục, bạn cần kích hoạt Container Registry API (API Đăng ký vùng chứa). Bạn chỉ cần thực hiện việc này một lần cho mỗi dự án để có thể truy cập vào API.
$ gcloud services enable containerregistry.googleapis.com
  1. Chạy Jib để tạo hình ảnh Docker và xuất bản lên Container Registry.
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:3.1.1:build \
    -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run

Cuối cùng, bạn sẽ thấy thông báo sau cho biết ứng dụng đã được lưu trữ và đẩy vào Container Registry (Sổ đăng ký vùng chứa) của bạn.

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

Nếu bạn gặp lỗi, hãy kiểm tra kỹ xem $GOOGLE_CLOUD_PROJECT có được thiết lập chính xác thành mã dự án trên Google Cloud không (PROJECT_ID).

  1. Trước khi tiếp tục, hãy kiểm tra xem hình ảnh đã được xuất bản thành công hay chưa. Quay lại Cloud Console, nhấp vào Trình đơn điều hướngc8b4ea3c68f4c1e3.png, rồi chọn Vùng đăng ký vùng chứa.

6421550ba806beab.png.

38ae0ca573c3dcd.png.

Bạn sẽ thấy rằng hình ảnh của mình đã được xuất bản thành công.

c9086605411691c3.png

6. Chạy ứng dụng trong vùng chứa trên Cloud Run

Cloud Run mang đến giải pháp mô hình không máy chủ cho các vùng chứa, tự động mở rộng quy mô của các vùng chứa không có trạng thái.

  1. Nhấp lại vào Trình đơn điều hướng c8b4ea3c68f4c1e3.png rồi chọn Cloud Run.

812c7c87527ebe4a.png.

Nếu đây là lần đầu tiên truy cập vào Cloud Run, bạn sẽ thấy hộp thoại sau đây để thiết lập một lần. Nhấp vào Start Using Cloud Run (Bắt đầu sử dụng Cloud Run) nếu xuất hiện.

1b2bf05712f6150a.pngS

  1. Trên trang Cloud Run, hãy nhấp vào Create Service (Tạo dịch vụ).

c0b4b980662f7807.png

  1. Trên màn hình tiếp theo, hãy nhấp vào Chọn bên dưới Nguồn. Nguồn là hình ảnh bạn muốn chạy trên Cloud Run.

2049621ae97d62ee.pngS

  1. Hộp thoại sẽ hiển thị hình ảnh mà bạn đã tạo trước đó. Chọn hình ảnh rồi nhấp vào Tiếp tục.

564367bc65caefbf.png.

  1. Bạn chỉ cần vài cú nhấp chuột nữa là có thể triển khai ứng dụng ngay bây giờ. Trong mục Nền tảng triển khai, hãy chọn Cloud Run (được quản lý hoàn toàn) để quản lý dịch vụ hoàn toàn trên Google Cloud. Chọn một khu vực phù hợp với vị trí của bạn, chọn Cho phép lệnh gọi chưa được xác thực rồi nhấp vào Tạo. Vậy là xong!

3eb0f51d15326cac.png.

Khi hình ảnh được triển khai đầy đủ, trang Cloud Run sẽ hiển thị một URL để truy cập vào ứng dụng. Hãy khám phá ngay!

8bf800dd6e2f44f2.png.

Cuối cùng, bạn sẽ thấy thông báo mà bạn mong đợi từ ứng dụng.

Kotlin app on Cloud Run, containerized by Jib!

Vậy là xong! Trong tương lai, nếu cần triển khai các phiên bản ứng dụng mới, bạn có thể nhấp vào Triển khai bản sửa đổi mới trên trang.

7. Dọn dẹp

  1. Để dọn dẹp môi trường, bạn cần xoá ứng dụng đã triển khai trên Cloud Run và hình ảnh đã xuất bản trên Container Registry. Chuyển đến Cloud Run, chọn ứng dụng rồi nhấp vào Delete (Xoá).

1dfc2f51c1b5f6e.png.

  1. Tương tự, truy cập trang Container Registry và xoá hình ảnh.

1b724136c1655935.pngS

8. Xin chúc mừng

Xin chúc mừng! Bạn đã chứa thành công ứng dụng Spring Boot trong Kotlin và triển khai ứng dụng đó lên Cloud Run!

Bằng cách sử dụng Jib, bạn đã tạo một hình ảnh vùng chứa được tối ưu hoá mà không cần cài đặt hoặc viết Dockerfile, rồi xuất bản hình ảnh đó lên Container Registry. Jib tối ưu hoá việc xây dựng hình ảnh, vì vậy, bất cứ ai không có kiến thức chuyên sâu về Docker đều có thể đóng vùng chứa các ứng dụng Java một cách nhanh chóng và hiệu quả. Sau đó, chỉ bằng vài cú nhấp chuột, bạn đã triển khai ứng dụng lên Cloud Run để bắt đầu phân phát ngay lập tức.

Tìm hiểu thêm