Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
Remarque
Pour les applications Spring Boot, utilisez Azure Container Apps. Toutefois, vous pouvez toujours utiliser Azure Kubernetes Service comme destination. Pour plus d’informations, consultez Choisissez les bons services Azure pour vos applications Java.
Ce tutoriel vous montre comment utiliser Kubernetes et Docker pour développer et déployer une application Spring Boot sur Microsoft Azure. Plus précisément, vous utilisez Spring Boot pour le développement d’applications, Kubernetes pour le déploiement de conteneurs et Azure Kubernetes Service (AKS) pour héberger votre application.
Kubernetes et Docker sont des solutions open source qui aident les développeurs à automatiser le déploiement, la mise à l’échelle et la gestion de leurs applications en cours d’exécution dans des conteneurs.
Prérequis
- Un abonnement Azure ; si vous n'avez pas encore d'abonnement Azure, activez les avantages de votre abonné MSDN ou inscrivez-vous à un compte de Azure gratuit.
- Azure CLI.
- Un kit de développement Java (JDK) pris en charge. Pour plus d’informations sur les JDK disponibles pour le développement sur Azure, consultez Prise en charge de Java sur Azure et Azure Stack.
- L’outil de génération Maven (version 3) d’Apache.
- Un client Git.
- Un client Docker.
- L’assistance des informations d’identification ACR Docker.
Remarque
En raison des exigences de virtualisation de ce didacticiel, vous ne pouvez pas suivre les étapes décrites dans cet article sur une machine virtuelle. Vous devez utiliser un ordinateur physique avec les fonctionnalités de virtualisation activées.
Créer l'application web de démarrage Spring Boot sur Docker
Les étapes suivantes vous guident à travers la création d’une application web Spring Boot et vous aident à effectuer le test en local.
Ouvrez une invite de commandes et créez un répertoire local pour contenir votre application, puis passez à ce répertoire ; par exemple :
mkdir C:\SpringBoot cd C:\SpringBoot-- ou --
mkdir /users/$USER/SpringBoot cd /users/$USER/SpringBootClonez l’exemple de projet Spring Boot on Docker Getting Started dans le répertoire.
git clone https://github.com/spring-guides/gs-spring-boot-docker.gitAccédez au répertoire du projet terminé.
cd gs-spring-boot-docker cd completeUtilisez Maven pour créer et exécuter l’exemple d’application.
mvn package spring-boot:runTestez l’application web en accédant à l’URL
http://localhost:8080, ou avec la commandecurlsuivante :curl http://localhost:8080Le message suivant s’affiche : Hello Docker World
Créer un registre de conteneurs Azure à l’aide de l’interface de ligne de commande Azure
Ouvrez une invite de commandes.
Connectez-vous à votre compte Azure :
az loginSélectionnez votre abonnement Azure :
az account set -s <YourSubscriptionID>Créer un groupe de ressources pour les ressources Azure utilisées dans ce didacticiel.
az group create --name=wingtiptoys-kubernetes --location=eastusCréez un registre de conteneurs Azure privé dans le groupe de ressources. Le tutoriel envoie l’exemple d’application en tant qu’image Docker à ce registre lors des étapes ultérieures. Remplacez
wingtiptoysregistrypar un nom unique pour votre registre.az acr create --resource-group wingtiptoys-kubernetes --location eastus \ --name wingtiptoysregistry --sku Basic
Envoyer l’application dans le registre de conteneurs via Jib
Connectez-vous à votre Azure Container Registry à partir du 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 loginOuvrez le fichier pom.xml avec un éditeur de texte, tel que Visual Studio Code.
code pom.xmlMettez à jour la
<properties>collection dans le fichier pom.xml avec le nom de Registre de votre registre Azure Container Registry et la dernière version dejib-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>Mettez à jour la collection
<plugins>dans le fichier pom.xml afin que l’élément<plugin>contienne une entrée pourjib-maven-plugincomme indiqué dans l’exemple ci-dessous. Utilisez une image de base de la Microsoft Container Registry (MCR) :mcr.microsoft.com/openjdk/jdk:11-ubuntuqui contient un JDK officiellement pris en charge pour Azure. Pour obtenir d’autres images de base MCR avec des JDK officiellement pris en charge, consultez Installer le Build Microsoft d’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>Accédez au répertoire de projet terminé pour votre application Spring Boot et exécutez la commande suivante pour générer l’image et envoyer (push) l’image au Registre :
az acr login && mvn compile jib:build
Remarque
Pour des raisons de sécurité, les informations d’identification que vous créez à l’aide az acr login sont valides pendant une heure. Si vous voyez une 401 Unauthorized erreur, réexécutez la az acr login --name <your registry name> commande pour réauthentifier. Si vous voyez une Read timed out erreur, essayez d’augmenter les délais d’expiration avec mvn -Djib.httpTimeout=7200000 jib:dockerBuildou d’utiliser -Djib.httpTimeout=0 pour un délai d’attente infini.
Créer un cluster Kubernetes sur AKS à l’aide de la Azure CLI
Créez un cluster Kubernetes dans Azure Kubernetes Service. La commande suivante crée un cluster Kubernetes dans le
wingtiptoys-kubernetesgroupe de ressources, avecwingtiptoys-aksclustercomme nom de cluster, avec Azure Container Registry (ACR)wingtiptoysregistryattaché etwingtiptoys-kubernetescomme préfixe DNS :az aks create --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster \ --attach-acr wingtiptoysregistry \ --dns-name-prefix=wingtiptoys-kubernetes --generate-ssh-keysL’exécution de cette commande peut prendre un certain temps.
Installez
kubectlà l’aide de l’interface de ligne de commande Azure. Les utilisateurs Linux peuvent avoir besoin de préfixer cette commandesudo, car elle déploie l’interface CLI Kubernetes sur/usr/local/bin.az aks install-cliTéléchargez les informations de configuration du cluster afin de pouvoir gérer votre cluster à partir de l’interface web Kubernetes et de
kubectl.az aks get-credentials --resource-group=wingtiptoys-kubernetes --name=wingtiptoys-akscluster
Déployer l’image sur votre cluster Kubernetes
Ce tutoriel déploie l’application à l’aide de kubectl, puis vous pouvez explorer le déploiement à travers l’interface web de Kubernetes.
Déployer avec kubectl
Ouvrez une invite de commandes.
Exécutez votre conteneur dans le cluster Kubernetes en utilisant la commande
kubectl run. Donnez un nom de service à votre application dans Kubernetes et saisissez le nom complet de l’image. Exemple :kubectl run gs-spring-boot-docker --image=wingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latestDans cette commande :
Vous spécifiez le nom
gs-spring-boot-dockerdu conteneur immédiatement après laruncommande.Le
--imageparamètre spécifie le serveur de connexion combiné et le nom de l’image en tant quewingtiptoysregistry.azurecr.io/gs-spring-boot-docker:latest.
Exposez votre cluster Kubernetes en externe à l’aide de la commande
kubectl expose. Spécifiez le nom de votre service, le port TCP destiné au public permettant d’accéder à l’application, et le port cible interne que votre application écoutera. Exemple :kubectl expose pod gs-spring-boot-docker --type=LoadBalancer --port=80 --target-port=8080Dans cette commande :
Vous spécifiez le nom
gs-spring-boot-dockerdu conteneur immédiatement après laexpose podcommande.Le paramètre
--typespécifie que le cluster utilise l’équilibreur de charge.Le paramètre
--portspécifie le port TCP 80 destiné au public. Vous accédez à l’application sur ce port.Le paramètre
--target-portspécifie le port TCP interne 8080. L’équilibreur de charge transmet les demandes à votre application sur ce port.
Après avoir déployé l’application sur le cluster, interrogez l’adresse IP externe et ouvrez-la dans votre navigateur web :
kubectl get services -o=jsonpath='{.items[*].status.loadBalancer.ingress[0].ip}'
Déployer avec l’affichage des ressources Kubernetes
Sélectionnez Ajouter à partir de l’un des affichages de ressources (espace de noms, charges de travail, services et entrées, stockage et configuration).
Collez le code YAML suivant :
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:latestSélectionnez Ajouter en bas de l’éditeur YAML pour déployer l’application.
Après avoir déployé le
Deployment, comme dans l’étape précédente, sélectionnez Ajouter en bas de l’éditeur YAML pour déployerServiceà l’aide du code YAML suivant :apiVersion: v1 kind: Service metadata: name: gs-spring-boot-docker spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: gs-spring-boot-dockerUne fois que vous avez ajouté le fichier YAML, la visionneuse de ressources affiche votre application Spring Boot. Le service externe comprend une adresse IP externe liée, ce qui vous permet d’afficher facilement l’application dans votre navigateur.
Sélectionnez Adresse IP externe. Votre application Spring Boot s’exécute sur Azure.
Étapes suivantes
Pour en savoir plus sur Spring et Azure, poursuivez vers le centre de documentation Spring sur Azure.
Voir aussi
Pour plus d’informations sur l’utilisation d’applications Spring Boot sur Azure, consultez l’article suivant :
Pour plus d’informations sur l’utilisation d’Azure avec Java, renseignez-vous sur Azure pour les développeurs Java et l’utilisation d’Azure DevOps et Java.
Pour plus d’informations sur le déploiement d’une application Java sur Kubernetes avec Visual Studio Code, consultez les didacticiels de Visual Studio Code Java.
Pour plus d’informations sur l’exemple de projet Spring Boot sur Docker, consultez Spring Boot on Docker Getting Started.
Les liens suivants fournissent plus d’informations sur la création d’applications Spring Boot :
- Pour plus d’informations sur la création d’une application Spring Boot simple, consultez Spring Initializr à l’adresse https://start.spring.io/.
Les liens suivants fournissent plus d’informations sur l’utilisation de Kubernetes avec Azure :
Pour plus d’informations sur l’utilisation de l’interface de ligne de commande Kubernetes, consultez le guide de l’utilisateur kubectl à l’adresse https://kubernetes.io/docs/reference/kubectl/.
Le site web Kubernetes comporte plusieurs articles traitant de l’utilisation d’images dans les registres privés :
- Configuration des comptes de service pour des pods
- Espaces de noms
- Extraction d’une image à partir d’un registre privé
Pour plus d’exemples d’utilisation d’images Docker personnalisées avec Azure, consultez Utilisation d’une image Docker personnalisée pour Azure Application web sur Linux.
Pour plus d’informations sur l’exécution itérative et le débogage de conteneurs directement dans Azure Kubernetes Service (AKS) avec Azure Dev Spaces, consultez Prise en main de Azure Dev Spaces avec Java.