Implementér en Spring Boot-applikation til Google App Engine

1. Oversigt

I denne vejledning viser vi, hvordan du implementerer en applikation fra vores Bootstrap en simpel applikation ved hjælp af Spring Boot-tutorial til App Engine på Google Cloud Platform.

Som en del af dette vil vi:

  • Konfigurer Google Cloud Platform Console og SDK
  • Brug Cloud SQL til at oprette en MySQL-forekomst
  • Konfigurer applikationen til Spring Cloud GCP
  • Distribuer applikationen til App Engine, og test den

2. Konfiguration af Google Cloud Platform

Vi kan bruge GCP-konsollen til at gøre vores lokale miljø klar til GCP. Vi kan finde installationsprocessen på den officielle hjemmeside.

Lad os oprette et projekt om GCP ved hjælp af GCP-konsollen:

gcloud init

Lad os derefter konfigurere projektnavnet:

gcloud konfigurationssæt projekt baeldung-spring-boot-bootstrap

Derefter installerer vi App Engine-supporten og opretter en App Engine-forekomst:

gcloud-komponenter installerer app-engine-java gcloud app opretter

Vores applikation skal oprette forbindelse til en MySQL-database i Cloud SQL-miljøet. Da Cloud SQL ikke giver et gratis niveau, skal vi aktivere fakturering på GCP-kontoen.

Vi kan let kontrollere tilgængelige niveauer:

gcloud sql niveauer liste 

Før vi fortsætter, skal vi bruge GCP-webstedet til at aktivere Cloud SQL Admin API.

Nu kan vi oprette en MySQL-forekomst og -database i Cloud SQL ved hjælp af Cloud Console eller SDK CLI. Under denne proces vælger vi regionen og giver et instansnavn og databasenavn. Det er vigtigt, at appen og databaseinstansen er i samme region.

Da vi skal installere appen til europa-vest2, lad os gøre det samme for forekomsten:

# opret forekomst gcloud sql-forekomster oprette \ baeldung-spring-boot-bootstrap-db \ --tier = db-f1-micro \ --region = europa-vest2 # opret database gcloud sql-databaser oprette \ baeldung_bootstrap_db \ ​​--instance = baeldung -spring-boot-bootstrap-db

3. Forårsky GCP-afhængigheder

Vores applikation har brug for afhængigheder fra Spring Cloud GCP-projektet til de cloud-native API'er. Lad os bruge en Maven-profil, der hedder dette cloud-gcp:

 cloud-gcp org.springframework.cloud spring-cloud-gcp-starter 1.0.0.RELEASE org.springframework.cloud spring-cloud-gcp-starter-sql-mysql 1.0.0.RELEASE 

Derefter tilføjer vi App Engine Maven plugin:

    com.google.cloud.tools appengine-maven-plugin 1.3.2 

4. Konfiguration af applikation

Lad os nu definere den konfiguration, der giver applikationen mulighed for at bruge de cloud-native ressourcer som databasen.

Spring Cloud GCP bruger spring-cloud-bootstrap.properties at bestemme applikationsnavnet:

spring.cloud.appId = baeldung-spring-boot-bootstrap

Vi bruger en forårsprofil med navnet gcp til denne implementering, og vi bliver nødt til at konfigurere databaseforbindelsen. Derfor skaber vi src / main / resources / application-gcp.properties:

spring.cloud.gcp.sql.instance-connection-name = \ baeldung-spring-boot-bootstrap: europe-west2: baeldung-spring-boot-bootstrap-db spring.cloud.gcp.sql.database-name = baeldung_bootstrap_db

5. Implementering

Google App Engine leverer to Java-miljøer:

  • det Standard miljø giver anløbsbro og JDK8 og Fleksibel miljø giver kun JDK8 og
  • det fleksible miljø er den bedste mulighed for Spring Boot-applikationer.

Vi kræver gcp og mysql Forårsprofiler skal være aktive, så vi leverer SPRING_PROFILES_ACTIVE miljøvariabel til applikationen ved at tilføje den til implementeringskonfigurationen i src / main / appengine / app.yaml:

runtime: java env: flex runtime_config: jdk: openjdk8 env_variables: SPRING_PROFILES_ACTIVE: "gcp, mysql" handlers: - url: /.* script: dette felt er påkrævet, men ignoreres manual_scaling: forekomster: 1

Nu, lad os bygge og implementere applikationen ved hjælp af appengine maven-plugin:

mvn ren pakke appengine: deploy -P cloud-gcp

Efter implementeringen kan vi se eller hale logfiler:

# view gcloud app logs read # tail gcloud app logs tail

Nu, lad os kontrollere, at vores ansøgning fungerer ved at tilføje en bog:

http POST //baeldung-spring-boot-bootstrap.appspot.com/api/books \ author = "Iain M. Banks" 

Forventer følgende output:

HTTP / 1.1 201 {"author": "Iain M. Banks", "id": 1, "title": "The Player of Games"}

6. Skalering af applikationen

Standardskalering i App Engine er automatisk.

Det kan være bedre at starte med manuel skalering, indtil vi forstår kørselsadfærden og de dermed forbundne budgetter og omkostninger. Vi kan tildele ressourcer til applikationen og konfigurere automatisk skalering i app.yaml:

# Ressourcer for applikationsressourcer: cpu: 2 memory_gb: 2 disk_size_gb: 10 diskenheder: - navn: ramdisk1 volume_type: tmpfs size_gb: 0.5 # Automatisk skalering automatisk_skalering: min_num_instances: 1 max_num_instances: 4 cool_down_period_sec: 180 cpu_utilization: target_utilization: 0.6

7. Konklusion

I denne vejledning, vi:

  • Konfigureret Google Cloud Platform og App Engine
  • Oprettet en MySQL-forekomst med Cloud SQL
  • Konfigureret Spring Cloud GCP til brug af MySQL
  • Implementerede vores konfigurerede Spring Boot-applikation og
  • Testet og skaleret applikationen

Vi kan altid henvise til Googles omfattende App Engine-dokumentation for yderligere detaljer.

Den komplette kildekode for vores eksempler her er som altid forbi på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found