Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
Para aplicações Spring Boot, use Azure Container Apps. No entanto, você ainda pode usar o Serviço Kubernetes do Azure como destino. Para obter mais informações, consulte Escolher os serviços do Azure certos para seus aplicativos Java.
Este tutorial mostra-lhe como usar Kubernetes e Docker para desenvolver e implementar uma aplicação Spring Boot para Microsoft Azure. Mais especificamente, você usa Spring Boot para desenvolvimento de aplicativos, Kubernetes para implantação de contêiner e do Serviço Kubernetes do Azure (AKS) para hospedar seu aplicativo.
Kubernetes e Docker são soluções de código aberto que ajudam os desenvolvedores a automatizar a implantação, o dimensionamento e o gerenciamento de seus aplicativos executados em contêineres.
Pré-requisitos
- Uma subscrição do Azure; se ainda não tiver uma subscrição do Azure, ative os benefícios do assinante MSDN ou inscreva-se numa conta gratuita no Azure.
- O Azure Command-Line Interface (CLI).
- Um Java Development Kit (JDK) suportado. Para obter mais informações sobre os JDKs disponíveis para uso ao desenvolver no Azure, consulte suporte Java no Azure e Azure Stack.
- A ferramenta de construção
Maven do Apache (Versão 3). - Cliente Git.
- Cliente Docker .
- O auxiliar de credenciais do Docker ACR .
Observação
Devido aos requisitos de virtualização deste tutorial, não pode seguir os passos deste artigo numa máquina virtual. Deve usar um computador físico com funcionalidades de virtualização ativadas.
Criar o aplicativo Web Spring Boot no Docker Getting Started
As etapas a seguir o orientam na criação de um aplicativo Web Spring Boot e no teste local.
Abra um prompt de comandos e crie um diretório local para armazenar a sua aplicação, e mude para esse diretório; por exemplo:
mkdir C:\SpringBoot cd C:\SpringBoot-- ou --
mkdir /users/$USER/SpringBoot cd /users/$USER/SpringBootClone o Spring Boot no Docker Getting Started projeto de exemplo no diretório.
git clone https://github.com/spring-guides/gs-spring-boot-docker.gitAltere o diretório para o projeto concluído.
cd gs-spring-boot-docker cd completeUse o Maven para criar e executar o aplicativo de exemplo.
mvn package spring-boot:runTeste o aplicativo Web navegando até
http://localhost:8080ou com o seguinte comandocurl:curl http://localhost:8080Vê a seguinte mensagem exibida: Olá Docker World
Criar um Registro de Contêiner do Azure usando a CLI do Azure
Abra um prompt de comando.
Inicie sessão na sua conta do Azure:
az loginSelecione a sua subscrição Azure:
az account set -s <YourSubscriptionID>Crie um grupo de recursos para os recursos do Azure usados neste tutorial.
az group create --name=wingtiptoys-kubernetes --location=eastusCrie um registro de contêiner privado do Azure no grupo de recursos. O tutorial envia o aplicativo de exemplo como uma imagem do Docker para este registro em etapas posteriores. Substitua
wingtiptoysregistrypor um nome exclusivo para o seu registo.az acr create --resource-group wingtiptoys-kubernetes --location eastus \ --name wingtiptoysregistry --sku Basic
Envie seu aplicativo para o registro de contêiner via Jib
Inicie sessão no seu Azure Container Registry a partir do CLI do Azure.
# 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 loginAbra o ficheiropom.xml com um editor de texto, como Visual Studio Code.
code pom.xmlAtualize a configuração
<properties>no ficheiro pom.xml com o nome do registo do seu Azure Container Registry e a versão mais recente dejib-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>Atualize a coleção
<plugins>no arquivo pom.xml para que o elemento<plugin>contenha uma entrada para ojib-maven-plugin, conforme mostrado no exemplo a seguir. Use uma imagem base do Microsoft Container Registry (MCR):mcr.microsoft.com/openjdk/jdk:11-ubuntu, que contém um JDK oficialmente suportado para Azure. Para outras imagens de base MCR com JDKs oficialmente suportados, consulte Instalar o Microsoft Build do 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>Vá ao diretório do projeto concluído da sua aplicação Spring Boot e execute o seguinte comando para construir a imagem e enviá-la para o registo:
az acr login && mvn compile jib:build
Observação
Por razões de segurança, a credencial que cria ao usar az acr login é válida por uma hora. Se detetar um 401 Unauthorized erro, execute novamente o az acr login --name <your registry name> comando para voltar a autenticar. Se vires um Read timed out erro, tenta aumentar os tempos mortos com mvn -Djib.httpTimeout=7200000 jib:dockerBuild, ou usa -Djib.httpTimeout=0 para um tempo final infinito.
Crie um cluster Kubernetes no AKS usando a CLI do Azure
Crie um cluster Kubernetes no Serviço Kubernetes do Azure. O comando seguinte cria um cluster Kubernetes no
wingtiptoys-kubernetesgrupo de recursos, comwingtiptoys-aksclustercomo nome do cluster, com Azure Container Registry (ACR)wingtiptoysregistryanexado, ewingtiptoys-kubernetescomo prefixo DNS:az aks create --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster \ --attach-acr wingtiptoysregistry \ --dns-name-prefix=wingtiptoys-kubernetes --generate-ssh-keysEsse comando pode demorar um pouco para ser concluído.
Instale
kubectlusando a CLI do Azure. Os utilizadores Linux podem precisar de prefixar este comando comsudo, pois implementa a CLI Kubernetes para/usr/local/bin.az aks install-cliBaixe as informações de configuração do cluster para que você possa gerenciar seu cluster a partir da interface da Web do Kubernetes e
kubectl.az aks get-credentials --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster
Implantar a imagem no cluster do Kubernetes
Este tutorial implementa a aplicação usando kubectl, e depois pode explorar a implementação através da interface web do Kubernetes.
Implantar com kubectl
Abra um prompt de comando.
Execute seu contêiner no cluster do Kubernetes usando o comando
kubectl run. Dê um nome de serviço para seu aplicativo no Kubernetes e o nome completo da imagem. Por exemplo:kubectl run gs-spring-boot-docker --image=wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latestNeste comando:
Especifica o nome
gs-spring-boot-dockerdo contentor imediatamente após oruncomando.O
--imageparâmetro especifica o nome combinado do servidor de login e da imagem comowingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest.
Exponha seu cluster Kubernetes externamente usando o comando
kubectl expose. Especifique o nome do serviço, a porta TCP voltada para o público usada para acessar o aplicativo e a porta de destino interna na qual seu aplicativo escuta. Por exemplo:kubectl expose pod gs-spring-boot-docker --type=LoadBalancer --port=80 --target-port=8080Neste comando:
Especifica o nome
gs-spring-boot-dockerdo contentor imediatamente após oexpose podcomando.O parâmetro
--typeespecifica que o cluster usa o balanceador de carga.O parâmetro
--portespecifica a porta TCP voltada para o público de 80. Você acessa o aplicativo nesta porta.O parâmetro
--target-portespecifica a porta TCP interna de 8080. O balanceador de carga encaminha solicitações para seu aplicativo nessa porta.
Depois de implantar a aplicação no cluster, consulte o endereço IP externo e abra-o no seu navegador web:
kubectl get services -o=jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}'
Implantar através da visualização de recursos do Kubernetes
Selecione Adicionar em qualquer uma das exibições de recursos (Namespace, Cargas de trabalho, Serviços e ingressos, Armazenamento ou Configuração).
Cole no YAML seguinte.
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:latestSelecione Adicionar na parte inferior do editor YAML para implantar o aplicativo.
Após implementar o
Deployment, tal como no passo anterior, selecione Adicionar na parte inferior do editor YAML para implementarServiceusando o seguinte YAML:apiVersion: v1 kind: Service metadata: name: gs-spring-boot-docker spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: gs-spring-boot-dockerDepois de adicionares o ficheiro YAML, o visualizador de recursos mostra a tua aplicação Spring Boot. O serviço externo inclui um endereço IP externo vinculado para que você possa visualizar facilmente o aplicativo em seu navegador.
Selecione IP externo. Vês a tua aplicação Spring Boot a correr no Azure.
Próximos passos
Para saber mais sobre o Spring e o Azure, continue para o centro de documentação do Spring on Azure.
Ver também
Para obter mais informações sobre como usar o Spring Boot no Azure, consulte o seguinte artigo:
Para obter mais informações sobre como usar o Azure com Java, consulte o Azure for Java Developers e o Trabalhando com o Azure DevOps e o Java.
Para obter mais informações sobre como implantar um aplicativo Java no Kubernetes com o Visual Studio Code, consulte Visual Studio Code Java Tutorials.
Para obter mais informações sobre o projeto de exemplo Spring Boot no Docker, consulte Spring Boot on Docker Getting Started.
Os seguintes links fornecem mais informações sobre como criar aplicações Spring Boot:
- Para obter mais informações sobre como criar um aplicativo Spring Boot simples, consulte o Spring Initializr em https://start.spring.io/.
Os links seguintes fornecem mais informações sobre a utilização do Kubernetes com o Azure:
Para mais informações sobre a utilização da interface de linha de comandos do Kubernetes, consulte o guia do utilizador do kubectl em https://kubernetes.io/docs/reference/kubectl/.
O site Kubernetes tem vários artigos que discutem o uso de imagens em registros privados:
- Configurando contas de serviço para Pods
- Namespaces (Espaços de nomes)
- Extraindo uma imagem de um registro privado
Para mais exemplos de como usar imagens Docker personalizadas com Azure, consulte Usar uma imagem Docker personalizada para Azure Web App no Linux.
Para mais informações sobre como executar e depurar iterativamente contentores diretamente no Azure Kubernetes Service (AKS) com o Azure Dev Spaces, consulte Introdução ao Azure Dev Spaces com Java.