Spring Boot-alkalmazás üzembe helyezése a Azure Kubernetes Service
Ez az oktatóanyag végigvezeti a Kubernetes és a Docker kombinálásán egy Spring Boot-alkalmazás fejlesztéséhez és üzembe helyezéséhez Microsoft Azure. Pontosabban a Spring Bootot használhatja alkalmazásfejlesztéshez, a Kubernetes-t a tárolók üzembe helyezéséhez, az Azure Kubernetes Service-t (AKS) pedig az alkalmazás üzemeltetéséhez.
A Kubernetes és a Docker nyílt forráskódú megoldások, amelyekkel a fejlesztők automatizálhatják a tárolókban futó alkalmazásaik üzembe helyezését, méretezését és felügyeletét.
Előfeltételek
- Egy Azure-előfizetés. Ha még nincs Azure-előfizetése, aktiválhatja MSDN-előfizetői előnyeit, vagy regisztrálhat egy ingyenes Azure-fiókot.
- Az Azure Command-Line Interface (CLI).
- Egy támogatott Java fejlesztői készlet (JDK). Az Azure-beli fejlesztés során használható JDK-król további információt az Azure-ban és az Azure Stackben elérhető Java-támogatásban talál.
- Az Apache Maven buildelőeszköz (3-as verzió).
- Egy Git-ügyfél.
- Egy Docker-ügyfél.
- Az ACR Docker hitelesítőadat-segítője.
Megjegyzés
A jelen oktatóanyag virtualizálási követelményei miatt nem fogja tudni követni és virtuális gépeken alkalmazni a cikkben leírt egyes lépéseket. Egy olyan fizikai számítógépet kell használnia, amelyen a virtualizálási funkciók engedélyezve vannak.
A Spring Boot on Docker – Első lépések webalkalmazás létrehozása
A következő lépések végigvezetik egy Spring Boot-webalkalmazás összeállításán és helyszíni tesztelésén.
Nyisson meg egy parancssort, és hozzon létre egy helyi könyvtárat az alkalmazás tárolásához, és lépjen ebbe a könyvtárba – például:
mkdir C:\SpringBoot cd C:\SpringBoot
– VAGY –
mkdir /users/$USER/SpringBoot cd /users/$USER/SpringBoot
Klónozza a Spring Boot on Docker – Első lépések mintaprojektet a létrehozott könyvtárba.
git clone https://github.com/spring-guides/gs-spring-boot-docker.git
Váltsa a könyvtárat a befejezett projektre.
cd gs-spring-boot-docker cd complete
Használja a Mavent a mintaalkalmazás összeállításához és futtatásához.
mvn package spring-boot:run
Tesztelje a webalkalmazást a
http://localhost:8080
cím megnyitásával vagy az alábbicurl
paranccsal:curl http://localhost:8080
A következő üzenetnek kell megjelennie: Hello Docker World
Azure Container Registry létrehozása az Azure CLI-vel
Nyisson meg egy parancssort.
Jelentkezzen be az Azure-fiókjába:
az login
Vá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ások számára.
az group create --name=wingtiptoys-kubernetes --location=eastus
Hozzon létre egy privát Azure Container Registryt az erőforráscsoportban. Az oktatóanyag a mintaalkalmazást Docker-lemezképként küldi le ennek a regisztrációs adatbázisnak a későbbi lépésekben. Cserélje le a
wingtiptoysregistry
elemet az adatbázis egyedi nevére.az acr create --resource-group wingtiptoys-kubernetes --location eastus \ --name wingtiptoysregistry --sku Basic
Az alkalmazás leküldése a regisztrációs adatbázisnak a Jibbel
Jelentkezzen be az Azure Container Registrybe az Azure CLI-ből.
# set the default name for Azure Container Registry, otherwise you will need to specify the name in "az acr login" az config set defaults.acr=wingtiptoysregistry az acr login
Nyissa meg a pom.xml fájlt egy szövegszerkesztővel; például VS Code.
code pom.xml
Frissítse a
<properties>
gyűjteményt a pom.xml fájlban az Azure Container Registry regisztrációs adatbázisának nevével, valamint a jib-maven-plugin legú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 gyűjteményt
<plugins>
a pom.xml fájlban úgy, hogy az<plugin>
elem tartalmazza a bejegyzést ajib-maven-plugin
következő példában látható módon. Vegye figyelembe, hogy a Microsoft Container Registry (MCR)mcr.microsoft.com/java/jdk:8-zulu-alpine
alaprendszerképét használjuk, amely egy hivatalosan támogatott JDK-t tartalmaz az Azure-hoz. A hivatalosan támogatott JDK-kkal rendelkező egyéb MCR alaprendszerképekért lásd: Java Standard kiadás JDK, Java Standard kiadás JRE, Java Standard kiadás Headless JRE és Java Standard kiadás JDK és Maven.<plugin> <artifactId>jib-maven-plugin</artifactId> <groupId>com.google.cloud.tools</groupId> <version>${jib-maven-plugin.version}</version> <configuration> <from> <image>mcr.microsoft.com/java/jdk:8-zulu-alpine</image> </from> <to> <image>${docker.image.prefix}/${project.artifactId}</image> </to> </configuration> </plugin>
Lépjen a Spring Boot-alkalmazás befejezett projektkönyvtárába, és futtassa a következő parancsot a lemezkép elkészítéséhez, majd a könyvtárba való leküldéséhez:
az acr login && mvn compile jib:build
Megjegyzés
Az Azure Cli és a Azure Container Registry biztonsági aggályai miatt az általa az acr login
létrehozott hitelesítő adatok 1 óráig érvényesek. Ha a 401-es nem engedélyezett hiba jelenik meg, újra futtathatja a parancsot az az acr login -n <your registry name>
újrahitelesítéshez. Ha olvasási időtúllépési hibát lát, megpróbálkozhat az időtúllépések számának növelésével mvn -Djib.httpTimeout=7200000 jib:dockerBuild
vagy -Djib.httpTimeout=0
végtelen időtúllépéssel.
Kubernetes-fürt létrehozása az AKS-en az Azure CLI-vel
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-kubernetes erőforráscsoportban a wingtiptoys-akscluster fürtnévvel, amelyhez Azure Container Registry (ACR)
wingtiptoysregistry
van csatolva, a wingtiptoys-kubernetes pedig DNS-előtagként:az aks create --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster \ --attach-acr wingtiptoysregistry \ --dns-name-prefix=wingtiptoys-kubernetes --generate-ssh-keys
A parancs végrehajtása hosszabb időt is igénybe vehet.
Telepítse a
kubectl
elemet az Azure CLI-vel. Előfordulhat, hogy a Linux-felhasználóknak el kell látniuk a parancsot asudo
előtaggal, mivel azzal a Kubernetes CLI telepítésére a/usr/local/bin
helyen kerül sor.az aks install-cli
Töltse le a fürt konfigurációs adatait, hogy kezelni tudja a fürtöt a Kubernetes webes felületén és a
kubectl
keretein belül.az aks get-credentials --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster
A lemezkép üzembe helyezése a Kubernetes-fürtön
Ez az oktatóanyag üzembe helyezi az alkalmazást a kubernetes kubectl
webes felületén, majd lehetővé teszi az üzembe helyezés megismerését.
Üzembe helyezés a kubectl használatával
Nyisson meg egy parancssort.
Futtassa a tárolót a Kubernetes-fürtben a
kubectl run
paranccsal. Adjon szolgáltatásnevet az alkalmazásnak a Kubernetes-ben és a teljes lemezkép nevében. Például:kubectl run gs-spring-boot-docker --image=wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest
Ebben a parancsban:
A tároló neve (
gs-spring-boot-docker
) közvetlenül arun
parancs után van megadvaAz
--image
wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest
értékként adja meg az összevont bejelentkezési kiszolgáló és a lemezkép nevét
A Kubernetes-fürtöt tegye külsőleg elérhetővé a
kubectl expose
paranccsal. Adja meg a szolgáltatás nevét, az alkalmazás eléréséhez használt nyilvános TCP-portot, valamint az alkalmazás által használt belső célportot. Például:kubectl expose pod gs-spring-boot-docker --type=LoadBalancer --port=80 --target-port=8080
Ebben a parancsban:
A tároló neve (
gs-spring-boot-docker
) közvetlenül aexpose pod
parancs után van megadva.A
--type
paraméter megszabja, hogy a fürt terheléselosztót használ.A
--port
paraméter megszabja, hogy a nyilvános TCP-port a 80. Ezen a porton fér hozzá az alkalmazáshoz.A
--target-port
paraméter megszabja, hogy a belső TCP-port a 8080. A terheléselosztó ezen a porton továbbítja a kéréseket az alkalmazásnak.
Miután üzembe helyezte az alkalmazást a fürtön, kérdezze le a külső IP-címet, majd 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 Hozzáadás lehetőséget bármelyik erőforrásnézetből (névtér, számítási feladatok, szolgáltatások és bejövő forgalom, Storage vagy konfiguráció).
Illessze be a következő YAML-be:
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
Az alkalmazás üzembe helyezéséhez válassza a YAML-szerkesztő alján található Hozzáadás lehetőséget.
A fentihez hasonlóan a
Deployment
YAML-szerkesztő alján található Hozzáadás elemet választva helyezze üzembeService
a következő YAML-lel:apiVersion: v1 kind: Service metadata: name: gs-spring-boot-docker spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: gs-spring-boot-docker
A 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önnyen megtekintheti az alkalmazást a böngészőben.
Válassza 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 szeretne többet megtudni a Spring és az Azure szolgáltatásról, lépjen tovább a Spring on Azure dokumentációs központra.
További források
A Spring Boot Azure-beli használatával kapcsolatban további információt az alábbi cikkben olvashat:
Az Azure a Javával való együttes használatáról további információt az Azure Java-fejlesztőknek és Az Azure DevOps és a Java használata című cikkben találhat.
További információ Java-alkalmazások a Kubernetes-ben való, a Visual Studio Code-dal történő üzembe helyezéséről: Visual Studio Code – Java-oktatóanyagok.
További információ a Spring Boot Dockeres mintaprojektjéről: Spring Boot a Dockerben – Első lépések.
A következő hivatkozások további információt nyújtanak Spring boot-alkalmazások létrehozásáról:
- További információt egy egyszerű Spring Boot-alkalmazás létrehozásáról a Spring Initializr oldalán találhat: https://start.spring.io/.
A következő hivatkozások további információt nyújtanak a Kubernetes az Azure-ral való használatáról:
További információt a Kubernetes parancssori felületének használatáról a kubectl felhasználói útmutatójában találhat: https://kubernetes.io/docs/user-guide/kubectl/.
A Kubernetes webhelye számos olyan cikket tartalmaz, amelyek a privát regisztrációs adatbázisokban található rendszerképek használatát ismertetik:
További példák egyéni Docker-rendszerképek Azure-ral való használatával kapcsolatban: Egyéni Docker-rendszerkép használata az Azure Web App on Linuxban.
További információ a tárolók az Azure Kubernetes Service-ben történő, az Azure Dev Spaces segítségével való iteratív futtatásáról és hibakereséséről: Azure Dev Spaces és Java – első lépések