חיבור של אפליקציית Spring Boot ל-Cloud SQL

חיבור של אפליקציית Spring Boot ל-Cloud SQL

מידע על Codelab זה

subjectהעדכון האחרון: אפר׳ 22, 2020
account_circleנכתב על ידי גוגלר

1.‏ לפני שמתחילים

Cloud SQL הוא שירות של מסדי נתונים מנוהל במלואו, שמאפשר להגדיר, לתחזק, לנהל ולנהל את מסדי הנתונים היחסיים שלכם ב-Google Cloud. אתם יכולים להשתמש ב-Cloud SQL עם Cloud SQL ל-MySQL או ל-Cloud SQL ל-PostgreSQL.

ב-Codelab הזה תלמדו איך להגדיר מופע של Cloud SQL ל-MySQL ולאחר מכן תעדכנו אפליקציה של Spring Boot כדי להשתמש במופע של Cloud SQL כאחסון עורפי. Spring Boot Starter for Google Cloud SQL מספק DataSource המוגדר באופן אוטומטי, כך שתוכלו לנצל בקלות את Cloud SQL עם שינויים מינימליים בקוד שלכם. ב-codelab זה נעשה שימוש בקוד המקור של אביב פטליני.

דרישות מוקדמות

  • היכרות עם השפה והתכנות של Java
  • ידע בעורכי טקסט רגילים של Linux, כמו Vim , Emacs ו-nano

מה צריך לעשות

  • שימוש ב-Cloud SQL באפליקציית Spring Boot.

מה צריך?

2.‏ הגדרה ודרישות

הגדרת סביבה בקצב עצמי

  1. נכנסים ל-Cloud Console ויוצרים פרויקט חדש או משתמשים שוב בפרויקט קיים. (אם עדיין אין לכם חשבון Gmail או G Suite, עליכם ליצור חשבון).

חשוב לזכור את מזהה הפרויקט הוא שם ייחודי בכל הפרויקטים ב-Google Cloud (השם הקודם כבר תפוס, והוא לא יעבוד בשבילך.) נתייחס אליו מאוחר יותר ב-codelab הזה בתור PROJECT_ID.

  1. לאחר מכן, עליך להפעיל חיוב ב-Cloud Console כדי להשתמש במשאבים של Google Cloud.

התהליך של קוד Lab זה לא אמור לעלות יותר מדולר אחד, אבל אם החלטתם להשתמש במשאבים נוספים או להשאיר אותם, ייתכן שהסכום יהיה גבוה יותר.

משתמשים חדשים ב-Google Cloud זכאים לתקופת ניסיון בחינם ב-1200 ש"ח.

הפעלת Cloud Shell

  1. ב-Cloud Console, לוחצים על Activate Cloud Shell .

אם אף פעם לא התחלת להשתמש ב-Cloud Shell, יוצג לך מסך ביניים (בחלק הנגלל) שמתאר את הבעיה. אם זה קורה, יש ללחוץ על המשך (ולא יוצג לך שוב). כך נראה המסך החד-פעמי הזה:

הוא ייקח רק כמה רגעים עד שההקצאה והחיבור ל-Cloud Shell.

המכונה הווירטואלית הזו נטענת באמצעות כל כלי הפיתוח הדרושים לך. יש בה ספריית בית בנפח עקבי של 5GB והיא פועלת ב-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].

3.‏ הגדרת Cloud SQL למופע MySQL

  1. לאחר ההשקה של Cloud Shell, תוכלו להשתמש בשורת הפקודה כדי ליצור מופע חדש של Cloud SQL:
$ gcloud sql instances create my-instance

בסיום הפעולה, המכונה תהיה מוכנה לשימוש.

  1. עכשיו יוצרים מסד נתונים שישמש אתכם עבור האפליקציה Petclinic:
$ gcloud sql databases create petclinic --instance my-instance

אפשר גם לגשת למכונה ולהגדיר אותה דרך Cloud Console.

  1. קבלת שם החיבור למופע בפורמט project-id:zone-id:instance-id על ידי הרצת הפקודה הבאה. השם הזה ישמש אותך בהמשך בהגדרת אפליקציית Spring אתחול.
$ gcloud sql instances describe my-instance |grep connectionName

4.‏ שכפול ובדיקה של אפליקציית Petclinic באופן מקומי

  1. בשלב זה צריך לשכפל ולבחון את האפליקציה Petclinic באופן מקומי.
