Sdílet prostřednictvím


Nasazení aplikace Spring Boot do služby Azure Kubernetes Service

Poznámka

Pro aplikace Spring Boot doporučujeme používat Azure Container Apps. Přesto se ale můžete rozhodnout, že jako cíl použijete službu Azure Kubernetes Service. Další informace najdete v tématu Volba správných služeb Azure pro vaše aplikace v Javě.

Tento kurz vás provede kombinováním Kubernetes a Dockeru za účelem vývoje a nasazení aplikace Spring Boot do Microsoft Azure. Konkrétně používáte Spring Boot pro vývoj aplikací, Kubernetes pro nasazení kontejnerů a Azure Kubernetes Service (AKS) k hostování vaší aplikace.

Kubernetes a dockeru jsou opensourcová řešení, která vývojářům pomáhají automatizovat nasazení, škálování a správu aplikací běžících v kontejnerech.

Požadavky

  • Předplatné Azure; Pokud ještě nemáte předplatné Azure, můžete aktivovat výhody pro předplatitele MSDN nebo si zaregistrovat bezplatný účet Azure.
  • rozhraní Azure Command-Line (CLI).
  • Podporovaná sada Java Development Kit (JDK). Další informace o sadách JDK, které jsou k dispozici při vývoji v Azure, najdete v tématu podpora Javy v Azure a azure Stack.
  • Apache Maven nástroj pro sestavování (Verze 3).
  • Klient Git.
  • Klient Dockeru.
  • Pomocník pro přihlašovací údaje Dockeru ACR.

Poznámka

Vzhledem k požadavkům na virtualizaci tohoto kurzu nemůžete postupovat podle kroků v tomto článku na virtuálním počítači; Musíte použít fyzický počítač s povolenými funkcemi virtualizace.

Vytvořte webovou aplikaci Spring Boot pro Docker – Začínáme

Následující kroky vás provedou vytvořením webové aplikace Spring Boot a jeho místním testováním.

  1. Otevřete příkazový řádek a vytvořte místní adresář pro uložení aplikace a změňte ho na tento adresář; například:

    mkdir C:\SpringBoot
    cd C:\SpringBoot
    

    -- nebo --

    mkdir /users/$USER/SpringBoot
    cd /users/$USER/SpringBoot
    
  2. Naklonujte do adresáře ukázkový projekt Spring Boot v Dockeru Začínáme.

    git clone https://github.com/spring-guides/gs-spring-boot-docker.git
    
  3. Přejděte do adresáře dokončeného projektu.

    cd gs-spring-boot-docker
    cd complete
    
  4. Pomocí Mavenu sestavte a spusťte ukázkovou aplikaci.

    mvn package spring-boot:run
    
  5. Otestujte webovou aplikaci tak, že přejdete na http://localhost:8080nebo pomocí následujícího příkazu curl:

    curl http://localhost:8080
    
  6. Měla by se zobrazit následující zpráva: Hello Docker World

    Procházet ukázkovou aplikaci místně

Vytvoření služby Azure Container Registry pomocí Azure CLI

  1. Otevřete příkazový řádek.

  2. Přihlaste se ke svému účtu Azure:

    az login
    
  3. Zvolte své předplatné Azure:

    az account set -s <YourSubscriptionID>
    
  4. Vytvořte skupinu prostředků pro prostředky Azure použité v tomto kurzu.

    az group create --name=wingtiptoys-kubernetes --location=eastus
    
  5. Vytvořte privátní registr kontejneru Azure ve skupině prostředků. Tento kurz odešle ukázkovou aplikaci jako image Dockeru do tohoto registru v dalších krocích. Nahraďte wingtiptoysregistry jedinečným názvem vašeho registru.

    az acr create --resource-group wingtiptoys-kubernetes --location eastus \
     --name wingtiptoysregistry --sku Basic
    

Nasazení aplikace do registru kontejneru pomocí Jib

  1. Přihlaste se ke službě Azure Container Registry z 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 login
    
  2. Otevřete soubor pom.xml pomocí textového editoru; například Visual Studio Code.

    code pom.xml
    
  3. Aktualizujte kolekci <properties> v souboru pom.xml tím, že přidáte název registru pro váš Azure Container Registry a nejnovější verzi jib-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>
    
  4. Aktualizujte kolekci <plugins> v souboru pom.xml tak, aby prvek <plugin> obsahoval položku pro jib-maven-plugin, jak je znázorněno v následujícím příkladu. Všimněte si, že používáme základní image ze služby Microsoft Container Registry (MCR): mcr.microsoft.com/openjdk/jdk:11-ubuntu, která obsahuje oficiálně podporovanou sadu JDK pro Azure. Další základní image MCR s oficiálně podporovanými JDK najdete v tématu Instalace sady Microsoft Build 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>
    
  5. Přejděte do adresáře dokončeného projektu pro aplikaci Spring Boot a spuštěním následujícího příkazu sestavte image a nasdílejte image do registru:

    az acr login && mvn compile jib:build
    

Poznámka

Vzhledem k obavám o zabezpečení Azure Cli a služby Azure Container Registry jsou přihlašovací údaje vytvořené az acr login platné 1 hodinu. Pokud se zobrazí chyba 401 Unauthorized, můžete znovu spustit příkaz az acr login --name <your registry name> pro autentizaci znovu. Pokud se zobrazí chyba Read timed out, můžete zkusit zvýšit časový limit pomocí mvn -Djib.httpTimeout=7200000 jib:dockerBuildnebo -Djib.httpTimeout=0 pro neomezený časový limit.

