Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Notitie
Gebruik Azure Container Apps voor Spring Boot-toepassingen. U kunt Azure Kubernetes Service echter nog steeds als bestemming gebruiken. Zie De juiste Azure-services kiezen voor uw Java-toepassingenvoor meer informatie.
In deze zelfstudie leert u hoe u Kubernetes en Docker gebruikt om een Spring Boot-toepassing te ontwikkelen en te implementeren in Microsoft Azure. Meer specifiek gebruikt u Spring Boot- voor het ontwikkelen van toepassingen, Kubernetes- voor containerimplementatie en Azure Kubernetes Service (AKS) om uw toepassing te hosten.
Kubernetes en Docker- zijn opensource-oplossingen waarmee ontwikkelaars de implementatie, schaalaanpassing en het beheer van hun toepassingen in containers kunnen automatiseren.
Voorwaarden
- Een Azure-abonnement. Als u nog geen Azure-abonnement hebt, activeert u de voordelen van uw MSDN-abonnee of meldt u zich aan voor een gratis Azure account.
- De Azure Command-Line Interface (CLI).
- Een ondersteunde Java Development Kit (JDK). Zie Java-ondersteuning voor Azure en Azure Stackvoor meer informatie over de JDK's die beschikbaar zijn voor gebruik bij het ontwikkelen in Azure.
- Het hulpprogramma voor Maven build (versie 3) van Apache.
- Een Git-client.
- Een Docker-client.
- De ACR Docker-referentiebeheerprogramma.
Notitie
Vanwege de virtualisatievereisten van deze zelfstudie kunt u de stappen in dit artikel niet volgen op een virtuele machine. U moet een fysieke computer gebruiken waarvoor virtualisatiefuncties zijn ingeschakeld.
Creëer de Docker Spring Boot webapplicatie 'Aan de slag'
De volgende stappen helpen u bij het bouwen van een Spring Boot-webtoepassing en het lokaal testen ervan.
Open een opdrachtprompt en maak een lokale map om uw toepassing op te slaan en ga naar die map; bijvoorbeeld:
mkdir C:\SpringBoot cd C:\SpringBoot-- of --
mkdir /users/$USER/SpringBoot cd /users/$USER/SpringBootKloon het Spring Boot on Docker Getting Started voorbeeldproject in de directory.
git clone https://github.com/spring-guides/gs-spring-boot-docker.gitGa naar de map van het voltooide project.
cd gs-spring-boot-docker cd completeGebruik Maven om de voorbeeld-app te bouwen en uit te voeren.
mvn package spring-boot:runTest de web-app door te bladeren naar
http://localhost:8080of met de volgendecurlopdracht:curl http://localhost:8080Het volgende bericht wordt weergegeven: Hallo Docker World
Een Azure Container Registry maken met behulp van de Azure CLI
Open een opdrachtprompt.
Meld u aan bij uw Azure-account:
az loginSelecteer uw Azure-abonnement:
az account set -s <YourSubscriptionID>Maak een resourcegroep voor de Azure-resources die in deze zelfstudie worden gebruikt.
az group create --name=wingtiptoys-kubernetes --location=eastusMaak een privé-Azure-containerregister in de resourcegroep. In de handleiding wordt de voorbeeldapp in latere stappen als een Docker-image naar dit register geplaatst. Vervang
wingtiptoysregistrydoor een unieke naam voor uw register.az acr create --resource-group wingtiptoys-kubernetes --location eastus \ --name wingtiptoysregistry --sku Basic
Uw app via Jib naar het containerregister pushen
Meld u aan bij uw Azure Container Registry vanuit de 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 loginOpen het pom.xml-bestand met een teksteditor, zoals Visual Studio Code.
code pom.xmlWerk de
<properties>verzameling in het pom.xml-bestand bij met de registernaam voor uw Azure Container Registry en de nieuwste versie vanjib-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>Werk de
<plugins>verzameling in het pom.xml-bestand bij zodat het<plugin>element een vermelding voor dejib-maven-pluginbevat, zoals wordt weergegeven in het volgende voorbeeld. Gebruik een basisimage uit de Microsoft Container Registry (MCR):mcr.microsoft.com/openjdk/jdk:11-ubuntu, die een officieel ondersteunde JDK voor Azure bevat. Zie De Microsoft Build van OpenJDK installeren voor andere MCR-basisinstallatiekopieën met officieel ondersteunde JDK's.<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>Ga naar de voltooide projectmap voor uw Spring Boot-toepassing en voer de volgende opdracht uit om de installatiekopie te bouwen en de installatiekopie naar het register te pushen:
az acr login && mvn compile jib:build
Notitie
Om veiligheidsredenen is het referentiegegeven dat u met az acr login maakt, één uur geldig. Als er een 401 Unauthorized fout wordt weergegeven, voert u de az acr login --name <your registry name> opdracht opnieuw uit om opnieuw te verifiëren. Als u een Read timed out-fout ziet, probeer dan de time-outwaarden te verhogen met mvn -Djib.httpTimeout=7200000 jib:dockerBuild, of gebruik -Djib.httpTimeout=0 voor een oneindige time-out.
Een Kubernetes-cluster in AKS maken met behulp van de Azure CLI
Maak een Kubernetes-cluster in Azure Kubernetes Service. Met de volgende opdracht maakt u een Kubernetes-cluster in de
wingtiptoys-kubernetesresourcegroep, metwingtiptoys-aksclusterals clusternaam, waaraan Azure Container Registry (ACR)wingtiptoysregistryis gekoppeld enwingtiptoys-kubernetesals het DNS-voorvoegsel:az aks create --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster \ --attach-acr wingtiptoysregistry \ --dns-name-prefix=wingtiptoys-kubernetes --generate-ssh-keysHet kan even duren voordat deze opdracht is voltooid.
Installeer
kubectlmet behulp van de Azure CLI. Linux-gebruikers moeten deze opdracht mogelijk vooraf laten gaan doorsudo, omdat deze de Kubernetes CLI installeert in/usr/local/bin.az aks install-cliDownload de clusterconfiguratiegegevens zodat u uw cluster kunt beheren via de Kubernetes-webinterface en
kubectl.az aks get-credentials --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster
Implementeer de containerimage in uw Kubernetes-cluster
In deze zelfstudie wordt de app geïmplementeerd met behulp van kubectlen vervolgens kunt u de implementatie verkennen via de Kubernetes-webinterface.
Implementeren met kubectl
Open een opdrachtprompt.
Voer uw container uit in het Kubernetes-cluster met behulp van de opdracht
kubectl run. Geef een servicenaam en de volledige image-naam op voor uw app in Kubernetes. Bijvoorbeeld:kubectl run gs-spring-boot-docker --image=wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latestIn deze opdracht:
U geeft de containernaam
gs-spring-boot-dockerdirect na derunopdracht op.De parameter
--imagespecificeert de gecombineerde aanmeldingsserver en installatiekopienaam alswingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest.
Maak uw Kubernetes-cluster extern beschikbaar met behulp van de opdracht
kubectl expose. Geef uw servicenaam, de openbare TCP-poort op die wordt gebruikt voor toegang tot de app en de interne doelpoort waarop uw app luistert. Bijvoorbeeld:kubectl expose pod gs-spring-boot-docker --type=LoadBalancer --port=80 --target-port=8080In deze opdracht:
U geeft de containernaam
gs-spring-boot-dockerdirect na deexpose podopdracht op.De parameter
--typegeeft aan dat het cluster gebruikmaakt van load balancer.De parameter
--portgeeft de openbare TCP-poort van 80 op. U opent de app op deze poort.De
--target-portparameter geeft de interne TCP-poort van 8080. De load balancer stuurt aanvragen door naar uw app op deze poort.
Nadat u de app in het cluster hebt geïmplementeerd, voert u een query uit op het externe IP-adres en opent u deze in uw webbrowser:
kubectl get services -o=jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}'
Implementeren met de Kubernetes-resourceweergave
Selecteer toevoegen uit een van de resourceweergaven (naamruimte, workloads, services en ingresses, opslag of configuratie).
Plak de volgende 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:latestSelecteer Toevoegen onderaan de YAML-editor om de toepassing te implementeren.
Nadat u
Deploymenthebt geïmplementeerd, selecteert u net als in de voorgaande stap onderaan de YAML-editor Toevoegen omServicete implementeren met de volgende YAML:apiVersion: v1 kind: Service metadata: name: gs-spring-boot-docker spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: gs-spring-boot-dockerNadat u het YAML-bestand hebt toegevoegd, toont de resourceviewer uw Spring Boot-toepassing. De externe service bevat een gekoppeld extern IP-adres, zodat u de toepassing eenvoudig in uw browser kunt bekijken.
Selecteer externe IP-. U ziet dat uw Spring Boot-toepassing wordt uitgevoerd op Azure.
Volgende stappen
Ga naar het Documentatiecentrum van Spring op Azure voor meer informatie over Spring en Azure.
Zie ook
Zie het volgende artikel voor meer informatie over het gebruik van Spring Boot in Azure:
Zie de Azure voor Java-ontwikkelaars en de Werken met Azure DevOps en Javavoor meer informatie over het gebruik van Azure met Java.
Zie Java-zelfstudies voor Visual Studio Codevoor meer informatie over het implementeren van een Java-toepassing in Kubernetes met Visual Studio Code.
Zie Spring Boot op Docker Aan de slagvoor meer informatie over het Spring Boot-voorbeeldproject in Docker.
De volgende koppelingen bevatten meer informatie over het maken van Spring Boot-toepassingen:
- Zie de Spring Initializr op https://start.spring.io/voor meer informatie over het maken van een eenvoudige Spring Boot-toepassing.
De volgende koppelingen bevatten meer informatie over het gebruik van Kubernetes met Azure:
Zie de kubectl-gebruikershandleiding op https://kubernetes.io/docs/reference/kubectl/voor meer informatie over het gebruik van de Kubernetes-opdrachtregelinterface.
De Kubernetes-website bevat verschillende artikelen die het gebruik van afbeeldingen in privéregistraties bespreken.
Zie Een aangepaste Docker-installatiekopie gebruiken voor Azure Web App op Linux voor meer voorbeelden van het gebruik van aangepaste Docker-installatiekopieën met Azure.
Zie Aan de slag op Azure Dev Spaces met Java voor meer informatie over iteratief uitvoeren en fouten opsporen in containers in Azure Kubernetes Service (AKS) met Azure Dev Spaces.