Контейнеризируйте приложение Spring Boot Kotlin и разверните его в Cloud Run

Google предоставляет мощный инструмент для создания образов, с помощью которого вы можете легко создать и опубликовать оптимизированный образ контейнера Docker для приложений Java в кратчайшие сроки без Docker или Dockerfile. Google Cloud также предоставляет бессерверные решения для контейнеров с Cloud Run — управляемой вычислительной платформой, которая автоматически масштабирует ваши контейнеры без сохранения состояния. В этой кодовой лаборатории вы увидите, как легко контейнеризировать приложение Spring Boot Kotlin, публиковать в Container Registry и без проблем запускать образ в Google Cloud!

Эта лабораторная работа поможет вам настроить простое приложение на Kotlin, которое демонстрирует использование облачных сервисов и инструментов Google, включая Jib , Container Registry и Cloud Run .

Предпосылки

  • Знание языка программирования Java и инструментов
  • Знание стандартных текстовых редакторов Linux, таких как Vim, Emacs и nano.

Что ты будешь делать

  • Настройте приложение Spring Boot Kotlin.
  • Создайте оптимизированный образ Docker.
  • Опубликуйте образ в Container Registry.
  • Запустите контейнерное приложение в Cloud Run.

Что вам понадобится

  • Облачный проект Google
  • Браузер, например Google Chrome

Самостоятельная настройка среды

  1. Войдите в Cloud Console и создайте новый проект или повторно используйте существующий. (Если у вас еще нет учетной записи Gmail или G Suite, ее необходимо создать .)

Запомните идентификатор проекта, уникальное имя для всех проектов Google Cloud (имя выше уже занято и не будет работать для вас, извините!). Позже в этой кодовой лаборатории он будет упоминаться как PROJECT_ID .

  1. Затем вам нужно включить выставление счетов в Cloud Console, чтобы использовать ресурсы Google Cloud.

Выполнение этой лаборатории кода не должно стоить вам больше нескольких долларов, но может быть больше, если вы решите использовать больше ресурсов или оставите их работающими.

Новые пользователи Google Cloud имеют право на бесплатную пробную версию за 300 долларов .

Облачная оболочка

Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой кодовой лаборатории вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud.

Активировать облачную оболочку

  1. В облачной консоли нажмите « Активировать Cloud Shell ». .

Если вы никогда раньше не запускали Cloud Shell, вам будет представлен промежуточный экран (ниже сгиба), описывающий, что это такое. Если это так, нажмите « Продолжить » (и вы больше никогда его не увидите). Вот как выглядит этот одноразовый экран:

Подготовка и подключение к Cloud Shell займет всего несколько минут.

Эта виртуальная машина загружена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог размером 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Многое, если не все, из вашей работы в этой кодовой лаборатории можно выполнить просто с помощью браузера или вашего Chromebook.

После подключения к Cloud Shell вы должны увидеть, что вы уже прошли аутентификацию и что для проекта уже задан идентификатор вашего проекта.

  1. Выполните следующую команду в Cloud Shell, чтобы подтвердить, что вы прошли аутентификацию:
gcloud auth list

Вывод команды

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

Вывод команды

[core]
project = <PROJECT_ID>

Если это не так, вы можете установить его с помощью этой команды:

gcloud config set project <PROJECT_ID>

Вывод команды

Updated property [core/project].
  1. Создайте новое приложение Spring Boot с помощью Spring Initializr.
$ curl https://start.spring.io/starter.tgz \
    -d language=kotlin \
    -d dependencies=web \
    -d baseDir=kotlin-jib-cloud-run | tar -xzvf -

Обратите внимание, что Initializr автоматически добавит spring-boot-starter-web к вашим зависимостям в pom.xml приложения-шаблона.

  1. Перейдите в каталог приложения-шаблона.
$ cd kotlin-jib-cloud-run
  1. Создайте и запустите приложение с помощью Maven.
$ ./mvnw -DskipTests spring-boot:run
  1. После запуска приложение начнет прослушивать порт 8080. Нажмите « Веб-просмотр ». на панели инструментов Cloud Shell и выберите Предварительный просмотр на порту 8080 , чтобы получить доступ к приложению.

  1. Вы должны получить ответ 404, потому что приложение еще не делает ничего полезного. Остановите приложение с помощью Control+C .
  1. Создайте следующий класс Controller в демонстрационном пакете:
