1. לפני שמתחילים
Google מספקת כלי עוצמתי לפיתוח קובצי אימג' שבאמצעותו אפשר לפתח ולפרסם בקלות קובץ אימג' של קונטיינר Docker שמותאם לאפליקציות Java, בלי להשתמש ב-Docker או בקובץ Docker. ב-Google Cloud, קונטיינרים ללא שרת הופכים גם לקונטיינרים באמצעות Cloud Run, פלטפורמת מחשוב מנוהלת שמותאמת באופן אוטומטי לקונטיינרים ללא שמירת מצב. ב-Codelab הזה תראו כמה קל ליצור קונטיינרים לאפליקציית Spring Boot Kotlin, לפרסם ב-Container Registry ולהפעיל את התמונה ב-Google Cloud בצורה חלקה!
ב-Codelab הזה תלמד איך להגדיר אפליקציה פשוטה ב-Kotlin, שבה ניתן להשתמש בשירותים ובכלים של Google Cloud, כולל Jib , Container Registry ו-Cloud Run.
דרישות מוקדמות
- היכרות עם שפת התכנות והכלים של Java
- ידע בעורכי טקסט סטנדרטיים של Linux, כגון Vim, Emacs ו-nano
הפעולות שתבצעו:
- מגדירים את אפליקציית Spring Boot Kotlin.
- פיתוח תמונת Docker אופטימלית.
- מפרסמים את התמונה ב-Container Registry.
- מריצים את האפליקציה בקונטיינרים ב-Cloud Run.
למה תזדקק?
- פרויקט ב-Google Cloud
- דפדפן, כמו Google Chrome
2. בתהליך ההגדרה
הגדרת סביבה בקצב עצמאי
- נכנסים למסוף Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
חשוב לזכור את מזהה הפרויקט, שם ייחודי לכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא מתאים לכם, סליחה). בהמשך ב-Codelab הזה, היא תיקרא PROJECT_ID
.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים של Google Cloud.
מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. חשוב לבצע את כל ההוראות בקטע 'ניקוי' שמסביר איך להשבית משאבים כדי שלא תצברו חיובים מעבר למדריך הזה. משתמשים חדשים ב-Google Cloud זכאים להצטרף לתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
Cloud Shell
אומנם אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה משתמשים ב-Cloud Shell, סביבת שורת הפקודה שפועלת ב-Google Cloud.
הפעלת Cloud Shell
- במסוף Cloud, לוחצים על Activate Cloud Shell .
אם לא הפעלתם את Cloud Shell בעבר, יוצג לכם מסך ביניים (בחלק הנגלל) שמתאר מהו. במקרה כזה, לוחצים על המשך (וזה לא יקרה שוב). כך נראה המסך החד-פעמי:
ההקצאה וההתחברות ל-Cloud Shell נמשכת כמה דקות.
במכונה הווירטואלית הזו משולבת כל כלי הפיתוח שדרושים לכם. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. אם לא את כולן, ניתן לבצע חלק גדול מהעבודה ב-Codelab הזה באמצעות דפדפן או Chromebook.
אחרי ההתחברות ל-Cloud Shell, אתם אמורים לראות שכבר בוצע אימות ושהפרויקט כבר מוגדר למזהה הפרויקט שלכם.
- מריצים את הפקודה הבאה ב-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`
- מריצים את הפקודה הבאה ב-Cloud Shell כדי לוודא שהפקודה ב-gcloud יודעת על הפרויקט שלכם:
gcloud config list project
פלט הפקודה
[core] project = <PROJECT_ID>
אם היא לא נמצאת שם, תוכלו להגדיר אותה באמצעות הפקודה הבאה:
gcloud config set project <PROJECT_ID>
פלט הפקודה
Updated property [core/project].
3. אתחול אפליקציה של Spring Boot
- יצירת אפליקציה חדשה ל-Springboot באמצעות Spring Initializr.
$ curl https://start.spring.io/starter.tgz \ -d language=kotlin \ -d dependencies=web \ -d baseDir=kotlin-jib-cloud-run | tar -xzvf -
חשוב לשים לב שהאתחול יוסיף באופן אוטומטי את spring-boot-starter-web
ליחסי התלות שלך ב-pom.xml
של אפליקציית התבנית.
- שינוי לספרייה של אפליקציית התבנית.
$ cd kotlin-jib-cloud-run
- פיתוח והפעלה של האפליקציה באמצעות Maven.
$ ./mvnw -DskipTests spring-boot:run
- לאחר ההפעלה, האפליקציה תתחיל להאזין ליציאה 8080. כדי לגשת לאפליקציה, לוחצים על Web Previewבסרגל הכלים של Cloud Shell ובוחרים באפשרות Preview on Port 8080.
- אתם אמורים לקבל חזרה תגובת 404 כי האפליקציה עדיין לא עושה שום דבר מועיל. עצירת האפליקציה עם
Control+C
.
4. הוספה של בקר אינטרנט
- יוצרים את המחלקה הבאה
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!"
}
}
- יוצרים מחדש ומפעילים את האפליקציה.
$ ./mvnw spring-boot:run
- צריך לבדוק את האפליקציה שוב באמצעות Web Preview . הפעם אמורה להופיע ההודעה "
Kotlin app on Cloud Run, containerized by Jib!
". עצירת האפליקציה עםControl+C
.
5. יצירת קונטיינרים של האפליקציה ופרסום שלהם ב-Container Registry
באמצעות Jib אתם יכולים ליצור קונטיינרים לאפליקציה בצורה אופטימלית ללא Docker ולפרסם אותם בכל מרשם קונטיינרים.
- כדי להמשיך, עליך להפעיל את Container Registry API. צריך לעשות זאת רק פעם אחת לכל פרויקט כדי שה-API יהיה נגיש.
$ gcloud services enable containerregistry.googleapis.com
- מריצים את 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
בסופו של דבר תופיע ההודעה הבאה, שלפיה האפליקציה נמצאת בקונטיינר והועברה ל-Container Registry שלכם.
[INFO] Built and pushed image as gcr.io/PROJECT_ID/kotlin-jib-cloud-run ... [INFO] BUILD SUCCESS
אם מופיעה שגיאה, צריך לבדוק אם $GOOGLE_CLOUD_PROJECT
מוגדר בצורה נכונה למזהה הפרויקט ב-Google Cloud (PROJECT_ID
).
- לפני שממשיכים, כדאי לבדוק אם התמונה פורסמה בהצלחה. חוזרים אל מסוף Cloud, לוחצים על תפריט הניווט ובוחרים באפשרות Container Registry.
תוכלו לראות שהתמונה פורסמה בהצלחה.
6. הרצת האפליקציה בקונטיינרים ב-Cloud Run
Cloud Run מאפשר גישה ללא שרת (serverless) לקונטיינרים, ומשם באופן אוטומטי את הקונטיינרים ללא שמירת מצב.
- לוחצים שוב על תפריט הניווט ובוחרים באפשרות Cloud Run.
אם זו הפעם הראשונה שאתם ניגשים ל-Cloud Run, תוצג תיבת הדו-שיח הבאה להגדרה חד-פעמית. לוחצים על Start Use Cloud Run (התחלת השימוש ב-Cloud Run) אם הוא מופיע.
- בדף Cloud Run, לוחצים על Create Service.
- במסך הבא, לוחצים על בחירה בקטע מקור. המקור הוא התמונה שרוצים להריץ ב-Cloud Run.
- בתיבת הדו-שיח תוצג התמונה שיצרתם קודם. בוחרים את התמונה ולוחצים על המשך.
- במרחק כמה לחיצות אפשר יהיה לבצע את הפריסה של האפליקציה. בקטע Deployment Platform (פלטפורמת פריסה), בוחרים באפשרות Cloud Run (managed+) כדי לנהל את השירות באופן מלא ב-Google Cloud. בוחרים אזור שמתאים למיקום שלכם, בוחרים באפשרות לאפשר הפעלות לא מאומתות ולוחצים על יצירה. זהו!
כשהתמונה נפרסת באופן מלא, בדף Cloud Run תוצג כתובת URL לגישה לאפליקציה. כדאי לבדוק!
בסוף תופיע ההודעה שאתם מצפים לקבל מהאפליקציה.
Kotlin app on Cloud Run, containerized by Jib!
זהו! בעתיד, אם תצטרכו לפרוס גרסאות חדשות של האפליקציה, תוכלו לעשות זאת בלחיצה על פריסת גרסה חדשה בדף.
7. הסרת המשאבים
- כדי לנקות את הסביבה, עליכם למחוק את האפליקציה שנפרסה ב-Cloud Run ואת התמונה שפורסמה ב-Container Registry. עוברים אל Cloud Run, בוחרים את האפליקציה ולוחצים על Delete.
- באופן דומה, נכנסים לדף Container Registry ומוחקים את התמונה.
8. מזל טוב
מעולה! יצרתם בהצלחה קונטיינרים לאפליקציית Spring Boot Kotlin ופרסתם אותה ל-Cloud Run!
באמצעות Jib, פיתחתם קובץ אימג' בקונטיינר שעבר אופטימיזציה בלי להתקין או לכתוב קובץ Docker, ופרסמתם אותו ב-Container Registry. מערכת Jib מבצעת אופטימיזציה של בניית תמונות, כך שכל מי ללא ידע מעמיק ב-Docker יכול ליצור קונטיינרים לאפליקציות Java במהירות וביעילות. לאחר מכן, בכמה קליקים, פרסתם את האפליקציה ב-Cloud Run כדי להתחיל להציג מודעות במהירות.
מידע נוסף
- פריסת אפליקציית Java ב-Kubernetes ב-Google Kubernetes Engine
- מאמרי העזרה של Cloud Run
- סקירה כללית על Cloud Run
- חדש: Jib – פיתוח טוב יותר של קובצי אימג' ב-Java Docker
- פיתוח מהיר יותר של קונטיינרים באמצעות Jib, כלי של Google ליצירת תמונות בשביל אפליקציות Java
- Jib – קונטיינרים של אפליקציית Java
- הערוץ של Jib Gitter
- רשימת תפוצה של משתמשי Jib