Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
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/SpringBootNaklonujte do adresáře ukázkový projekt Spring Boot v Dockeru Začínáme.
git clone https://github.com/spring-guides/gs-spring-boot-docker.gitPřejděte do adresáře dokončeného projektu.
cd gs-spring-boot-docker cd completePomocí Mavenu sestavte a spusťte ukázkovou aplikaci.
mvn package spring-boot:runOtestujte webovou aplikaci tak, že přejdete na
http://localhost:8080nebo pomocí následujícího příkazucurl:curl http://localhost:8080Měla by se zobrazit následující zpráva: Hello Docker World
Vytvoření služby Azure Container Registry pomocí Azure CLI
Otevřete příkazový řádek.
Přihlaste se ke svému účtu Azure:
az loginZvolte 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=eastusVytvoř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
wingtiptoysregistryjedineč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
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 loginOtevřete soubor pom.xml pomocí textového editoru; například Visual Studio Code.
code pom.xmlAktualizujte 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>Aktualizujte kolekci
<plugins>v souboru pom.xml tak, aby prvek<plugin>obsahoval položku projib-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>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
Vytvořte cluster Kubernetes ve službě Azure Kubernetes Service. Následující příkaz vytvoří cluster Kubernetes ve skupině prostředků
wingtiptoys-kubernetesswingtiptoys-aksclusterjako názvem clusteru, připojeným službou Azure Container Registry (ACRwingtiptoysregistry) awingtiptoys-kubernetesjako předponu DNS:az aks create --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster \ --attach-acr wingtiptoysregistry \ --dns-name-prefix=wingtiptoys-kubernetes --generate-ssh-keysDokončení tohoto příkazu může chvíli trvat.
Nainstalujte
kubectlpomocí Azure CLI. Uživatelé Linuxu možná budou muset tento příkaz předponovatsudo, protože nasadí rozhraní příkazového řádku Kubernetes do/usr/local/bin.az aks install-cliStá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
Otevřete příkazový řádek.
Spuštění kontejneru v clusteru Kubernetes pomocí příkazu
kubectl runZadejte 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:latestV tomto příkazu:
Název kontejneru
gs-spring-boot-dockerse zadává hned za příkazemrun.Parametr
--imageurčuje kombinovaný přihlašovací server a název image jakowingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest
Externí zveřejnění clusteru Kubernetes pomocí příkazu
kubectl exposeZadejte 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=8080V tomto příkazu:
Název kontejneru
gs-spring-boot-dockerse zadává hned za příkazemexpose pod.Parametr
--typeurčuje, že cluster používá nástroj pro vyrovnávání zatížení.Parametr
--porturčuje veřejně přístupný port TCP 80. K aplikaci se dostanete na tento port.Parametr
--target-porturčuje interní port TCP 8080. Nástroj pro vyrovnávání zatížení předává požadavky vaší aplikaci na tomto portu.
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}'
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:latestVyberte Přidat v dolní části editoru YAML a nasaďte aplikaci.
Po nasazení
Deploymentstejně jako výše zvolte možnost Přidat v dolní části editoru YAML a poté nasaďteServicepomocí 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-dockerPo 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. Zobrazí se aplikace Spring Boot spuštěná 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