$ vi src/main/kotlin/com/example/demo/Controller.kt
    or
$ nano src/main/kotlin/com/example/demo/Controller.kt

src/main/kotlin/com/example/demo/Controller.kt

package com.example.demo

import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RestController

@RestController
class Controller {
  
  @GetMapping("/")
  fun saySomething(): String {
    return "Kotlin app on Cloud Run, containerized by Jib!"
  }
}
  1. Пересоберите и запустите приложение.
$ ./mvnw spring-boot:run
  1. Проверьте приложение еще раз, используя Web Preview . На этот раз вы должны увидеть сообщение « Kotlin app on Cloud Run, containerized by Jib! ». Остановите приложение с помощью Control+C .

С Jib вы можете оптимизировать свое приложение в контейнере без Docker и опубликовать его в любом реестре контейнеров.

  1. Прежде чем продолжить, вам необходимо активировать Container Registry API. Это нужно сделать только один раз для каждого проекта, чтобы сделать API доступным.
$ gcloud services enable containerregistry.googleapis.com
  1. Запустите Jib, чтобы создать образ Docker и опубликовать его в Container Registry.
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:1.8.0:build \
    -Dimage=gcr.io/$GOOGLE_CLOUD_PROJECT/kotlin-jib-cloud-run

В конце концов вы увидите следующее сообщение о том, что приложение помещено в контейнер и помещено в ваш реестр контейнеров.

[INFO] Built and pushed image as gcr.io/PROJECT_ID/kotlin-jib-cloud-run
...
[INFO] BUILD SUCCESS

Если вы видите ошибку, еще раз проверьте, правильно ли $GOOGLE_CLOUD_PROJECT задан для вашего идентификатора проекта Google Cloud ( PROJECT_ID ).

  1. Прежде чем двигаться дальше, проверьте, успешно ли опубликовано изображение. Вернитесь в Cloud Console , нажмите меню навигации . и выберите Реестр контейнеров .

Вы увидите, что ваше изображение успешно опубликовано.

Cloud Run обеспечивает бессерверную работу с контейнерами, автоматически масштабируя ваши контейнеры без сохранения состояния.

  1. Нажмите Меню навигации снова и выберите Cloud Run .

Если вы впервые подключаетесь к Cloud Run, вы увидите следующее диалоговое окно для однократной настройки. Нажмите «Начать использовать Cloud Run» , если он появится.

  1. На странице Cloud Run нажмите Create Service .

  1. На следующем экране нажмите « Выбрать » в разделе « Источник ». Источник — это образ, который вы хотите запустить в Cloud Run.

  1. В диалоговом окне будет показано изображение, которое вы создали ранее. Выберите изображение и нажмите « Продолжить» .

  1. Теперь вы всего в паре кликов от развертывания приложения. В разделе Платформа развертывания выберите Cloud Run (полностью управляемый) , чтобы полностью управлять службой в Google Cloud. Выберите регион, соответствующий вашему местоположению, установите флажок Разрешить неаутентифицированные вызовы и нажмите Создать . Вот и все!

Когда образ будет полностью развернут, на странице Cloud Run будет отображаться URL-адрес для доступа к приложению. Проверьте это!

В конце вы увидите сообщение, которое вы ожидаете от приложения.

Kotlin app on Cloud Run, containerized by Jib!

Вот и все! В будущем, если вам потребуется развернуть новые версии приложения, вы можете сделать это, щелкнув Развернуть новую версию на странице.

  1. Чтобы очистить вашу среду, вам нужно удалить развернутое приложение в Cloud Run и опубликованный образ в Container Registry. Перейдите в Cloud Run , выберите приложение и нажмите « Удалить ».

  1. Аналогичным образом перейдите на страницу Container Registry и удалите образ.

Поздравляем! Вы успешно поместили свое приложение Spring Boot Kotlin в контейнер и развернули его в Cloud Run!

Используя Jib, вы создали оптимизированный образ контейнера без установки Docker или записи Dockerfile и опубликовали его в Container Registry. Jib оптимизирует создание образов, поэтому любой человек, не обладающий глубокими знаниями Docker, может быстро и эффективно контейнеризовать Java-приложения. Затем несколькими щелчками мыши вы развернули приложение в Cloud Run, чтобы начать обслуживание в кратчайшие сроки.

Учить больше