Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Jegyzet
Spring Boot-alkalmazások esetén az Azure Container Apps használatát javasoljuk. Azonban továbbra is dönthet úgy, hogy az Azure Kubernetes Service-t használja célként. További információ: Java-alkalmazások megfelelő Azure-szolgáltatásainak kiválasztása.
Ez az oktatóanyag végigvezeti a Kubernetes és a Docker kombinálásán egy Spring Boot-alkalmazás fejlesztéséhez és a Microsoft Azure-ban való üzembe helyezéséhez. Pontosabban az alkalmazásfejlesztéshez Spring Boot, a tároló üzembe helyezéséhez Kubernetes, az alkalmazás üzemeltetéséhez pedig Azure Kubernetes Service (AKS).
Kubernetes és A Docker olyan nyílt forráskódú megoldások, amelyek segítségével a fejlesztők automatizálhatják a tárolókban futó alkalmazások üzembe helyezését, méretezését és felügyeletét.
Előfeltételek
- Azure-előfizetés; Ha még nem rendelkezik Azure-előfizetéssel, aktiválhatja MSDN-előfizetői előnyeit, vagy regisztrálhat egy ingyenes Azure-fiókra.
- Az Azure Command-Line Interface (CLI).
- Egy támogatott Java Development Kit (JDK). Az Azure-beli fejlesztés során használható JDK-kkal kapcsolatos további információkért lásd Java-támogatást az Azure-ban és az Azure Stack.
- Az Apache Maven buildelési eszköze (3. verzió).
- Egy Git ügyfél.
- Egy Docker--ügyfél.
- Az ACR Docker hitelesítő segéd.
Jegyzet
Az oktatóanyag virtualizálási követelményei miatt nem tudja követni a jelen cikkben szereplő lépéseket egy virtuális gépen; olyan fizikai számítógépet kell használnia, amelyen engedélyezve van a virtualizálási funkció.
A Spring Boot létrehozása a Docker Első lépések webalkalmazásban
Az alábbi lépések végigvezetik egy Spring Boot-webalkalmazás létrehozásán és helyi tesztelésén.
Nyisson meg egy parancssort, és hozzon létre egy helyi könyvtárat az alkalmazás tárolásához, és váltson erre a könyvtárra; például:
mkdir C:\SpringBoot cd C:\SpringBoot--vagy--
mkdir /users/$USER/SpringBoot cd /users/$USER/SpringBootKlónozza a Spring Boott a Docker első lépésein mintaprojektet a könyvtárba.
git clone https://github.com/spring-guides/gs-spring-boot-docker.gitMódosítsa a könyvtárat a befejezett projektre.
cd gs-spring-boot-docker cd completeA Maven használatával hozza létre és futtassa a mintaalkalmazást.
mvn package spring-boot:runTesztelje a webalkalmazást úgy, hogy a
http://localhost:8080-ra böngészik, vagy a következőcurlparanccsal:curl http://localhost:8080A következő üzenet jelenik meg: Hello Docker World
Azure Container Registry létrehozása az Azure CLI használatával
Nyisson meg egy parancssort.
Jelentkezzen be az Azure-fiókjába:
az loginVálassza ki az Azure-előfizetését:
az account set -s <YourSubscriptionID>Hozzon létre egy erőforráscsoportot az oktatóanyagban használt Azure-erőforrásokhoz.
az group create --name=wingtiptoys-kubernetes --location=eastusHozzon létre egy privát Azure-tárolóregisztrációs adatbázist az erőforráscsoportban. Az oktatóanyag későbbi lépésekben Docker-rendszerképként küldi le a mintaalkalmazást ebbe a beállításjegyzékbe. Cserélje le a
wingtiptoysregistry-t egyedi névre a beállításjegyzékben.az acr create --resource-group wingtiptoys-kubernetes --location eastus \ --name wingtiptoysregistry --sku Basic
Az alkalmazás leküldése a tárolóregisztrációs adatbázisba a Jib használatával
Jelentkezzen be az Azure Container Registrybe az Azure CLI-ből.
# 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 loginNyissa meg a pom.xml fájlt egy szövegszerkesztővel; például Visual Studio Code.
code pom.xmlFrissítse a
<properties>gyűjteményt a pom.xml fájlban az Azure Container Registry regisztrációs nevével és a jib-maven-pluginlegújabb verziójával.<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>Frissítse a
<plugins>gyűjteményt a pom.xml fájlban, hogy a<plugin>elem tartalmazhassa ajib-maven-pluginbejegyzését, ahogyan az az alábbi példában is látható. Vegye figyelembe, hogy a Microsoft Container Registry (MCR) alaprendszerképét használjuk:mcr.microsoft.com/openjdk/jdk:11-ubuntu, amely egy hivatalosan támogatott JDK-t tartalmaz az Azure-hoz. A hivatalosan támogatott JDK-kkal rendelkező többi MCR-alaprendszerképről lásd: Az OpenJDK Microsoft buildjének telepítése..<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>Lépjen a Spring Boot-alkalmazás befejezett projektkönyvtárára, és futtassa a következő parancsot a rendszerkép létrehozásához és a lemezkép beállításjegyzékbe való leküldéséhez:
az acr login && mvn compile jib:build
Jegyzet
Az Azure Cli és az Azure Container Registry biztonsági aggályai miatt a az acr login által létrehozott hitelesítő adatok 1 órán át érvényesek. Ha 401 Unauthorized hibaüzenet jelenik meg, újra futtathatja a az acr login --name <your registry name> parancsot az újrahitelesítéshez. Ha Read timed out hibaüzenet jelenik meg, megpróbálhatja növelni az időtúllépéseket a mvn -Djib.httpTimeout=7200000 jib:dockerBuildhasználatával, vagy a végtelen időtúllépés esetén a -Djib.httpTimeout=0-t használva.
Kubernetes-fürt létrehozása az AKS-en az Azure CLI használatával
Hozzon létre egy Kubernetes-fürtöt az Azure Kubernetes Service-ben. A következő parancs létrehoz egy Kubernetes-fürtöt a
wingtiptoys-kuberneteserőforráscsoportban, a fürt neve pedigwingtiptoys-aksclusterlesz, az Azure Container Registry (ACR)wingtiptoysregistrycsatolva van hozzá, és a DNS-előtagwingtiptoys-kubernetes.az aks create --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster \ --attach-acr wingtiptoysregistry \ --dns-name-prefix=wingtiptoys-kubernetes --generate-ssh-keysA parancs végrehajtása eltarthat egy ideig.
Telepítse
kubectlaz Azure CLI használatával. Előfordulhat, hogy a Linux-felhasználóknak előtagként hozzá kell adniuk asudokiegészítést ehhez a parancshoz, mivel a Kubernetes parancssori felületét telepíti a/usr/local/bin.az aks install-cliTöltse le a fürt konfigurációs adatait, hogy a fürtöt a Kubernetes webes felületéről és
kubectl-ból kezelhesse.az aks get-credentials --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster
A kép üzembe helyezése a Kubernetes-fürtben
Ez az oktatóanyag üzembe helyezi az alkalmazást a kubectlhasználatával, majd lehetővé teszi az üzembe helyezés megismerését a Kubernetes webes felületén keresztül.
Üzembe helyezés a kubectl használatával
Nyisson meg egy parancssort.
Futtassa a tárolót a Kubernetes-fürtben a
kubectl runparanccsal. Adja meg az alkalmazás szolgáltatásnevét a Kubernetesben, valamint a teljes rendszerkép nevét. Például:kubectl run gs-spring-boot-docker --image=wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latestEbben a parancsban:
A
gs-spring-boot-dockertárolónév közvetlenül arunparancs után lesz megadvaA
--imageparaméter a kombinált bejelentkezési kiszolgálót és a rendszerkép nevét adja megwingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest
Tegye elérhetővé a Kubernetes-fürtöt külsőleg a
kubectl exposeparanccsal. Adja meg a szolgáltatás nevét, az alkalmazás eléréséhez használt nyilvános elérésű TCP-portot, valamint azt a belső célportot, amelyen az alkalmazás figyel. Például:kubectl expose pod gs-spring-boot-docker --type=LoadBalancer --port=80 --target-port=8080Ebben a parancsban:
A tárolónév
gs-spring-boot-dockerközvetlenül aexpose podparancs után lesz megadva.A
--typeparaméter azt határozza meg, hogy a fürt terheléselosztót használ-e.A
--portparaméter a 80-ból álló nyilvános TCP-portot adja meg. Ezen a porton érheti el az alkalmazást.A
--target-portparaméter a 8080-ás belső TCP-portot adja meg. A terheléselosztó továbbítja a kéréseket az alkalmazásnak ezen a porton.
Miután üzembe helyezte az alkalmazást a fürtön, kérdezze le a külső IP-címet, és nyissa meg a webböngészőben:
kubectl get services -o=jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}'
Üzembe helyezés a Kubernetes-erőforrásnézettel
Válassza a , majd a hozzáadását az erőforrás nézetek bármelyikéből (névterek, számítási feladatok, szolgáltatások, tároló vagy konfiguráció).
Illessze be a következő YAML-ként:
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:latestA YAML-szerkesztő alján válassza a lehetőséget, majd adja hozzá a-et az alkalmazás üzembe helyezéséhez.
A
Deploymentüzembe helyezése után, a fentiekhez hasonlóan, válassza az alsó részen található YAML-szerkesztőben a , majd kattintson az "Add" lehetőségre, hogy a következő YAML-t használva telepítse aService-at.apiVersion: v1 kind: Service metadata: name: gs-spring-boot-docker spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: gs-spring-boot-dockerA YAML-fájl hozzáadása után az erőforrás-megjelenítő megjeleníti a Spring Boot-alkalmazást. A külső szolgáltatás tartalmaz egy csatolt külső IP-címet, így könnyedén megtekintheti az alkalmazást a böngészőben.
Válassza ki a külső IP-címet. Ezután látni fogja, hogy a Spring Boot-alkalmazás fut az Azure-ban.
Következő lépések
Ha többet szeretne megtudni a Springről és az Azure-ról, lépjen tovább a Spring on Azure dokumentációs központjába.
Lásd még:
A Spring Boot Azure-beli használatáról az alábbi cikkben talál további információt:
Az Azure Java használatáról további információért tekintse meg az Azure fejlesztőknek Java-val kapcsolatos, valamint az Azure DevOps és Java-val kapcsolatoscímű cikkeket.
További információ a Java-alkalmazások Kubernetesben a Visual Studio Code-tal való üzembe helyezéséről: Visual Studio Code Java-oktatóanyagok.
További információ a Spring Boot on Docker mintaprojektről: Spring Boot on Docker – Első lépések.
Az alábbi hivatkozások további információt nyújtanak a Spring Boot-alkalmazások létrehozásáról:
- Az egyszerű Spring Boot-alkalmazások létrehozásáról további információt a „Spring Initializr” nevű alkalmazásban talál a következő helyen: https://start.spring.io/.
Az alábbi hivatkozások további információt nyújtanak a Kubernetes Azure-ral való használatáról:
A Kubernetes parancssori felületének használatáról további információt a kubectl felhasználói útmutatójában talál a https://kubernetes.io/docs/reference/kubectl/.
A Kubernetes webhelyén számos cikk található, amelyek a képek magánregisztrációs adatbázisokban való használatát ismertetik:
További példák az egyéni Docker-rendszerképek Azure-ral való használatára: Egyéni Docker-rendszerkép használata az Azure Web Apphoz Linuxon.
A tárolóknak az Azure Kubernetes Service-ben (AKS) és az Azure Dev Spaces-ben való iteratív futtatásával és hibakeresésével kapcsolatos további információkért lásd: Bevezetés az Azure Dev Spaces-be Java-val