Kubernetes : Déployer une application Spring Boot
Dans ce tutoriel, vous utiliserez un compte Oracle Cloud Infrastructure pour configurer une grappe Kubernetes. Ensuite, vous déploierez une application Spring Boot dans votre grappe.
Voici les principales tâches :
- Configurer une grappe Kubernetes sur OCI.
- Configurer l'interface CLI OCI pour accéder à votre grappe.
- Créer une application Spring Boot et une image Docker.
- Pousser l'image vers le registre de conteneurs pour OCI.
- Déployer l'application Docker dans votre grappe.
- Vous connecter à votre application à partir d'Internet.

Pour plus d'informations, voir :
Étapes préliminaires
Pour suivre ce tutoriel, vous devez disposer des éléments suivants :
- Pour Container Registry, Kubernetes et les équilibreurs de charge :
- Un compte Oracle Cloud Infrastructure payant.
- Voir Inscription à Oracle Cloud Infrastructure.
- Pour créer des applications et des images Docker :
- L'un des environnements locaux suivants :
- Une machine MacOS ou Linux.
- Une machine Windows prenant en charge Linux. Par exemple :
- Les applications suivantes sur votre environnement local :
- JDK 11, et définissez JAVA_HOME dans .bashrc.
- Le programme d'installation de Python 3.6.8+ et pip pour Python 3
- Kubernetes Client 1.11.9+
- Apache Maven 3.0+
- Docker 19.0.3+
- Git 1.8+
- L'un des environnements locaux suivants :
Si vous ne souhaitez pas configurer les applications requises dans votre environnement local, vous pouvez utiliser Cloud Shell pour Oracle Cloud Infrastructure à la place. Avec Cloud Shell, tous les outils nécessaires pour gérer votre application sont déjà installés et prêts à l'emploi, ce qui présente un certain avantage. Effectuez les étapes décrites dans :
Kubernetes avec Cloud Shell : Déployer une application Spring Boot
Si vous souhaitez utiliser une instance de calcul Linux gratuite pour OCI afin de gérer votre déploiement, consultez les sections suivantes pour savoir comment installer les logiciels requis.
- Installez une machine virtuelle Linux avec une forme de calcul de type Toujours gratuit sur Oracle Cloud Infrastructure. Vous aurez besoin d'une machine prenant en charge
ssh
pour vous connecter à votre instance Linux.- Installer une machine virtuelle Oracle Linux
- Suivez les sections 2 et 3.
- Si vous disposez d'un compte payant, pour la section 2, sélectionnez vos options de calcul en fonction de vos offres.
- Pour vous connecter à votre instance, effectuez les étapes 1 à 5 de la section 4.
- Ignorez les instructions Apache.
- Installer une machine virtuelle Ubuntu
- Suivez les sections 2 et 3.
- Si vous disposez d'un compte payant, pour la section 2, sélectionnez des options de calcul en fonction de vos offres.
- Pour vous connecter à votre instance, effectuez les étapes 1 à 5 de la section 4.
- Ignorez les instructions Apache.
- Pour mettre à jour les paramètres du pare-feu, effectuez l'étape 8 de la section 4.
- Installer une machine virtuelle Oracle Linux
- Vérifiez votre installation courante :
java -version
- Pour installer JDK 11, exécutez les commandes suivantes :
- Oracle Linux :
sudo yum update
yum list jdk*
sudo yum install -y <jdk-version-of-your-choice>
- Ubuntu :
sudo apt update
sudo apt install -y openjdk-11-jdk-headless
- Oracle Linux :
- Vérifiez l'installation.
java -version
- Définissez
JAVA_HOME
dans.bashrc
.Mettez à jour le fichier :
vi .bashrc
Saisissez le texte suivant dans le fichier et enregistrez celui-ci :
# set JAVA_HOME export JAVA_HOME=<path-to-jdk>
Exemples :
# set JAVA_HOME in Oracle Linux export JAVA_HOME=/usr/java/jdk-11.0.10
# set JAVA_HOME in Ubuntu export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
- Activez la commande précédente dans la fenêtre courante.
source ~/.bashrc
- Vérifiez votre installation courante.
python3 --version
- Pour Python 3, exécutez les commandes suivantes :
- Oracle Linux :
sudo yum update
sudo yum install -y python3
- Ubuntu :
sudo apt update
sudo apt install -y python3
- Oracle Linux :
- Vérifiez l'installation de pip pour Python3.
pip3 -V
Exemple de sortie si pip pour Python3 est installé :
pip <version> from xxx/lib/python3.x/site-packages/pip (python 3.x)
- Pour installer pip pour Python 3, exécutez les commandes suivantes :
- Oracle Linux :
sudo yum update
sudo yum install -y python3-pip
- Ubuntu :
sudo apt update
sudo apt install -y python3-pip
- Oracle Linux :
- Vérifiez l'installation de pip pour Python 3.
pip3 -V
- Vérifiez votre installation courante :
kubectl version --client
Si vous disposez de Kubernetes, la version est<major-version>.<minor-version>
. Par exemple, pour la version 1.20, voici ce que vous obtenez :version.Info{Major:"1", Minor:"20"...
- Pour installer le client
kubectl
, consultez les liens suivants : - Vérifiez l'installation.
kubectl version --client
- Vérifiez votre installation courante.
mvn --version
- Pour installer Apache Maven, consultez les liens suivants :
- Vérifiez l'installation.
mvn --version
- Vérifiez votre installation courante :
docker -v
- Oracle Linux
Pour installer Docker sur Oracle Linux, exécutez les commandes suivantes.
sudo yum install docker-engine
sudo systemctl start docker
sudo systemctl enable docker
Note : La dernière commande permet à Docker de démarrer lors des redémarrages.
- Ubuntu Linux
Pour installer Docker sur Ubuntu Linux, consultez le lien suivant : Obtenir Docker
- Vérifiez l'installation.
docker -v
1. Préparer
Préparez votre environnement pour créer et déployer votre application.
- Connectez-vous à la console Oracle Cloud Infrastructure.
- Ouvrez le menu de navigation et cliquez sur Gouvernance et administration. Sous Gouvernance, cliquez sur Limites, quotas et utilisation.
- Déterminez votre limite de service pour Régions :
- Définissez un filtre pour les options suivantes :
- Service : Régions
- Portée : Location
- Ressource : Nombre de régions abonnées
- compartiment :
<tenancy-name>
(racine)
- Recherchez la limite de service :
- Nom de la limite :
subscribed-region-count
- Limite de service : 2 au minimum
- Nom de la limite :
- Définissez un filtre pour les options suivantes :
- Déterminez le nombre de coeurs de calcul disponibles pour la forme VM.Standard.E3.Flex :
- Définissez un filtre pour les options suivantes :
- Service : Calcul
- Portée :
<first-availability-domain>
. Exemple :EMlr:US-ASHBURN-AD-1
- Ressource : Coeurs pour Standard.E3.Flex et les instances BM.Standard.E3.128
- compartiment :
<tenancy-name>
(racine)
- Recherchez le nombre de coeurs disponibles :
- Nom de la limite :
standard-e3-core-ad-count
- Disponible : 1 au minimum
- Nom de la limite :
- Répétez l'opération pour Portée :
<second-availability-domain>
et<third-availability-domain>
. Chaque région doit comporter au moins un coeur disponible pour cette forme.
- Définissez un filtre pour les options suivantes :
- Déterminez si vous disposez de 50 Go de volume par blocs disponibles :
- Définissez un filtre pour les options suivantes :
- Service : Volume par blocs
- Portée :
<first-availability-domain>
. Exemple :EMlr:US-ASHBURN-AD-1
- Taille du volume de ressource (Go)
- compartiment :
<tenancy-name>
(racine)
- Déterminez le stockage de volume par blocs dont vous disposez :
- Nom de la limite :
total-storage-gb
- Disponible : 50 au minimum
- Nom de la limite :
- Répétez l'opération pour Portée :
<second-availability-domain>
et<third-availability-domain>
. Chaque région doit disposer d'au moins 50 Go de volume par blocs disponibles.
- Définissez un filtre pour les options suivantes :
- Déterminez le nombre d'équilibreurs de charge flexibles dont vous disposez :
- Définissez un filtre pour les options suivantes :
- Service : LbaaS
- Portée :
<your-region>
. Exemple :us-ashburn-1
- Source :
<blank>
- compartiment :
<tenancy-name>
(racine)
- Déterminez le nombre d'équilibreurs de charge flexibles disponibles :
- Nom de la limite :
lb-flexible-count
- Disponible : 1 au minimum
- Nom de la limite :
- Définissez un filtre pour les options suivantes :
Ce tutoriel crée trois instances de calcul avec une forme VM.Standard.E3.Flex pour les noeuds de grappe. Pour utiliser une autre forme, définissez un filtre pour son nombre de coeurs. Par exemple, pour VM.Standard2.4, définissez un filtre pour Coeurs pour les instances de machine virtuelle et sans système d'exploitation basées sur Standard2 et obtenez le nombre.
Pour obtenir la liste de toutes les formes, voir Formes standard.
Ce tutoriel utilise un flux de travail de création rapide pour créer une grappe avec un sous-réseau régional public qui héberge un équilibreur de charge flexible. Pour utiliser un autre équilibreur de charge, vous pouvez utiliser un flux de travail personnalisé afin de spécifier explicitement les ressources de réseau existantes à utiliser, y compris les sous-réseaux existants dans lesquels créer les équilibreurs de charge.
Pour utiliser une autre bande passante pour l'équilibreur de charge, définissez un filtre pour son nombre, par exemple Bande passante de 100 Mbits/s ou Bande passante de 400 Mbits/s.
- Dans la barre de navigation, sélectionnez le menu Profil, puis sélectionnez Paramètres de l'utilisateur ou Mon profil, selon l'option que vous voyez.
- Cliquez sur Jetons d'authentification.
- Cliquez sur Générer un jeton.
- Indiquez une description.
- Cliquez sur Générer un jeton.
- Copiez le jeton et enregistrez-le.
- Cliquez sur Fermer.
Enregistrez votre jeton juste après l'avoir créé. Vous ne pourrez plus y accéder ultérieurement.
L'environnement virtuel Python virtualenv
crée un dossier contenant tous les exécutables et bibliothèques de votre projet.
L'encapsuleur virtualenvwrapper
est une extension de virtualenv
. Il fournit un ensemble de commandes, ce qui rend le travail avec des environnements virtuels beaucoup plus agréable. De plus, il réunit tous vos environnements virtuels au même endroit. L'encapsuleur virtualenvwrapper
active le remplissage à l'aide de la touche de tabulation pour les noms d'environnement.
- Installez
virtualenv
.pip3 install --user virtualenv
- Installez
virtualenvwrapper
.pip3 install --user virtualenvwrapper
- Recherchez l'emplacement du script
virtualenvwrapper.sh
.grep -R virtualenvwrapper.sh
Exemples de chemins :- Exemple pour Linux :
/home/ubuntu/.local/bin/virtualenvwrapper.sh
- Exemple pour MacOS :
/usr/local/bin/virtualenvwrapper.sh
- Exemple pour Linux :
- Configurez l'encapsuleur d'environnement virtuel dans
. bashrc
.sudo vi .bashrc
Ajoutez le texte suivant.
# set up Python env export WORKON_HOME=~/envs export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS=' -p /usr/bin/python3 ' source <path-to-virtualenvwrapper.sh>
Remplacez
<path-to-virtualenvwrapper.sh>
par sa valeur.En fonction de l'emplacement des binaires Python3 dans votre environnement, mettez à jour
/usr/bin/python3
avec son emplacement correct.Enregistrez le fichier.
- Activez les commandes dans la fenêtre courante.
source ~/.bashrc
Exemple de sortie :virtualenvwrapper.user_scripts creating /home/ubuntu/envs/premkproject virtualenvwrapper.user_scripts creating /home/ubuntu/envs/postmkproject virtualenvwrapper.user_scripts creating /home/ubuntu/envs/initialize virtualenvwrapper.user_scripts creating /home/ubuntu/envs/premkvirtualenv virtualenvwrapper.user_scripts creating /home/ubuntu/envs/postmkvirtualenv virtualenvwrapper.user_scripts creating /home/ubuntu/envs/prermvirtualenv virtualenvwrapper.user_scripts creating /home/ubuntu/envs/postrmvirtualenv virtualenvwrapper.user_scripts creating /home/ubuntu/envs/predeactivate virtualenvwrapper.user_scripts creating /home/ubuntu/envs/postdeactivate virtualenvwrapper.user_scripts creating /home/ubuntu/envs/preactivate virtualenvwrapper.user_scripts creating /home/ubuntu/envs/postactivate
- Démarrez un environnement virtuel.
workon cli-app
- Vérifiez que le nom de votre environnement virtuel,
cli-app
, précède votre invite de commande.Exemple :
(cli-app) ubuntu@<ubuntu-instance-name:~$
- Installez l'interface CLI OCI.
pip3 install oci-cli
- Testez l'installation :
oci --version
Si tout est configuré correctement, la version s'affiche.
oci --help
- Entrez la commande suivante dans votre environnement virtuel :
oci setup config
- Entrez vos réponses obtenues à la section Collecter les informations requises :
- Emplacement de votre configuration [$HOME/.oci/config] :
<utiliser la valeur par défaut>
- OCID d'utilisateur :
<user-ocid>
- OCID de la location :
<tenancy-ocid>
- Région (par exemple, us-ashburn-1) :
<region-identifier>
- Emplacement de votre configuration [$HOME/.oci/config] :
- Entrez les informations suivantes pour configurer vos clés de chiffrement d'API OpenSSL :
- Générer une nouvelle paire de clés RSA de signature d'API? [O/n]: O
- Répertoire de vos clés [$HOME/.oci] :
<utiliser la valeur par défaut>
- Nom de votre clé [oci_api_key]
<utiliser la valeur par défaut>
- Désactivez l'environnement virtuel :
deactivate
Le préfixe
(cli-app)
n'est plus affiché devant le nom de votre environnement.
Votre clé privée est
oci_api_key.pem
et votre clé publique est oci_api_key_public.pem
.- Activez l'environnement
cli-app
:workon cli-app
- Affichez la clé publique.
cat $HOME/.oci/oci_api_key_public.pem
- Copiez la clé publique.
- Ajoutez la clé publique à votre compte d'utilisateur :
- Allez à la console.
- Dans la barre de navigation, sélectionnez le menu Profil, puis sélectionnez Paramètres de l'utilisateur ou Mon profil, selon l'option que vous voyez.
- Cliquez sur Clés d'API.
- Cliquez sur Ajouter une clé d'API.
- Cliquez sur Coller la clé publique.
- Collez la valeur de l'étape précédente, y compris les lignes contenant
BEGIN PUBLIC KEY
etEND PUBLIC KEY
- Cliquez sur Ajouter.
- Chaque fois que vous souhaitez utiliser l'interface CLI OCI, activez-la en tapant :
workon cli-app
- Lorsque vous modifiez des noms de projet,
workon
désactive votre environnement de travail courant. De cette façon, vous pouvez rapidement passer d'un environnement à l'autre.
2. Configurer une grappe
Installez et configurez des options de gestion pour votre grappe Kubernetes. Plus tard, vous déploierez votre application dans cette grappe.
Si votre nom d'utilisateur figure dans le groupe Administrateurs, ignorez cette section. Sinon, demandez à votre administrateur d'ajouter la politique suivante à votre location :
allow group <the-group-your-username-belongs> to manage compartments in tenancy
Grâce à ce privilège, vous pouvez créer un compartiment pour toutes les ressources de votre tutoriel.
- Dans la barre de navigation, sélectionnez le menu Profil, puis sélectionnez Paramètres de l'utilisateur ou Mon profil, selon l'option que vous voyez.
- Dans l'onglet de gauche, cliquez sur Groupes.
- Dans un bloc-notes, copiez le nom de groupe auquel appartient votre nom d'utilisateur.
- Ouvrez le menu de navigation et cliquez sur Identité et sécurité. Sous Identité, cliquez sur Politiques.
- Sélectionnez votre compartiment dans la liste déroulante Compartiments.
- Cliquez sur Créer une politique.
- Entrez les informations suivantes :
- Nom :
manage-compartments
- Description :
Allow the group <the-group-your-username-belongs> to list, create, update, delete and recover compartments in the tenancy.
- Compartiment :
<your-tenancy>(root)
- Nom :
- Pour Générateur de politiques, cliquez sur Afficher l'éditeur manuel.
- Collez la politique suivante :
allow group <the-group-your-username-belongs> to manage compartments in tenancy
- Cliquez sur Créer.
Informations de référence : Type de ressource compartments
dans Informations détaillées sur les combinaisons Verbes + Type de ressource pour GIA
Créez un compartiment pour les ressources que vous allez créer dans ce tutoriel.
- Connectez-vous à la console Oracle Cloud Infrastructure.
- Ouvrez le menu de navigation et cliquez sur Identité et sécurité. Sous Identité, cliquez sur Compartiments.
- Cliquez sur Créer un compartiment.
- Entrez les informations suivantes :
- Nom :
<your-compartment-name>
- Description :
Compartiment pour <your-description>.
- Compartiment parent :
<your-tenancy>(root)
- Nom :
- Cliquez sur Créer un compartiment.
Informations de référence : Créer un compartiment
Si votre nom d'utilisateur figure dans le groupe Administrateurs, ignorez cette section. Sinon, demandez à votre administrateur d'ajouter la politique suivante à votre location :
allow group <the-group-your-username-belongs> to manage all-resources in compartment <your-compartment-name>
Avec ce privilège, qui vous accorde essentiellement des droits administratifs sur le compartiment, vous pouvez gérer toutes les ressources contenues dans celui-ci.
- Ouvrez le menu de navigation et cliquez sur Identité et sécurité. Sous Identité, cliquez sur Politiques.
- Sélectionnez votre compartiment dans la liste déroulante Compartiments.
- Cliquez sur Créer une politique.
- Entrez les informations suivantes :
- Nom :
manage-<your-compartment-name>-resources
- Description :
Autoriser les utilisateurs à lister, créer, mettre à jour et supprimer des ressources dans <your-compartment-name>.
- Compartiment :
<your-tenancy>(root)
- Nom :
- Pour Générateur de politiques, sélectionnez les options suivantes :
- Cas d'utilisation de politique :
Compartment Management
- Modèles de politique commune :
Let compartment admins manage the compartment
- Groupes :
<the-group-your-username-belongs>
- Emplacement :
<your-tenancy>(root)
- Cas d'utilisation de politique :
- Cliquez sur Créer.
Inférence : Service de politiques communes
Créez une grappe avec les paramètres par défaut et de nouvelles ressources de réseau au moyen du flux de travail "Création rapide".
Après avoir créé une grappe Kubernetes, configurez votre système local pour l'accès à la grappe.
Maintenant que vous avez configuré l'accès à la grappe, vous pouvez préparer votre application pour le déploiement.
3. Créer une application locale
Créez une application locale et une image Docker pour l'application.
Pour MacOS, vous pouvez supprimer
sudo
dans les commandes docker
.4. Déployer votre image Docker
Poussez votre image Docker Spring Boot vers le registre de conteneurs pour OCI. Utilisez ensuite l'image pour déployer votre application.
Pour MacOS, vous pouvez supprimer
sudo
dans les commandes docker
.Vous ne pouvez pousser que les images dont le nom comprend l'URL du registre.
Étape suivante
Félicitations! Vous avez créé une application Hello World, vous l'avez déployée dans une grappe Kubernetes et vous l'avez rendue accessible sur Internet à l'aide du cadre Spring Boot.
Pour en savoir plus sur le développement à l'aide des produits Oracle, consultez les sites suivants :