Автор оригинала: 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-db3. Весенние облачные 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_db5. Развертывание
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.67. Заключение
В этом учебнике мы:
- Настроенная облачная платформа Google и app Engine
- Создан экземпляр MyS’L с облачным S’L
- Настроенное весеннее облако GCP для использования MyS’L
- Развертывание нашего настроенного приложения Spring Boot, и
- Проверено и масштабировано приложение
Мы всегда можем сослаться на обширные Документация App Engine для получения более подробной информации.
Полный исходный код наших примеров здесь, как всегда, более на GitHub .