Megosztás a következőn keresztül:


Spring Boot-alkalmazás üzembe helyezése az Azure Kubernetes Service-ben

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

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.

  1. 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/SpringBoot
    
  2. Kló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.git
    
  3. Módosítsa a könyvtárat a befejezett projektre.

    cd gs-spring-boot-docker
    cd complete
    
  4. A Maven használatával hozza létre és futtassa a mintaalkalmazást.

    mvn package spring-boot:run
    
  5. Tesztelje a webalkalmazást úgy, hogy a http://localhost:8080-ra böngészik, vagy a következő curl paranccsal:

    curl http://localhost:8080
    
  6. A következő üzenet jelenik meg: Hello Docker World

    Helyi mintaalkalmazás tallózása

Azure Container Registry létrehozása az Azure CLI használatával

  1. Nyisson meg egy parancssort.

  2. Jelentkezzen be az Azure-fiókjába:

    az login
    
  3. Válassza ki az Azure-előfizetését:

    az account set -s <YourSubscriptionID>
    
  4. Hozzon létre egy erőforráscsoportot az oktatóanyagban használt Azure-erőforrásokhoz.

    az group create --name=wingtiptoys-kubernetes --location=eastus
    
  5. Hozzon 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

  1. 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 login
    
  2. Nyissa meg a pom.xml fájlt egy szövegszerkesztővel; például Visual Studio Code.

    code pom.xml
    
  3. Frissí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>
    
  4. Frissítse a <plugins> gyűjteményt a pom.xml fájlban, hogy a <plugin> elem tartalmazhassa a jib-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>
    
  5. 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

  1. 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 fürt neve pedig wingtiptoys-akscluster lesz, az Azure Container Registry (ACR) wingtiptoysregistry csatolva van hozzá, és a DNS-előtag wingtiptoys-kubernetes.

    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 eltarthat egy ideig.

  2. Telepítse kubectl az Azure CLI használatával. Előfordulhat, hogy a Linux-felhasználóknak előtagként hozzá kell adniuk a sudo kiegészítést ehhez a parancshoz, mivel a Kubernetes parancssori felületét telepíti a /usr/local/bin.

    az aks install-cli
    
  3. Tö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

  1. Nyisson meg egy parancssort.

  2. Futtassa a tárolót a Kubernetes-fürtben a kubectl run paranccsal. 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:latest
    

    Ebben a parancsban:

    • A gs-spring-boot-docker tárolónév közvetlenül a run parancs után lesz megadva

    • A --image paraméter a kombinált bejelentkezési kiszolgálót és a rendszerkép nevét adja meg wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest

  3. Tegye elérhetővé a Kubernetes-fürtöt külsőleg a kubectl expose paranccsal. 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=8080
    

    Ebben a parancsban:

    • A tárolónév gs-spring-boot-docker közvetlenül a expose pod parancs után lesz megadva.

    • A --type paraméter azt határozza meg, hogy a fürt terheléselosztót használ-e.

    • A --port paraméter a 80-ból álló nyilvános TCP-portot adja meg. Ezen a porton érheti el az alkalmazást.

    • A --target-port paramé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.

  4. 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}'
    

    Mintaalkalmazás tallózása az Azure-

Üzembe helyezés a Kubernetes-erőforrásnézettel

  1. 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ó).

    Kubernetes-erőforrások nézetét.

  2. 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:latest
    
  3. A YAML-szerkesztő alján válassza a lehetőséget, majd adja hozzá a-et az alkalmazás üzembe helyezéséhez.

    Kubernetes-erőforrások nézetet, adjon hozzá erőforrást.

    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 a Service-at.

    apiVersion: v1
    kind: Service
    metadata:
      name: gs-spring-boot-docker
    spec:
      type: LoadBalancer
      ports:
      - port: 80
        targetPort: 8080
      selector:
        app: gs-spring-boot-docker
    
  4. 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önnyedén megtekintheti az alkalmazást a böngészőben.

    Kubernetes-erőforrások nézetét, szolgáltatások listáját.

    Kubernetes-erőforrások nézete, szolgáltatások listája, kiemelt külső végpontok.

  5. Válassza ki a külső IP-címet. Ezután látni fogja, hogy a Spring Boot-alkalmazás fut az Azure-ban.

    Mintaalkalmazás tallózása az Azure-

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