Рубрики
Без рубрики

Развертывание приложения для весенней загрузки в google App Engine

Подробный учебник по развертыванию приложения Spring Boot с помощью MyS’L для Google App Engine.

Автор оригинала: Corneil du Plessis.

1. Обзор

В этом учебнике мы покажем, как развернуть приложение из нашей Bootstrap простое приложение с использованием весенней загрузки учебник для App Engine на облачной платформе Google.

В рамках этого мы будем:

  • Настройка облачной платформы Google консоли и SDK
  • Используйте облачный S’L для создания экземпляра MyS’L
  • Настройка приложения для весеннего облака GCP
  • Развертывание приложения в App Engine и его тестирование

2. Конфигурация облачной платформы Google

Мы можем использовать консоль GCP, чтобы подготовить нашу местную среду к GCP. Мы можем найти процесс установки на официальном сайте.

Давайте создадим проект по GCP с использованием Консоль GCP :

gcloud init

Далее давайте настройим название проекта:

gcloud config set project baeldung-spring-boot-bootstrap

Затем мы установим поддержку App Engine и создадим экземпляр App Engine:

gcloud components install app-engine-java
gcloud app create

Нашему приложению необходимо подключиться к базе данных MyS’L в облачной среде S’L. Поскольку облачный S’L не предоставляет бесплатный уровень, мы должны включить биллинговые на счету GCP.

Мы можем легко проверить доступные уровни:

gcloud sql tiers list

Прежде чем продолжить работу, мы должны использовать веб-сайт GCP, чтобы Облачный API администратора S’L .

Теперь мы можем создать экземпляр MyS’L и базу данных в Облачный S’L с помощью облачной консоли или SDK CLI. В ходе этого процесса мы выберем регион и предоставим имя экземпляра и название базы данных. Важно, чтобы приложение и экземпляр базы данных были в одном регионе.

Так как мы собираемся развернуть приложение, чтобы Европа-Запад2 , давайте сделаем то же самое для примера:

# create instance
gcloud sql instances create \
  baeldung-spring-boot-bootstrap-db \
    --tier=db-f1-micro \
    --region=europe-west2
# create database
gcloud sql databases create \
  baeldung_bootstrap_db \
    --instance=baeldung-spring-boot-bootstrap-db

3. Весенние облачные GCP зависимости

Нашему приложению потребуется зависимость от Весеннее облако GCP проекта для облачных API. Для этого давайте использовать профиль Maven под названием облако-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
    
  

Затем мы добавим плагин App Engine Maven:

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

4. Конфигурация приложения

Теперь давайте определим конфигурацию, которая позволяет приложению использовать облачные ресурсы, такие как база данных.

Весеннее облако GCP использует весна-облако-bootstrap.properts для определения имени приложения:

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

Мы будем использовать весенний профиль под названием gcp для этого развертывания и нам нужно настроить соединение базы данных. Поэтому мы создаем src/main/resources/application-gcp.properts :

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. Развертывание

Google App Engine предоставляет две среды Java:

  • Стандартный окружающая среда обеспечивает Jetty и JDK8 и Гибкая среда обеспечивает только JDK8 и
  • Гибкая среда является лучшим вариантом для приложений Spring Boot.

Мы требуем gcp и mysql Весенние профили должны быть активными, поэтому мы предоставляем SPRING_PROFILES_ACTIVE экологическая переменная для приложения, добавляя его в конфигурацию развертывания в src/main/appengine/app.yaml :

runtime: java
env: flex
runtime_config:
  jdk: openjdk8
env_variables:
  SPRING_PROFILES_ACTIVE: "gcp,mysql"
handlers:
- url: /.*
  script: this field is required, but ignored
manual_scaling: 
  instances: 1

Теперь, давайте создавать и развертывать приложение с помощью апппенгин Maven плагин :

mvn clean package appengine:deploy -P cloud-gcp

После развертывания мы можем просматривать или хвост файлы журнала:

# view
gcloud app logs read

# tail
gcloud app logs tail

Теперь, давайте проверим, работает ли наше приложение, добавив книгу :

http POST https://baeldung-spring-boot-bootstrap.appspot.com/api/books \
        title="The Player of Games" author="Iain M. Banks"

Ожидая следующего вывода:

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

6. Масштабирование приложения

Масштабирование по умолчанию в App Engine является автоматическим.

Возможно, лучше начать с ручного масштабирования до тех пор, пока мы не поймем поведение времени выполнения, а также связанные с этим бюджеты и затраты. Мы можем назначить ресурсы для приложения и настроить автоматическое масштабирование в app.yaml :

# Application Resources
resources:
  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.6

7. Заключение

В этом учебнике мы:

  • Настроенная облачная платформа Google и app Engine
  • Создан экземпляр MyS’L с облачным S’L
  • Настроенное весеннее облако GCP для использования MyS’L
  • Развертывание нашего настроенного приложения Spring Boot, и
  • Проверено и масштабировано приложение

Мы всегда можем сослаться на обширные Документация App Engine для получения более подробной информации.

Полный исходный код наших примеров здесь, как всегда, более на GitHub .