Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Заметка
Для приложений Spring Boot используйте Контейнеры приложений Azure. Однако вы по-прежнему можете использовать Служба Azure Kubernetes в качестве назначения. Дополнительные сведения см. в статье Выбор нужных служб Azure для приложений Java.
В этом руководстве показано, как использовать Kubernetes и Docker для разработки и развертывания приложения Spring Boot в Microsoft Azure. В частности, вы используете Spring Boot для разработки приложений, Kubernetes для развертывания контейнеров и службы Azure Kubernetes (AKS) для размещения приложения.
Kubernetes и Docker — это решения с открытым кодом, которые помогают разработчикам автоматизировать развертывание, масштабирование и управление приложениями, работающими в контейнерах.
Необходимые условия
- Подписка Azure; если у вас еще нет Azure подписки, активируйте преимущества подписчика MSDN или зарегистрируйте бесплатную учетную запись Azure.
- Интерфейс Azure Command-Line командной строки (CLI).
- Поддерживаемый пакет средств разработки Java (JDK). Дополнительные сведения об JDK, доступных для разработки в Azure, см. в поддержке Java в Azure и Azure Stack.
- Средство сборки Apache Maven (версия 3).
- Клиент
Git. - Клиент Docker.
- Вспомогательная программа учетных данных Docker
ACR.
Заметка
В связи с требованиями виртуализации этого руководства вы не можете выполнить действия, описанные в этой статье, на виртуальной машине. Необходимо использовать физический компьютер с включенными функциями виртуализации.
Создайте веб-приложение Spring Boot "Начало работы на Docker".
Ниже приведены инструкции по созданию веб-приложения Spring Boot и его локальному тестированию.
Откройте командную строку и создайте локальный каталог для хранения приложения и перейдите в этот каталог; например:
mkdir C:\SpringBoot cd C:\SpringBoot--или--
mkdir /users/$USER/SpringBoot cd /users/$USER/SpringBootКлонируйте примерный проект Spring Boot на Docker: Getting Started в каталог.
git clone https://github.com/spring-guides/gs-spring-boot-docker.gitПерейдите в каталог завершенного проекта.
cd gs-spring-boot-docker cd completeИспользуйте Maven для создания и запуска примера приложения.
mvn package spring-boot:runПроверьте веб-приложение, перейдя в
http://localhost:8080или выполнив следующую командуcurl:curl http://localhost:8080Отображается следующее сообщение: Hello Docker World
Создание реестра контейнеров Azure с помощью Azure CLI
Откройте командную строку.
Вход в учетную запись Azure:
az loginВыберите подписку Azure:
az account set -s <YourSubscriptionID>Создайте группу ресурсов для ресурсов Azure, используемых в этом руководстве.
az group create --name=wingtiptoys-kubernetes --location=eastusСоздайте частный реестр контейнеров Azure в группе ресурсов. В этом руководстве приводится отправка примера приложения в качестве образа Docker в этот реестр на последующих шагах. Замените
wingtiptoysregistryуникальным именем реестра.az acr create --resource-group wingtiptoys-kubernetes --location eastus \ --name wingtiptoysregistry --sku Basic
Отправка приложения в реестр контейнеров с помощью Jib
Войдите в Реестр контейнеров Azure из Azure CLI.
# set the default name for Azure Container Registry, otherwise you need to specify the name in "az acr login" az config set defaults.acr=wingtiptoysregistry az acr loginОткройте файл pom.xml с текстовым редактором, например Visual Studio Code.
code pom.xmlОбновите коллекцию
<properties>в файле pom.xml с именем вашего реестра контейнеров Azure и последней версиейjib-maven-plugin.<properties> <!-- Note: If your ACR name contains upper case characters, be sure to convert them to lower case characters. --> <docker.image.prefix>wingtiptoysregistry.azurecr.io</docker.image.prefix> <jib-maven-plugin.version>2.5.2</jib-maven-plugin.version> <java.version>1.8</java.version> </properties>Обновите коллекцию
<plugins>в файле pom.xml, чтобы элемент<plugin>содержал запись дляjib-maven-plugin, как показано в следующем примере. Используйте базовый образ из реестра контейнеров Microsoft (MCR):mcr.microsoft.com/openjdk/jdk:11-ubuntuкоторый содержит официально поддерживаемый JDK для Azure. Сведения о других базовых образах MCR с официально поддерживаемыми JDK см. в разделе «Установка Microsoft Build of OpenJDK».<plugin> <artifactId>jib-maven-plugin</artifactId> <groupId>com.google.cloud.tools</groupId> <version>${jib-maven-plugin.version}</version> <configuration> <from> <image>mcr.microsoft.com/openjdk/jdk:11-ubuntu</image> </from> <to> <image>${docker.image.prefix}/gs-spring-boot-docker</image> </to> </configuration> </plugin>Перейдите в полный каталог проекта для приложения Spring Boot и выполните следующую команду, чтобы создать образ и отправить образ в реестр:
az acr login && mvn compile jib:build
Заметка
По соображениям безопасности учетные данные, созданные с помощью az acr login, действительны в течение одного часа. Если вы видите ошибку 401 Unauthorizedaz acr login --name <your registry name> , запустите команду еще раз, чтобы повторно выполнить проверку подлинности. Если вы видите ошибку Read timed out, попробуйте увеличить тайм-ауты с помощью mvn -Djib.httpTimeout=7200000 jib:dockerBuild или используйте -Djib.httpTimeout=0 для бесконечного тайм-аута.
Создание кластера Kubernetes в AKS с помощью Azure CLI
Создайте кластер Kubernetes в службе Azure Kubernetes. Следующая команда создает кластер Kubernetes в группе ресурсов
wingtiptoys-kubernetesс именемwingtiptoys-akscluster, с подключенным реестром Реестр контейнеров Azure (ACR)wingtiptoysregistryи с префиксом DNSwingtiptoys-kubernetes:az aks create --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster \ --attach-acr wingtiptoysregistry \ --dns-name-prefix=wingtiptoys-kubernetes --generate-ssh-keysВыполнение этой команды может занять некоторое время.
Установите
kubectlс помощью Azure CLI. Пользователям Linux может потребоваться добавитьsudoперед этой командой, поскольку она устанавливает интерфейс командной строки Kubernetes в/usr/local/bin.az aks install-cliСкачайте сведения о конфигурации кластера, чтобы управлять кластером из веб-интерфейса Kubernetes и
kubectl.az aks get-credentials --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster
Разверните образ в вашем кластере Kubernetes
В этом руководстве приложение разворачивается с помощью kubectl, после чего можно изучить развертывание через веб-интерфейс Kubernetes.
Развертывание с помощью kubectl
Откройте командную строку.
Запустите контейнер в кластере Kubernetes с помощью команды
kubectl run. Укажите имя сервиса для приложения в Kubernetes и полное имя образа. Например:kubectl run gs-spring-boot-docker --image=wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latestВ этой команде:
Вы указываете имя
gs-spring-boot-dockerконтейнера сразу послеrunкоманды.Параметр
--imageзадает объединенное имя сервера входа и имя образа какwingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest.
Откройте кластер Kubernetes для внешнего доступа с помощью команды
kubectl expose. Укажите имя службы, общедоступный TCP-порт, используемый для доступа к приложению, и внутренний целевой порт, на котором приложение прослушивает. Например:kubectl expose pod gs-spring-boot-docker --type=LoadBalancer --port=80 --target-port=8080В этой команде:
Вы указываете имя
gs-spring-boot-dockerконтейнера сразу послеexpose podкоманды.Параметр
--typeуказывает, что кластер использует подсистему балансировки нагрузки.Параметр
--portуказывает общедоступный TCP-порт 80. Вы получаете доступ к приложению на этом порту.Параметр
--target-portуказывает внутренний TCP-порт 8080. Подсистема балансировки нагрузки перенаправит запросы в приложение на этом порту.
После развертывания приложения в кластере запросите внешний IP-адрес и откройте его в веб-браузере:
kubectl get services -o=jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}'
Развертывание с помощью представления ресурсов Kubernetes
Выберите Добавить из любого представления ресурсов (пространство имен, рабочие нагрузки, службы и входящий трафик, хранилище или конфигурация).
Вставьте следующий YAML:
apiVersion: apps/v1 kind: Deployment metadata: name: gs-spring-boot-docker spec: replicas: 1 selector: matchLabels: app: gs-spring-boot-docker template: metadata: labels: app: gs-spring-boot-docker spec: containers: - name: gs-spring-boot-docker image: wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latestВыберите Добавить в нижней части редактора YAML, чтобы развернуть приложение.
После развертывания
Deployment, как и на предыдущем шаге, нажмите кнопку "Добавить " в нижней части редактора YAML, чтобы развернутьServiceс помощью следующего YAML:apiVersion: v1 kind: Service metadata: name: gs-spring-boot-docker spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: gs-spring-boot-dockerПосле добавления ФАЙЛА YAML средство просмотра ресурсов отображает приложение Spring Boot. Внешняя служба включает связанный внешний IP-адрес, чтобы можно было легко просматривать приложение в браузере.
Выберите Внешний IP. Вы видите, что ваше приложение Spring Boot запущено в Azure.
Дальнейшие действия
Чтобы узнать больше о Spring и Azure, перейдите в центр документации Spring в Azure.
См. также
Дополнительные сведения об использовании Spring Boot в Azure см. в следующей статье:
Дополнительные сведения об использовании Azure с Java см. в разделах Azure для разработчиков Java и "Работа с Azure DevOps и Java".
Дополнительные сведения о развертывании приложения Java в Kubernetes с помощью Visual Studio Code смотрите в руководствах по Java для Visual Studio Code.
Дополнительные сведения о примере проекта Spring Boot в Docker см. в разделе Spring Boot в Docker Getting Started.
Дополнительные сведения о создании приложений Spring Boot см. по следующим ссылкам:
- Дополнительные сведения о создании простого приложения Spring Boot см. на сайте Spring Initializr по ссылке https://start.spring.io/.
Следующие ссылки содержат дополнительные сведения об использовании Kubernetes с Azure:
Дополнительные сведения об использовании интерфейса командной строки Kubernetes см. в руководстве https://kubernetes.io/docs/reference/kubectl/пользователя kubectl.
Веб-сайт Kubernetes содержит несколько статей, которые обсуждают использование изображений в частных реестрах:
Дополнительные примеры использования пользовательских образов Docker с Azure см. в статье "Использование пользовательского образа Docker для Azure веб-приложения в Linux".
Дополнительные сведения о итеративном запуске и отладке контейнеров непосредственно в Azure Kubernetes Service (AKS) с помощью Azure Dev Spaces см. в статье "Начало работы с Azure Dev Spaces с помощью Java".