Cloud SQL è un servizio di database completamente gestito che semplifica la configurazione, la manutenzione, la gestione e l'amministrazione dei database relazionali su Google Cloud. Puoi utilizzare Cloud SQL con Cloud SQL per MySQL o Cloud SQL per PostgreSQL.
In questo codelab imparerai a configurare un'istanza Cloud SQL per MySQL e poi ad aggiornare un'app Spring Boot per utilizzare l'istanza Cloud SQL come spazio di archiviazione di backend. Spring Boot Starter per Google Cloud SQL fornisce un DataSource configurato automaticamente, consentendoti di sfruttare facilmente Cloud SQL con modifiche minime al codice. Questo codelab utilizza il codice sorgente di Spring Petclinic.
Prerequisiti
- Familiarità con il linguaggio di programmazione Java e gli strumenti
- Conoscenza degli editor di testo standard di Linux, ad esempio Vim, Emacs e nano
Attività previste
- Utilizza Cloud SQL nella tua app Spring Boot.
Che cosa ti serve
- Un progetto Google Cloud
- Un browser, ad esempio Google Chrome o Firefox
Configurazione dell'ambiente autonoma
- Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai già un account Gmail o G Suite, devi crearne uno.
Ricorda l'ID progetto, un nome univoco per tutti i progetti Google Cloud (il nome riportato sopra è già stato utilizzato e non funzionerà per te, mi dispiace). In questo codelab verrà chiamato PROJECT_ID
.
- Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.
L'esecuzione di questo codelab non dovrebbe costarti più di qualche dollaro, ma potrebbe essere più cara se decidi di utilizzare più risorse o se le lasci in esecuzione.
I nuovi utenti di Google Cloud possono beneficiare di una prova senza costi di 300$.
Attiva Cloud Shell
- Nella console Google Cloud, fai clic su Attiva Cloud Shell
.
Se non hai mai avviato Cloud Shell, vedrai una schermata intermedia (sotto la piega) che ne descrive le funzionalità. In questo caso, fai clic su Continua (e non la vedrai mai più). Ecco come si presenta la schermata una tantum:
Bastano pochi istanti per eseguire il provisioning e connettersi a Cloud Shell.
Questa macchina virtuale è caricata con tutti gli strumenti di sviluppo di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Gran parte, se non tutto, il lavoro in questo codelab può essere svolto semplicemente con un browser o con Chromebook.
Una volta eseguita la connessione a Cloud Shell, dovresti vedere che il tuo account è già autenticato e il progetto è già impostato sul tuo ID progetto.
- Esegui questo comando in Cloud Shell per verificare che l'account sia autenticato:
gcloud auth list
Output comando
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
Output comando
[core] project = <PROJECT_ID>
In caso contrario, puoi impostarlo con questo comando:
gcloud config set project <PROJECT_ID>
Output comando
Updated property [core/project].
- Dopo l'avvio di Cloud Shell, puoi utilizzare la riga di comando per creare una nuova istanza Cloud SQL:
$ gcloud sql instances create my-instance
Al termine di questa operazione, l'istanza sarà pronta per l'uso.
- Ora crea un database che utilizzerai per l'app Petclinic:
$ gcloud sql databases create petclinic --instance my-instance
Puoi anche accedere all'istanza e configurarla tramite la console Cloud.
- Recupera il nome della connessione dell'istanza nel formato
project-id:zone-id:instance-id
eseguendo questo comando. Lo utilizzerai in seguito per configurare l'app Spring Boot.
$ gcloud sql instances describe my-instance |grep connectionName
- Ora clonerai e testerai l'app Petclinic in locale.
$ git clone https://github.com/spring-projects/spring-petclinic $ cd spring-petclinic $ ./mvnw spring-boot:run
- Fai clic su Anteprima web
in Cloud Shell , poi seleziona Anteprima sulla porta 8080.
Nel browser dovresti visualizzare la home page di Petclinic come mostrato qui:
- Gioca un po' e aggiungi dati. L'app utilizza un database HyperSQL in memoria. Ora passerai da HyperSQL a Cloud SQL come database.
Aggiorna il file Maven pom.xml
Aggiorna il file pom.xml
come mostrato qui. Lo starter fornisce un oggetto DataSource
configurato automaticamente per connettersi al database Cloud SQL. Puoi utilizzare Vim, nano o Emacs per modificare il file.
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>
Aggiornare application-mysql.properties
- Sostituisci i contenuti di
src/main/resources/application-mysql.properties
con le seguenti proprietà. Dovrai impostare il nome della connessione dell'istanza dal passaggio precedente.
src/main/resources/application-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
- Infine, abilita un profilo Cloud SQL per MySQL nell'app Spring Boot aggiungendo
mysql
alla proprietà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
- Puoi avviare l'app Spring Boot normalmente con il plug-in Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- Una volta avviata l'app, fai clic su Anteprima web
nella barra degli strumenti di Cloud Shell, quindi seleziona Anteprima sulla porta 8080.
Dovresti visualizzare di nuovo la home page di Spring Petclinic come mostrato qui nel browser:
- Aggiungi una voce per il proprietario dell'animale domestico.
(Facoltativo) Verifica che Cloud SQL abbia reso persistenti i dati
Puoi verificare che i dati inseriti siano stati salvati in modo permanente in Cloud SQL come mostrato qui. Premi Invio (o Return su Macintosh) quando ti viene richiesta una password.
$ 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;
(Facoltativo) Elimina l'istanza Cloud SQL
Dopo aver arrestato l'app, puoi eliminare l'istanza Cloud SQL utilizzando il seguente comando:
$ gcloud sql instances delete my-instance
Hai imparato a connetterti a Cloud SQL nella tua app Spring Boot.