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 một hình ảnh vùng chứa Docker được tối ưu hoá cho các ứng dụng Java trong thời gian ngắn 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 bằng Cloud Run, một nền tảng điện toán được quản lý có khả năng tự động mở rộng quy mô các vùng chứa không trạng thái của bạn. Trong lớp học lập trình này, bạn sẽ thấy việc tạo vùng chứa cho ứng dụng Spring Boot 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 hướng dẫn bạn cách thiết lập một ứng dụng đơn giản bằng Kotlin, minh hoạ cách sử dụng các dịch vụ và công cụ của Google Cloud, bao gồm Jib, Container Registry và Cloud Run.
Điều kiện tiên quyết
- Làm quen với ngôn ngữ lập trình và các công cụ Java
- 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 một ứng dụng Spring Boot Kotlin.
- Tạo một 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
Thiết lập môi trường theo tốc độ của riêng bạn
- Đăng nhập vào Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. (Nếu chưa có tài khoản Gmail hoặc G Suite, bạn phải tạo một tài khoản.)
Hãy nhớ mã dự án, một tên duy nhất trong tất cả các dự án trên Google Cloud (tên ở trên đã được sử dụng và sẽ không hoạt động đối với bạn, xin lỗi!). Sau này trong lớp học lập trình này, chúng ta sẽ gọi nó là PROJECT_ID
.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên trên Google Cloud.
Việc thực hiện lớp học lập trình này sẽ không tốn của bạn quá vài đô la, nhưng có thể tốn nhiều hơn nếu bạn quyết định sử dụng nhiều tài nguyên hơn hoặc nếu bạn để các tài nguyên đó chạy.
Người dùng mới của Google Cloud đủ điều kiện dùng gói dùng thử miễn phí trị giá 300 USD.
Cloud Shell
Mặc dù 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
- Trong Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell
.
Nếu chưa từng khởi động Cloud Shell, bạn sẽ thấy một màn hình trung gian (bên dưới phần hiển thị đầu tiên) mô tả về Cloud Shell. Nếu vậy, hãy nhấp vào Tiếp tục (và bạn sẽ không bao giờ thấy màn hình này nữa). Sau đây là giao diện của màn hình xuất hiện một lần:
Quá trình cấp phép và kết nối với Cloud Shell chỉ mất vài giây.
Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nền tảng này cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện hầu hết, nếu không muốn nói là tất cả, công việc trong lớp học lập trình này 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 rằng mình đã được xác thực và dự án đã được đặt thành mã dự án của bạn.
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list
Đầu ra của lệnh
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
Đầu ra của lệnh
[core] project = <PROJECT_ID>
Nếu không, bạn có thể đặt nó bằng lệnh sau:
gcloud config set project <PROJECT_ID>
Đầu ra của lệnh
Updated property [core/project].
- Tạo một ứng dụng Spring Boot mới bằng Spring Initializr.
$ curl https://start.spring.io/starter.tgz \ -d language=kotlin \ -d dependencies=web \ -d baseDir=kotlin-jib-cloud-run | tar -xzvf -
Xin lưu ý rằng Initializr sẽ tự động thêm spring-boot-starter-web
vào các phần phụ thuộc của bạn trong pom.xml
của ứng dụng mẫu.
- Thay đổi thành thư mục của ứng dụng mẫu.
$ cd kotlin-jib-cloud-run
- Tạo bản dựng và chạy ứng dụng bằng Maven.
$ ./mvnw -DskipTests spring-boot:run
- Sau khi khởi động, ứng dụng sẽ bắt đầu nghe trên cổng 8080. Nhấp vào Web Preview (Xem trước trên web)
trong thanh công cụ Cloud Shell rồi chọn Preview on port 8080 (Xem trước trên cổng 8080) để truy cập vào ứng dụng.
- Bạn sẽ nhận được phản hồi 404 vì ứng dụng chưa làm được việc gì hữu ích. Dừng ứng dụng bằng
Control+C
.
- Tạo lớp
Controller
sau đây 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!"
}
}
- Tạo lại và chạy ứng dụng.
$ ./mvnw spring-boot:run
- Kiểm tra lại ứng dụng bằng Web Preview
(Xem trước trên web). 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ằngControl+C
.
Với Jib, bạn có thể tạo vùng chứa cho ứng dụng theo cách tối ưu 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.
- Trước khi tiếp tục, bạn cần kích hoạt Container Registry API. 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
- Chạy Jib để tạo một hình ảnh Docker và xuất bản lên Container Registry.
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:1.8.0: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 đóng gói và chuyển đến Container Registry.
[INFO] Built and pushed image as gcr.io/PROJECT_ID/kotlin-jib-cloud-run ... [INFO] BUILD SUCCESS
Nếu bạn thấy lỗi, hãy kiểm tra kỹ xem $GOOGLE_CLOUD_PROJECT
đã được đặt chính xác thành mã dự án trên Google Cloud (PROJECT_ID
) hay chưa.
- Trước khi chuyển sang bước tiếp theo, 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ướng
rồi chọn Container Registry.
Bạn sẽ thấy hình ảnh của mình được xuất bản thành công.
Cloud Run cung cấp mô hình không máy chủ cho các vùng chứa, tự động mở rộng quy mô các vùng chứa không trạng thái của bạn.
- Nhấp lại vào Trình đơn điều hướng
rồi chọn Cloud Run.
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 để thiết lập một lần. Nhấp vào Bắt đầu sử dụng Cloud Run nếu bạn thấy lựa chọn này.
- Trên trang Cloud Run, hãy nhấp vào Tạo dịch vụ.
- Trong màn hình tiếp theo, hãy nhấp vào Chọn trong phần Nguồn. Nguồn là hình ảnh bạn muốn chạy trên Cloud Run.
- Hộp thoại sẽ cho thấy 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.
- Bạn chỉ cần nhấp thêm vài lần nữa là có thể triển khai ứng dụng ngay. Trong mục Nền tảng triển khai, hãy chọn Cloud Run (được quản lý hoàn toàn) để dịch vụ được quản lý 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!
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 xem thử!
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ể thực hiện bằng cách nhấp vào Triển khai bản sửa đổi mới trên trang.
- Để 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 Xoá.
- Tương tự, hãy chuyển đến trang Container Registry rồi xoá hình ảnh.
Xin chúc mừng! Bạn đã tạo thành công ứng dụng Spring Boot Kotlin dưới dạng vùng chứa 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 Docker hoặc viết Dockerfile và xuất bản hình ảnh đó lên Container Registry. Jib tối ưu hoá quá trình tạo hình ảnh, nhờ đó, bất kỳ ai không có kiến thức chuyên sâu về Docker đều có thể tạo vùng chứa cho các ứng dụng Java một cách nhanh chóng và hiệu quả. Sau đó, chỉ với một vài lần nhấp, bạn đã triển khai ứng dụng này lên Cloud Run để bắt đầu phân phát ngay lập tức.
Tìm hiểu thêm
- Triển khai một ứng dụng Java vào Kubernetes trên Google Kubernetes Engine
- Tài liệu về Cloud Run
- Tổng quan về Cloud Run
- Giới thiệu Jib – tạo hình ảnh Docker Java hiệu quả hơn
- Tạo vùng chứa nhanh hơn bằng Jib, một công cụ tạo hình ảnh của Google dành cho các ứng dụng Java
- Jib – tạo vùng chứa cho ứng dụng Java
- Kênh Jib Gitter
- Danh sách gửi thư cho người dùng Jib