Vytvoření clusteru Kubernetes v AKS pomocí Azure CLI

  1. Vytvořte cluster Kubernetes ve službě Azure Kubernetes Service. Následující příkaz vytvoří cluster Kubernetes ve skupině prostředků wingtiptoys-kubernetes s wingtiptoys-akscluster jako názvem clusteru, připojeným službou Azure Container Registry (ACR wingtiptoysregistry) a wingtiptoys-kubernetes jako předponu DNS:

    az aks create --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster \
     --attach-acr wingtiptoysregistry \
     --dns-name-prefix=wingtiptoys-kubernetes --generate-ssh-keys
    

    Dokončení tohoto příkazu může chvíli trvat.

  2. Nainstalujte kubectl pomocí Azure CLI. Uživatelé Linuxu možná budou muset tento příkaz předponovat sudo, protože nasadí rozhraní příkazového řádku Kubernetes do /usr/local/bin.

    az aks install-cli
    
  3. Stáhněte si informace o konfiguraci clusteru, abyste mohli cluster spravovat z webového rozhraní Kubernetes a kubectl.

    az aks get-credentials --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster
    

Nasazení image do clusteru Kubernetes

Tento kurz nasadí aplikaci pomocí kubectla pak umožňuje prozkoumat nasazení prostřednictvím webového rozhraní Kubernetes.

Nasazení pomocí kubectl

  1. Otevřete příkazový řádek.

  2. Spuštění kontejneru v clusteru Kubernetes pomocí příkazu kubectl run Zadejte název služby pro vaši aplikaci v prostředí Kubernetes a také celý název image. Například:

    kubectl run gs-spring-boot-docker --image=wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest
    

    V tomto příkazu:

    • Název kontejneru gs-spring-boot-docker se zadává hned za příkazem run.

    • Parametr --image určuje kombinovaný přihlašovací server a název image jako wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest

  3. Externí zveřejnění clusteru Kubernetes pomocí příkazu kubectl expose Zadejte název vaší služby, veřejně přístupný port TCP, který se používá pro přístup k aplikaci, a interní cílový port, na kterém vaše aplikace naslouchá. Například:

    kubectl expose pod gs-spring-boot-docker --type=LoadBalancer --port=80 --target-port=8080
    

    V tomto příkazu:

    • Název kontejneru gs-spring-boot-docker se zadává hned za příkazem expose pod.

    • Parametr --type určuje, že cluster používá nástroj pro vyrovnávání zatížení.

    • Parametr --port určuje veřejně přístupný port TCP 80. K aplikaci se dostanete na tento port.

    • Parametr --target-port určuje interní port TCP 8080. Nástroj pro vyrovnávání zatížení předává požadavky vaší aplikaci na tomto portu.

  4. Po nasazení aplikace do clusteru zadejte dotaz na externí IP adresu a otevřete ji ve webovém prohlížeči:

    kubectl get services -o=jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}'
    

    Procházet ukázkovou aplikaci v Azure

Nasazení pomocí zobrazení prostředků Kubernetes

  1. Vyberte Přidat z libovolného zobrazení prostředků (obor názvů, úlohy, služby a příchozí přenos dat, úložiště nebo konfigurace).

    zobrazení prostředků Kubernetes.

  2. Vložte následující 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:latest
    
  3. Vyberte Přidat v dolní části editoru YAML a nasaďte aplikaci.

    zobrazení prostředků Kubernetes, přidání prostředku.

    Po nasazení Deploymentstejně jako výše zvolte možnost Přidat v dolní části editoru YAML a poté nasaďte Service pomocí následujícího YAML:

    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. Po přidání souboru YAML se v prohlížeči prostředků zobrazí vaše aplikace Spring Boot. Externí služba obsahuje propojenou externí IP adresu, abyste mohli snadno zobrazit aplikaci v prohlížeči.

    zobrazení prostředků Kubernetes, seznam služeb.

    zobrazení prostředků Kubernetes, seznam služeb, zvýrazněné externí koncové body.

  5. Vyberte externí IP. Zobrazí se aplikace Spring Boot spuštěná v Azure.

    Procházet ukázkovou aplikaci v Azure

Další kroky

Další informace o Springu a Azure najdete v centru dokumentace Spring on Azure.

Viz také

Další informace o používání Spring Bootu v Azure najdete v následujícím článku:

Další informace o používání Azure s Javou najdete v Azure pro vývojáře v Javě a Práce s Azure DevOps a javou.

Další informace o nasazení aplikace v Javě do Kubernetes pomocí editoru Visual Studio Code najdete v kurzech visual studio Code v jazyce Java.

Další informace o ukázkovém projektu Spring Boot v Dockeru najdete v tématu Spring Boot v Dockeru Začínáme.

Následující odkazy obsahují další informace o vytváření aplikací Spring Boot:

  • Další informace o vytvoření jednoduché aplikace Spring Boot naleznete v aplikaci Spring Initializr na https://start.spring.io/.

Následující odkazy obsahují další informace o používání Kubernetes s Azure:

Další informace o používání rozhraní příkazového řádku Kubernetes najdete v uživatelské příručce kubectl na https://kubernetes.io/docs/reference/kubectl/.

Web Kubernetes obsahuje několik článků, které popisují použití imagí v privátních registrech:

Další příklady použití vlastních obrazů Dockeru s Azure najdete v tématu Použití vlastního obrazu Dockeru pro Web App v Linuxu.

Další informace o iterativním spouštění a ladění kontejnerů přímo ve službě Azure Kubernetes Service (AKS) s Azure Dev Spaces najdete v tématu Začínáme s Azure Dev Spaces pomocí javy