Distribuere en Spring Boot-applikasjon til Google App Engine

1. Oversikt

I denne opplæringen viser vi hvordan du distribuerer en applikasjon fra vår Bootstrap en enkel applikasjon ved hjelp av Spring Boot-opplæringen til App Engine på Google Cloud Platform.

Som en del av dette vil vi:

  • Konfigurer Google Cloud Platform Console og SDK
  • Bruk Cloud SQL til å opprette en MySQL-forekomst
  • Konfigurer applikasjonen for Spring Cloud GCP
  • Distribuer applikasjonen til App Engine og test den

2. Google Cloud Platform Configuration

Vi kan bruke GCP-konsollen for å gjøre lokalmiljøet vårt klart for GCP. Vi finner installasjonsprosessen på det offisielle nettstedet.

La oss lage et prosjekt på GCP ved hjelp av GCP-konsollen:

gcloud init

Deretter la oss konfigurere prosjektnavnet:

gcloud config sett prosjekt baeldung-spring-boot-bootstrap

Deretter installerer vi App Engine-støtten og oppretter en App Engine-forekomst:

gcloud-komponenter installerer app-engine-java gcloud app oppretter

Applikasjonen vår må koble til en MySQL-database i Cloud SQL-miljøet. Siden Cloud SQL ikke gir et gratis nivå, må vi aktivere fakturering på GCP-kontoen.

Vi kan enkelt sjekke tilgjengelige nivåer:

gcloud sql tiers list 

Før vi fortsetter, bør vi bruke GCP-nettstedet for å aktivere Cloud SQL Admin API.

Nå kan vi opprette en MySQL-forekomst og -database i Cloud SQL ved hjelp av Cloud Console eller SDK CLI. I løpet av denne prosessen velger vi regionen og gir et forekomstnavn og databasenavn. Det er viktig at appen og databaseinstansen er i samme region.

Siden vi skal distribuere appen til europe-vest2, la oss gjøre det samme for forekomsten:

# opprett forekomst gcloud sql-forekomster opprett \ baeldung-spring-boot-bootstrap-db \ --tier = db-f1-micro \ --region = europe-west2 # opprett database gcloud sql databaser opprette \ baeldung_bootstrap_db \ ​​--instance = baeldung -spring-boot-bootstrap-db

3. Spring Cloud GCP-avhengigheter

Vår applikasjon vil trenge avhengigheter fra Spring Cloud GCP-prosjektet for sky-native API-ene. For dette, la oss bruke en Maven-profil som heter sky-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 

Deretter legger vi til App Engine Maven-plugin:

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

4. Programkonfigurasjon

La oss nå definere konfigurasjonen som lar applikasjonen bruke skyinnfødte ressurser som databasen.

Våren Cloud GCP bruker spring-cloud-bootstrap.properties for å bestemme søknadsnavnet:

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

Vi bruker en vårprofil med navnet gcp for denne distribusjonen, og vi må konfigurere databasetilkoblingen. Derfor skaper 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 har to Java-miljøer:

  • de Standard miljø gir brygge og JDK8 og Fleksibel miljø gir bare JDK8 og
  • Fleksibelt miljø er det beste alternativet for Spring Boot-applikasjoner.

Vi krever gcp og mysql Vårprofiler for å være aktive, så vi tilbyr SPRING_PROFILES_ACTIVE miljøvariabel til applikasjonen ved å legge den til distribusjonskonfigurasjonen i src / main / appengine / app.yaml:

kjøretid: java env: flex runtime_config: jdk: openjdk8 env_variables: SPRING_PROFILES_ACTIVE: "gcp, mysql" handlers: - url: /.* script: dette feltet er obligatorisk, men ignoreres manual_scaling: forekomster: 1

Nå, la oss bygge og distribuere applikasjonen ved hjelp av appengine maven plugin:

mvn ren pakke appengine: distribuere -P sky-gcp

Etter distribusjon kan vi se eller hale loggfiler:

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

Nå, la oss bekrefte at søknaden vår fungerer ved å legge til en bok:

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

Forventer følgende utgang:

HTTP / 1.1 201 {"author": "Iain M. Banks", "id": 1, "title": "Spilleren av spill"}

6. Skalering av applikasjonen

Standard skalering i App Engine er automatisk.

Det kan være bedre å begynne med manuell skalering til vi forstår kjøretidsoppførselen og tilhørende budsjetter og kostnader. Vi kan tildele ressurser til applikasjonen og konfigurere automatisk skalering i app.yaml:

# Ressurser for applikasjonsressurser: cpu: 2 memory_gb: 2 disk_size_gb: 10 volumes: - name: ramdisk1 volume_type: tmpfs size_gb: 0.5 # Automatic Scaling automatic_scaling: min_num_instances: 1 max_num_instances: 4 cool_down_period_sec: 180 cpu_utilization: target_utilization: 0

7. Konklusjon

I denne opplæringen:

  • Konfigurert Google Cloud Platform og App Engine
  • Opprettet en MySQL-forekomst med Cloud SQL
  • Konfigurert Spring Cloud GCP for bruk av MySQL
  • Implementerte vår konfigurerte Spring Boot-applikasjon, og
  • Testet og skalert applikasjonen

Vi kan alltid se Googles omfattende App Engine-dokumentasjon for mer informasjon.

Den komplette kildekoden til eksemplene våre her er som alltid over på GitHub.


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