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
- Předplatné Azure. Pokud ještě předplatné Azure nemáte, můžete si aktivovat výhody pro předplatitele MSDN nebo si zaregistrovat bezplatný účet Azure.
- Rozhraní příkazového řádku Azure (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 Stacku.
- Nástroj pro sestavování Apache Maven (verze 3).
- Klient Git
- Klient Dockeru
- Pomocná rutina přihlašovacích údajů Dockeru ACR.
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.
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
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
Přejděte do adresáře pro dokončený projekt.
cd gs-spring-boot-docker cd complete
Pomocí Mavenu sestavte a spusťte ukázkovou aplikaci.
mvn package spring-boot:run
Otestujte webovou aplikaci tak, že přejdete na adresu
http://localhost:8080
, nebo pomocí následujícího příkazucurl
:curl http://localhost:8080
Měla by se zobrazit následující zpráva: Hello Docker World
Vytvoření registru kontejneru Azure pomocí Azure CLI
Otevřete příkazový řádek.
Přihlaste se ke svému účtu Azure:
az login
Zvolte své předplatné Azure:
az account set -s <YourSubscriptionID>
Vytvořte skupinu prostředků pro prostředky Azure použité v tomto kurzu.
az group create --name=wingtiptoys-kubernetes --location=eastus
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
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
Otevřete soubor pom.xml pomocí textového editoru, například Visual Studio Code.
code pom.xml
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>
Aktualizujte kolekci
<plugins>
v souboru pom.xml tak, aby element<plugin>
obsahoval položku projib-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>
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
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.
Nainstalujte
kubectl
pomocí Azure CLI. Uživatelé Linuxu možná budou muset před tento příkaz přidatsudo
, protože příkaz nasadí rozhraní příkazového řádku Kubernetes do umístění/usr/local/bin
.az aks install-cli
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 pak můžete prozkoumat nasazení prostřednictvím webového rozhraní Kubernetes.
Nasazení pomocí kubectl
Otevřete příkazový řádek.
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říkazemrun
.Parametr
--image
určuje kombinovaný přihlašovací server a název image jakowingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest
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říkazemexpose 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.
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}'
Nasazení pomocí zobrazení prostředků Kubernetes
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).
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
Aplikaci nasadíte výběrem možnosti Přidat v dolní části editoru YAML.
Po nasazení editoru
Deployment
YAML vyberte Přidat v dolní části editoru YAML a nasaďteService
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
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.
Vyberte externí IP adresu. Zobrazí se aplikace Spring Boot spuštěná 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.