Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Notatka
W przypadku aplikacji Spring Boot użyj Azure Container Apps. Można jednak nadal używać usługi Azure Kubernetes Service jako miejsca docelowego. Aby uzyskać więcej informacji, zobacz Wybieranie odpowiednich usług platformy Azure dla aplikacji Java.
W tym samouczku pokazano, jak używać Kubernetes i Dockera do tworzenia oraz wdrażania aplikacji Spring Boot na platformie Microsoft Azure. W szczególności używasz Spring Boot do tworzenia aplikacji, Kubernetes na potrzeby wdrażania kontenerów oraz usługi Azure Kubernetes Service (AKS) do hostowania aplikacji.
kubernetes i docker to rozwiązania typu open source, które ułatwiają deweloperom automatyzowanie wdrażania, skalowania i zarządzania aplikacjami działającymi w kontenerach.
Warunki wstępne
- Subskrypcja Azure; jeśli nie masz jeszcze subskrypcji Azure, aktywuj korzyści subskrybenta MSDN lub zarejestruj się w celu uzyskania bezpłatnego konta Azure.
- Interfejs wiersza polecenia (CLI) platformy Azure Command-Line.
- Obsługiwany Java Development Kit (JDK). Aby uzyskać więcej informacji na temat zestawów JDK dostępnych do użycia podczas tworzenia aplikacji na platformie Azure, zobacz obsługa języka Java na platformie Azure i w usłudze Azure Stack.
- Narzędzie do kompilacji Maven apache (wersja 3).
- Klient Git.
- Klient Docker
. - Pomocnik do zarządzania poświadczeniami ACR Docker .
Notatka
Ze względu na wymagania dotyczące wirtualizacji tego samouczka nie można wykonać kroków opisanych w tym artykule na maszynie wirtualnej. Należy użyć komputera fizycznego z włączonymi funkcjami wirtualizacji.
Tworzenie aplikacji internetowej Spring Boot na platformie Docker — wprowadzenie
Poniższe kroki przeprowadzą Cię przez proces tworzenia aplikacji internetowej Spring Boot i testowania jej lokalnie.
Otwórz wiersz polecenia i utwórz katalog lokalny do przechowywania aplikacji i przejdź do tego katalogu; na przykład:
mkdir C:\SpringBoot cd C:\SpringBoot-- lub --
mkdir /users/$USER/SpringBoot cd /users/$USER/SpringBootSklonuj przykładowy projekt Spring Boot na platformie Docker Getting Started do katalogu.
git clone https://github.com/spring-guides/gs-spring-boot-docker.gitZmień katalog na ukończony projekt.
cd gs-spring-boot-docker cd completeUżyj narzędzia Maven, aby skompilować i uruchomić przykładową aplikację.
mvn package spring-boot:runPrzetestuj aplikację internetową, przechodząc do
http://localhost:8080lub za pomocą następującego poleceniacurl:curl http://localhost:8080Zostanie wyświetlony następujący komunikat: Hello Docker World
Tworzenie usługi Azure Container Registry przy użyciu interfejsu wiersza polecenia platformy Azure
Otwórz wiersz polecenia.
Zaloguj się do swojego konta platformy Azure:
az loginWybierz subskrypcję Azure:
az account set -s <YourSubscriptionID>Utwórz grupę zasobów dla zasobów platformy Azure używanych w tym samouczku.
az group create --name=wingtiptoys-kubernetes --location=eastusUtwórz prywatny rejestr kontenerów platformy Azure w grupie zasobów. Samouczek publikuje przykładową aplikację jako obraz Docker do tego rejestru w późniejszych krokach. Zastąp
wingtiptoysregistryunikatową nazwą rejestru.az acr create --resource-group wingtiptoys-kubernetes --location eastus \ --name wingtiptoysregistry --sku Basic
Wypchnij swoją aplikację do rejestru kontenerów za pomocą narzędzia Jib
Zaloguj się do 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 loginOtwórz plik pom.xml za pomocą edytora tekstów, takiego jak Visual Studio Code.
code pom.xml<properties>Zaktualizuj kolekcję w pliku pom.xml przy użyciu nazwy rejestru usługi Azure Container Registry i najnowszej wersji programujib-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>Zaktualizuj kolekcję
<plugins>w pliku pom.xml, tak aby element<plugin>zawierał wpisjib-maven-plugin, jak pokazano w poniższym przykładzie. Użyj obrazu podstawowego z Microsoft Container Registry (MCR):mcr.microsoft.com/openjdk/jdk:11-ubuntu, który zawiera oficjalnie obsługiwany zestaw JDK dla Azure. W przypadku innych obrazów podstawowych MCR z oficjalnie obsługiwanymi środowiskami JDK zobacz Instalowanie kompilacji Microsoft Build of 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>Przejdź do katalogu ukończonego projektu aplikacji Spring Boot i uruchom następujące polecenie, aby skompilować obraz i wypchnąć obraz do rejestru:
az acr login && mvn compile jib:build
Notatka
Ze względów bezpieczeństwa poświadczenie utworzone przy użyciu az acr login jest ważne przez jedną godzinę. Jeśli zobaczysz błąd 401 Unauthorized, uruchom ponownie polecenie az acr login --name <your registry name>, aby ponownie się uwierzytelnić. Jeśli pojawi się błąd Read timed out, spróbuj zwiększyć wartość limitu czasu za pomocą polecenia mvn -Djib.httpTimeout=7200000 jib:dockerBuild lub użyć -Djib.httpTimeout=0, aby ustawić nieskończony limit czasu.
Tworzenie klastra Kubernetes w usłudze AKS przy użyciu Azure CLI
Utwórz klaster Kubernetes w usłudze Azure Kubernetes Service. Następujące polecenie tworzy klaster Kubernetes w grupie zasobów
wingtiptoys-kubernetes, o nazwiewingtiptoys-akscluster, z dołączonym rejestrem Azure Container Registry (ACR)wingtiptoysregistryoraz z prefiksem DNSwingtiptoys-kubernetes:az aks create --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster \ --attach-acr wingtiptoysregistry \ --dns-name-prefix=wingtiptoys-kubernetes --generate-ssh-keysWykonanie tego polecenia może zająć trochę czasu.
Zainstaluj
kubectlprzy użyciu interfejsu wiersza polecenia platformy Azure. Użytkownicy systemu Linux mogą potrzebować poprzedzić to polecenie elementemsudo, ponieważ instaluje ono narzędzie wiersza polecenia Kubernetes w/usr/local/bin.az aks install-cliPobierz informacje o konfiguracji klastra, aby można było zarządzać klastrem z interfejsu internetowego Kubernetes i
kubectl.az aks get-credentials --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster
Wdróż obraz do swojego klastra Kubernetes
Ten samouczek wdraża aplikację przy użyciu programu kubectl, a następnie możesz eksplorować wdrożenie za pomocą interfejsu internetowego platformy Kubernetes.
Wdrażanie za pomocą narzędzia kubectl
Otwórz wiersz polecenia.
Uruchom kontener w klastrze Kubernetes przy użyciu polecenia
kubectl run. Nadaj nazwę usługi dla swojej aplikacji na rzecz Kubernetes oraz podaj pełną nazwę obrazu. Na przykład:kubectl run gs-spring-boot-docker --image=wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latestW tym poleceniu:
Nazwę kontenera
gs-spring-boot-dockernależy określić bezpośrednio po poleceniurun.Parametr
--imageokreśla połączony serwer logowania i nazwę obrazu jakowingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest.
Uwidaczniaj klaster Kubernetes zewnętrznie przy użyciu polecenia
kubectl expose. Określ nazwę usługi, publiczny port TCP używany do uzyskiwania dostępu do aplikacji oraz wewnętrzny port docelowy, na którym nasłuchuje aplikacja. Na przykład:kubectl expose pod gs-spring-boot-docker --type=LoadBalancer --port=80 --target-port=8080W tym poleceniu:
Nazwę kontenera
gs-spring-boot-dockernależy określić bezpośrednio po poleceniuexpose pod.Parametr
--typeokreśla, że klaster używa modułu równoważenia obciążenia.Parametr
--portokreśla publiczny port TCP 80. Uzyskujesz dostęp do aplikacji na tym porcie.Parametr
--target-portokreśla wewnętrzny port TCP 8080. Moduł równoważenia obciążenia przekazuje żądania do aplikacji na tym porcie.
Po wdrożeniu aplikacji w klastrze wykonaj zapytanie o zewnętrzny adres IP i otwórz go w przeglądarce internetowej:
kubectl get services -o=jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}'
Wdrażanie za pomocą widoku zasobów platformy Kubernetes
Wybierz pozycję Dodaj z dowolnego z widoków zasobów (przestrzeń nazw, obciążenia, usługi i ruch przychodzący, magazyn lub konfiguracja).
Wklej następujący kod 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:latestWybierz pozycję Dodaj u dołu edytora YAML, aby wdrożyć aplikację.
Po wdrożeniu elementu
Deployment, podobnie jak w poprzednim kroku, wybierz pozycję Dodaj w dolnej części edytora YAML, aby wdrożyćServiceprzy użyciu następującego kodu 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 dodaniu pliku YAML przeglądarka zasobów wyświetli aplikację Spring Boot. Usługa zewnętrzna zawiera połączony zewnętrzny adres IP, dzięki czemu można łatwo wyświetlić aplikację w przeglądarce.
Wybierz zewnętrzny adres IP. Widzisz swoją aplikację Spring Boot działającą na platformie Azure.
Następne kroki
Aby dowiedzieć się więcej na temat platformy Spring i platformy Azure, przejdź do Centrum dokumentacji platformy Azure.
Zobacz też
Aby uzyskać więcej informacji na temat korzystania z platformy Spring Boot na platformie Azure, zobacz następujący artykuł:
Aby uzyskać więcej informacji na temat korzystania z platformy Azure z językiem Java, zobacz Azure for Java Developers oraz Praca z usługami Azure DevOps i Java.
Aby uzyskać więcej informacji na temat wdrażania aplikacji Java na platformie Kubernetes przy użyciu programu Visual Studio Code, zobacz Samouczki java programu Visual Studio Code.
Aby uzyskać więcej informacji na temat przykładowego projektu Spring Boot on Docker, zobacz Spring Boot on Docker Getting Started.
Poniższe linki zawierają więcej informacji na temat tworzenia aplikacji Spring Boot:
- Aby uzyskać więcej informacji na temat tworzenia prostej aplikacji Spring Boot, zobacz spring initializr pod adresem https://start.spring.io/.
Poniższe linki zawierają więcej informacji na temat korzystania z platformy Kubernetes z Azure:
Aby uzyskać więcej informacji na temat korzystania z interfejsu wiersza polecenia platformy Kubernetes, zobacz przewodnik użytkownika narzędzia kubectl pod adresem https://kubernetes.io/docs/reference/kubectl/.
Witryna internetowa platformy Kubernetes zawiera kilka artykułów, które omawiają używanie obrazów w prywatnych rejestrach:
Aby uzyskać więcej przykładów używania niestandardowych obrazów platformy Docker z Azure, zobacz Using a custom Docker image for Azure Web App on Linux (Używanie niestandardowego obrazu platformy Docker dla aplikacji internetowej Azure w systemie Linux).
Aby uzyskać więcej informacji na temat iteratywnego uruchamiania i debugowania kontenerów bezpośrednio w usłudze Azure Kubernetes Service (AKS) za pomocą usługi Azure Dev Spaces, zobacz Wprowadzenie do usługi Azure Dev Spaces za pomocą usługi Java.