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

Poznámka:

Pro aplikace Spring Boot doporučujeme používat Azure Spring 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ě se Spring Boot používá pro vývoj aplikací, Kubernetes pro nasazení kontejnerů a Azure Kubernetes Service (AKS) k hostování vaší aplikace.

Kubernetes a Docker jsou open source řešení, která vývojářům pomáhají automatizovat nasazení, škálování a správu aplikací spuštěných v kontejnerech.

Požadavky

Poznámka:

Vzhledem k tomu, že tento kurz vyžaduje virtualizaci, 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 virtualizačními funkcemi.

Vytvoření webové aplikace Začínáme s aplikací Spring Boot v Dockeru

Následující kroky vás provedou sestavením webové aplikace Spring Boot a jejím místním otestováním.

  1. Otevřete příkazový řádek, vytvořte místní adresář, který bude obsahovat vaši aplikaci, a přejděte do tohoto adresáře. Například:

    mkdir C:\SpringBoot
    cd C:\SpringBoot
    

    -- nebo --

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

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

    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 adresu http://localhost:8080, nebo 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

    Místní procházení ukázkové aplikace

Vytvoření registru kontejneru Azure 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 v této skupině prostředků. Kurz v pozdějších krocích předá ukázkovou aplikaci jako image Dockeru do tohoto registru. Nahraďte položku wingtiptoysregistry jedinečným názvem pro svůj registr.

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

Předání aplikace do registru kontejneru pomocí Jib

  1. Z Azure CLI se přihlaste ke službě Azure Container Registry.

    # 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 názvem registru pro vaši službu Azure Container Registry a nejnovější verzí modulu 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 element <plugin> obsahoval položku pro jib-maven-plugin, jak ukazuje následující příklad. Všimněte si, že používáme základní image z 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 sadami JDK najdete v tématu Instalace sestavení Microsoft Buildu 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 předejte ji 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é službou az acr login Platné po dobu 1 hodiny. Pokud se zobrazí chyba 401 Neautorizováno , můžete příkaz spustit az acr login --name <your registry name> znovu a znovu ho znovu vytvořit. Pokud se zobrazí chyba vypršení časového limitu čtení, můžete zkusit zvýšit časový limit pomocí mvn -Djib.httpTimeout=7200000 jib:dockerBuild-Djib.httpTimeout=0 nebo 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 názvem clusteru wingtiptoys-akscluster , připojeným službou Azure Container Registry (ACR) wingtiptoysregistry a kubernetes wingtiptoys-kubernetes jako předponou 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 před tento příkaz přidat sudo, protože příkaz nasadí rozhraní příkazového řádku Kubernetes do umístění /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

V tomto kurzu nasadíte aplikaci pomocí kubectla pak můžete prozkoumat nasazení prostřednictvím webového rozhraní Kubernetes.

Nasazení pomocí kubectl

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

  2. Pomocí příkazu kubectl run spusťte kontejner v clusteru Kubernetes. Zadejte název služby pro vaši aplikaci v Kubernetes a úplný název image. Pří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 je zadaný 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. Zpřístupněte cluster Kubernetes externě příkazem kubectl expose. Zadejte název služby, veřejný port TCP používaný pro přístup k aplikaci a interní cílový port, na kterém aplikace naslouchá. Pří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 je zadaný 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 přistupujete na tomto portu.

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

  4. Po nasazení aplikace do clusteru odešlete 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ázení ukázkové aplikace 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. Aplikaci nasadíte výběrem možnosti Přidat v dolní části editoru YAML.

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

    Po nasazení editoru DeploymentYAML vyberte Přidat v dolní části editoru YAML a nasaďte Service ho 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 adresu. Zobrazí se aplikace Spring Boot spuštěná v Azure.

    Procházení ukázkové aplikace v Azure

Další kroky

Pokud se chcete dozvědět více o architektuře Spring a Azure, přejděte do centra dokumentace Spring v Azure.

Viz také

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

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

Další informace o nasazení aplikace Java do Kubernetes pomocí Visual Studio Code najdete v tématu s kurzy pro Visual Studio Code a Javu.

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

Další informace o vytváření aplikací Spring Boot najdete na následujících odkazech:

  • Další informace o vytváření jednoduché aplikace Spring Boot najdete na stránce Spring Initializr na adrese https://start.spring.io/.

Další informace o používání Kubernetes s Azure najdete na následujících odkazech:

Další informace o používání rozhraní příkazového řádku Kubernetes najdete v uživatelské příručce kubectl na adrese 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 imagí Dockeru v Azure najdete v tématu pojednávajícím o použití vlastní image Dockeru pro webovou aplikaci Azure v Linuxu.

Další informace o opakovaném spuš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 Javou v Azure Dev Spaces.