$ git clone https://github.com/spring-projects/spring-petclinic
$ cd spring-petclinic
$ ./mvnw spring-boot:run
  1. לוחצים על תצוגה מקדימה באינטרנט ב-Cloud Shell , ואז בוחרים באפשרות תצוגה מקדימה ביציאה 8080.

דף הבית של Petclinic מוצג כאן בדפדפן:

  1. ממשיכים לשחק ומוסיפים נתונים. האפליקציה משתמשת במסד נתונים של זיכרון HyperSQL. מעכשיו, מה-hyperSQL תשתמשו ב-Cloud SQL כמסד הנתונים.

5.‏ שימוש ב-Cloud SQL ב-Patclinic

עדכון קובץ pven.xml של Maven

יש לעדכן את הקובץ pom.xml כפי שמוצג כאן. הסימן לתחילת הפעולה מספק באופן אוטומטי אובייקט DataSource שהוגדר באופן אוטומטי כדי להתחבר למסד הנתונים של Cloud SQL. כדי לערוך את הקובץ אפשר להשתמש ב-Vim , nano או Emacs.

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
    ...
   
<!-- Add Spring Cloud GCP Dependency BOM -->
   
<dependencyManagement>
       
<dependencies>
         
<dependency>
         
<groupId>org.springframework.cloud</groupId>
         
<artifactId>spring-cloud-gcp-dependencies</artifactId>
         
<version>1.0.0.RC1</version>
         
<type>pom</type>
         
<scope>import</scope>
         
</dependency>
     
</dependencies>
   
</dependencyManagement>
   
<dependencies>
      ...
     
<!-- Add CloudSQL Starter for MySQL -->
     
<dependency>
       
<groupId>org.springframework.cloud</groupId>
       
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
     
</dependency>
      ...
   
</dependencies>
   
<repositories>
     
<!-- Use Spring Milestone Repository -->
     
<repository>
       
<id>repository.spring.milestone</id>
       
<name>Spring Milestones Repository</name>
       
<url>http://repo.spring.io/milestone</url>
     
</repository>
   
</repositories>
</project>

עדכון application-mysql.properties

  1. יש להחליף את התוכן של src/main/resources/application-mysql.properties במאפיינים הבאים. יש להגדיר את שם החיבור של המופע מהשלב הקודם.

src/main/resources/apply-mysql.properties

database=mysql

# Delete the rest of the original content of the file and replace with the following:
spring
.cloud.gcp.sql.database-name=petclinic
spring
.cloud.gcp.sql.instance-connection-name=YOUR_CLOUD_SQL_INSTANCE_CONNECTION_NAME

# Initialize the database since the newly created Cloud SQL database has no tables. The following flag is for Spring Boot 2.
spring
.datasource.initialization-mode=always
  1. לבסוף, כדי להפעיל פרופיל Cloud SQL עבור MySQL באפליקציית Spring אתחול, מוסיפים mysql לנכס application.properties' spring.profiles.active:

src/main/resources/Application.properties

# Keep the content of the file the same
...

# In the last line, add mysql to the spring.profiles.active property
spring
.profiles.active=mysql

6.‏ הפעלת האפליקציה ב-Cloud Shell

  1. אפשר להתחיל את אפליקציית Spring Boot כרגיל באמצעות הפלאגין של Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. לאחר הפעלת האפליקציה, לוחצים על תצוגה מקדימה באינטרנט בסרגל הכלים של Cloud Shell ובוחרים באפשרות תצוגה מקדימה ביציאה 8080.

דף הבית של Spring Petclinic אמור להופיע כאן שוב בדפדפן:

  1. מוסיפים רשומה של הבעלים של חיית המחמד.

אופציונלי: מוודאים ש-Cloud SQL אפשר לשמור את הנתונים

ניתן לוודא שהנתונים שהזנת נשמרו ב-Cloud SQL, כפי שמוצג כאן. הקש על Enter (החזר ב-Macintosh) כשתופיע הסיסמה.

$ gcloud sql connect my-instance -u root
Whitelisting your IP for incoming connection for 5 minutes...done.
Enter password: <Press Enter, there is no password by default>
...
mysql> use petclinic;
mysql> select * from owners;
  

אופציונלי: מחיקת מופע של Cloud SQL

אחרי שמפסיקים את האפליקציה, אפשר למחוק את המופע של Cloud SQL באמצעות הפקודה הבאה:

$ gcloud sql instances delete my-instance 

7.‏ מזל טוב

למדת איך להתחבר אל Cloud SQL באפליקציית Spring Boot!

למידע נוסף