Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Заметка
Для приложений 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, как показано в следующем примере. Обратите внимание, что мы используем базовый образ из реестра контейнеров Майкрософт (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
Заметка
Из-за проблем безопасности Azure Cli и Реестра контейнеров Azure учетные данные, созданные az acr login, действительны в течение 1 часа. Если вы видите ошибку 401 Unauthorized, выполните команду az 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в качестве имени кластера с присоединенным реестром контейнеров Azurewingtiptoysregistry(ACR) иwingtiptoys-kubernetesв качестве префикса DNS: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 см. в руководстве пользователя kubectl на https://kubernetes.io/docs/reference/kubectl/.
Веб-сайт Kubernetes содержит несколько статей, которые обсуждают использование изображений в частных реестрах:
Дополнительные примеры использования пользовательских образов Docker с Azure см. в статье Использование пользовательского образа Docker для веб-приложения Azure в Linux.
Дополнительные сведения о итеративном запуске и отладке контейнеров непосредственно в службе Azure Kubernetes (AKS) с помощью Azure Dev Spaces см. в статье Начало работы с Azure Dev Spaces с помощью Java