Nasazení aplikace Spring Boot do Azure Kubernetes Service

Poznámka

Pro aplikace Spring Boot použijte Azure Container Apps. Azure Kubernetes Service ale můžete dál používat jako cíl. Další informace najdete v tématu Volba správných služeb Azure pro vaše aplikace v Javě.

V tomto kurzu se dozvíte, jak pomocí Kubernetes a Dockeru vyvíjet a nasazovat aplikaci Spring Boot pro 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

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 přejděte 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. Zobrazí se 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. Vyberte 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 svému 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 textovým editorem, například Visual Studio Code.

    code pom.xml
    
  3. Aktualizujte kolekci <properties> v souboru pom.xml názvem registru pro službu Azure Container Registry a nejnovější verzí 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. Použijte 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 sadami JDK najdete v článku Instalace Microsoft Build pro 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

Z bezpečnostních důvodů jsou přihlašovací údaje, které vytvoříte pomocí, az acr login platné po dobu jedné hodiny. Pokud se zobrazí 401 Unauthorized chyba, spusťte az acr login --name <your registry name> příkaz znovu, aby se znovu provedlo ověření. Pokud se zobrazí chyba Read timed out, zkuste zvýšit časové limity pomocí mvn -Djib.httpTimeout=7200000 jib:dockerBuild nebo použijte -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 názvem clusteru wingtiptoys-akscluster, s připojeným Azure Container Registry (ACR) wingtiptoysregistry a s předponou DNS wingtiptoys-kubernetes:

    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 doplnit sudo, protože se tím nástroj příkazového řádku Kubernetes nainstaluje 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

V tomto kurzu nasadíte aplikaci pomocí kubectl a poté můžete nasazení prozkoumat ve webovém 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 gs-spring-boot-docker kontejneru zadáte hned za příkazem run .

    • Parametr --image určuje sloučený 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 gs-spring-boot-docker kontejneru zadáte 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í Deployment, stejně jako v předchozím kroku, 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. Zobrazí se aplikace Spring Boot spuštěná na 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 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 s Azure najdete v tématu Použití vlastní image Dockeru pro Azure Web App v Linuxu.

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