1. Прежде чем начать
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.
- Опубликуйте образ в реестре контейнеров.
- Запустите контейнерное приложение в Cloud Run.
Что вам понадобится
- Проект Google Cloud
- Браузер, например Google Chrome
2. Приступаем к настройке
Самостоятельная настройка среды
- Войдите в Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .
Запомните идентификатор проекта — уникальное имя для всех проектов Google Cloud (имя, указанное выше, уже занято и не подойдет вам, извините!). Позже в этой лаборатории он будет называться PROJECT_ID
.
- Далее вам необходимо включить биллинг в Cloud Console, чтобы использовать ресурсы Google Cloud.
Прохождение этой лаборатории кода не должно стоить много, если вообще стоит. Обязательно следуйте всем инструкциям в разделе «Очистка», в которых рассказывается, как отключить ресурсы, чтобы вам не приходилось нести расходы, выходящие за рамки этого руководства. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
Облачная оболочка
Хотя Google Cloud можно управлять удаленно с вашего ноутбука, в этой лаборатории вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud.
Активировать Cloud Shell
- В Cloud Console нажмите «Активировать 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`
- Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте:
gcloud config list project
Вывод команды
[core] project = <PROJECT_ID>
Если это не так, вы можете установить его с помощью этой команды:
gcloud config set project <PROJECT_ID>
Вывод команды
Updated property [core/project].
3. Инициализируйте приложение Spring Boot.
- Создайте новое приложение 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
.
4. Добавьте веб-контроллер
- Создайте следующий класс
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
.
5. Поместите свое приложение в контейнер и опубликуйте его в реестре контейнеров.
С помощью Jib вы можете оптимизировать свое приложение без Docker и опубликовать его в любом реестре контейнеров.
- Прежде чем продолжить, вам необходимо активировать API реестра контейнеров. Это нужно сделать только один раз для каждого проекта, чтобы сделать API доступным.
$ gcloud services enable containerregistry.googleapis.com
- Запустите Jib, чтобы создать образ Docker и опубликовать его в реестре контейнеров.
$ ./mvnw com.google.cloud.tools:jib-maven-plugin:3.1.1: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
).
- Прежде чем двигаться дальше, проверьте, успешно ли опубликовано изображение. Вернитесь в облачную консоль и нажмите меню навигации. и выберите Реестр контейнеров .
Вы увидите, что ваше изображение успешно опубликовано.
6. Запустите контейнерное приложение в Cloud Run.
Cloud Run переносит бессерверные возможности в контейнеры, автоматически масштабируя контейнеры без сохранения состояния.
- Нажмите Меню навигации. еще раз и выберите Cloud Run .
Если вы впервые получаете доступ к Cloud Run, вы увидите следующее диалоговое окно для однократной настройки. Нажмите «Начать использовать Cloud Run», если он появится.
- На странице Cloud Run нажмите «Создать сервис» .
- На следующем экране нажмите «Выбрать» в разделе «Источник» . Источником является изображение, которое вы хотите запустить в Cloud Run.
- В диалоговом окне отобразится изображение, которое вы создали ранее. Выберите изображение и нажмите « Продолжить» .
- Теперь вы всего в паре кликов от развертывания приложения. В разделе «Платформа развертывания» выберите «Cloud Run (полностью управляемый)», чтобы полностью управлять службой в Google Cloud. Выберите регион, соответствующий вашему местоположению, выберите «Разрешить неаутентифицированные вызовы» и нажмите «Создать» . Вот и все!
Когда образ будет полностью развернут, на странице Cloud Run отобразится URL-адрес для доступа к приложению. Проверьте это!
В конце вы увидите сообщение, которое ожидаете от приложения.
Kotlin app on Cloud Run, containerized by Jib!
Вот и все! В будущем, если вам понадобится развернуть новые версии приложения, вы можете сделать это, нажав «Развернуть новую версию» на странице.
7. Очистка
- Чтобы очистить среду, вам необходимо удалить развернутое приложение в Cloud Run и опубликованный образ в реестре контейнеров. Перейдите в Cloud Run , выберите приложение и нажмите «Удалить» .
- Аналогично перейдите на страницу реестра контейнеров и удалите образ.
8. Поздравления
Поздравляем! Вы успешно контейнеризировали свое приложение Spring Boot Kotlin и развернули его в Cloud Run!
Используя Jib, вы создали оптимизированный образ контейнера без установки Docker или написания файла Dockerfile и опубликовали его в реестре контейнеров. Jib оптимизирует построение образов, поэтому любой человек, не обладающий глубокими знаниями Docker, может быстро и эффективно контейнеризировать приложения Java. Затем с помощью нескольких щелчков мышью вы развернули приложение в Cloud Run и сразу начали обслуживать его.
Узнать больше
- Развертывание приложения Java в Kubernetes в Google Kubernetes Engine
- Документация Cloud Run
- Обзор облачного запуска
- Представляем Jib — лучше создавайте образы Java Docker
- Создавайте контейнеры быстрее с помощью Jib, инструмента Google для создания образов для приложений Java.
- Jib — поместите свое Java-приложение в контейнер
- Канал Джиба Гиттера
- Список рассылки пользователей Jib