Google предоставляет мощный инструмент для сборки образов , с помощью которого вы можете легко и быстро собрать и опубликовать оптимизированный образ контейнера Docker для Java-приложений без Docker или Dockerfile. Google Cloud также обеспечивает бессерверную архитектуру контейнеров с помощью Cloud Run — платформы управляемых вычислений, которая автоматически масштабирует ваши контейнеры без состояния. В этой лабораторной работе вы увидите, как легко контейнеризировать приложение Spring Boot Kotlin, опубликовать его в реестре контейнеров и запустить образ в Google Cloud без каких-либо проблем!
В этой лабораторной работе вы научитесь настраивать простое приложение на языке Kotlin, демонстрируя использование сервисов и инструментов Google Cloud, включая Jib , Container Registry и Cloud Run .
Предпосылки
- Знакомство с языком программирования Java и инструментами
- Знание стандартных текстовых редакторов Linux, таких как Vim, Emacs и nano
Что ты будешь делать?
- Настройте приложение Spring Boot Kotlin.
- Создайте оптимизированный образ Docker.
- Опубликуйте изображение в Container Registry.
- Запустите контейнерное приложение в Cloud Run.
Что вам понадобится
- Проект Google Cloud
- Браузер, например Google Chrome
Настройка среды для самостоятельного обучения
- Войдите в Cloud Console и создайте новый проект или используйте существующий. (Если у вас ещё нет учётной записи Gmail или G Suite, вам необходимо её создать .)
Запомните идентификатор проекта — уникальное имя для всех проектов Google Cloud (имя, указанное выше, уже занято и не будет вам работать, извините!). Далее в этой практической работе он будет обозначаться как PROJECT_ID
.
- Далее вам необходимо включить биллинг в Cloud Console, чтобы использовать ресурсы Google Cloud.
Выполнение этой лабораторной работы не должно обойтись вам дороже нескольких долларов, но может обойтись дороже, если вы решите использовать больше ресурсов или оставите их запущенными.
Новые пользователи Google Cloud имеют право на бесплатную пробную версию стоимостью 300 долларов США .
Cloud Shell
Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лабораторной работе вы будете использовать Cloud Shell — среду командной строки, работающую в Google Cloud.
Активировать Cloud Shell
- В консоли Cloud нажмите «Активировать Cloud Shell» .
.
Если вы никогда раньше не запускали Cloud Shell, вам будет показан промежуточный экран (под сгибом) с описанием его функций. В этом случае нажмите «Продолжить» (и вы больше никогда его не увидите). Вот как выглядит этот одноразовый экран:
Подготовка и подключение к Cloud Shell займет всего несколько минут.
Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог объёмом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Значительную часть работы в этой лабораторной работе, если не всю, можно выполнить, просто используя браузер или Chromebook.
После подключения к Cloud Shell вы увидите, что вы уже аутентифицированы и что проекту уже присвоен ваш идентификатор проекта.
- Выполните следующую команду в 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].
- Создайте новое приложение 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
шаблона приложения.
- Перейдите в каталог шаблона приложения.
$ cd kotlin-jib-cloud-run
- Создайте и запустите приложение с помощью Maven.
$ ./mvnw -DskipTests spring-boot:run
- После запуска приложение начнет прослушивать порт 8080. Нажмите «Веб-просмотр».
на панели инструментов Cloud Shell выберите Предварительный просмотр на порту 8080 для доступа к приложению.
- Вы должны получить ответ 404, поскольку приложение пока не выполняет никаких полезных действий. Остановите приложение, нажав
Control+C
.
- Создайте следующий класс
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!"
}
}
- Пересоберите и запустите приложение.
$ ./mvnw spring-boot:run
- Проверьте приложение еще раз с помощью веб-превью.
На этот раз вы должны увидеть сообщение: «
Kotlin app on Cloud Run, containerized by Jib!
». Остановите приложение, нажавControl+C
.
С помощью Jib вы можете контейнеризировать свое приложение оптимизированным способом без Docker и публиковать его в любом реестре контейнеров.
- Прежде чем продолжить, необходимо активировать API реестра контейнеров. Это необходимо сделать один раз для каждого проекта, чтобы API стал доступен.
$ gcloud services enable containerregistry.googleapis.com
- Запустите Jib для создания образа Docker и публикации его в реестре контейнеров.
$ ./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
).
- Прежде чем продолжить, проверьте, успешно ли опубликовано изображение. Вернитесь в Cloud Console и нажмите «Навигация».
и выберите Реестр контейнеров .
Вы увидите, что ваше изображение успешно опубликовано.
Cloud Run обеспечивает бессерверность контейнеров, автоматически масштабируя ваши контейнеры без сохранения состояния.
- Нажмите «Меню навигации»
еще раз и выберите Cloud Run .
Если вы впервые используете Cloud Run, вы увидите следующее диалоговое окно для однократной настройки. Если оно появится, нажмите «Начать использование Cloud Run» .
- На странице Cloud Run нажмите кнопку Create Service .
- На следующем экране нажмите «Выбрать» в разделе «Источник» . Источник — это образ, который вы хотите запустить в Cloud Run.
- В диалоговом окне отобразится ранее созданное вами изображение. Выберите изображение и нажмите «Продолжить» .
- Всего пара кликов отделяет вас от развертывания приложения. В разделе «Платформа развертывания» выберите «Cloud Run (полностью управляемый)» , чтобы полностью управлять сервисом в Google Cloud. Выберите регион, соответствующий вашему местоположению, выберите «Разрешить вызовы без аутентификации» и нажмите «Создать» . Готово!
После полного развёртывания образа на странице Cloud Run появится URL-адрес для доступа к приложению. Посмотрите!
В конце вы увидите ожидаемое сообщение от приложения.
Kotlin app on Cloud Run, containerized by Jib!
Вот и всё! В будущем, если вам потребуется развернуть новые версии приложения, вы сможете сделать это, нажав кнопку «Развернуть новую версию» на странице.
- Чтобы очистить среду, необходимо удалить развёрнутое приложение в Cloud Run и опубликованный образ в Container Registry. Перейдите в Cloud Run , выберите приложение и нажмите «Удалить» .
- Аналогичным образом перейдите на страницу реестра контейнеров и удалите образ.
Поздравляем! Вы успешно контейнеризировали своё приложение Spring Boot Kotlin и развернули его в Cloud Run!
Используя Jib, вы создали оптимизированный образ контейнера без установки Docker и написания Dockerfile и опубликовали его в реестре контейнеров. Jib оптимизирует создание образа, поэтому любой, кто не обладает глубокими знаниями Docker, может быстро и эффективно контейнеризировать приложения Java. Затем, всего за несколько щелчков мыши, вы развернули приложение в Cloud Run, чтобы оно сразу же начало работать.
Узнать больше
- Развертывание приложения Java в Kubernetes на базе Google Kubernetes Engine
- Документация Cloud Run
- Обзор Cloud Run
- Представляем Jib — улучшенное создание образов Java Docker
- Создавайте контейнеры быстрее с помощью Jib — инструмента сборки образов Google для приложений Java
- Jib — контейнеризация вашего Java-приложения
- Канал Jib Gitter
- Список рассылки пользователей Jib