Kubernetes : déploiement d'une application Spring Boot
Dans ce tutoriel, vous utilisez un compte Oracle Cloud Infrastructure pour configurer un cluster Kubernetes. Ensuite, vous déployez une application Spring Boot vers le cluster.
Les principales tâches expliquent comment :
- configurer un cluster Kubernetes sur OCI,
- configurer l'interface de ligne de commande OCI pour accéder au cluster,
- créer une application Spring Boot et une image Docker,
- propager l'image vers OCI Container Registry,
- déployer l'application Docker vers le cluster,
- vous connecter à l'application à partir d'Internet.

Pour plus d'informations, voir :
Avant de commencer
Pour suivre ce tutoriel, vous avez besoin des éléments suivants :
- Pour Container Registry, Kubernetes et les équilibreurs de charge :
- Un compte Oracle Cloud Infrastructure payant.
- Reportez-vous à Inscription à Oracle Cloud Infrastructure.
- Pour la création d'applications et d'images Docker :
- Un des environnements locaux suivants :
- Un ordinateur macOS ou Linux.
- Un ordinateur Windows prenant en charge Linux. Par exemple :
- Les applications suivantes sur l'environnement local :
- JDK 11 et JAVA_HOME dans .bashrc.
- Python 3.6.8+ et programme d'installation de pip pour Python 3
- Client Kubernetes 1.11.9+
- Apache Maven 3.0+
- Docker 19.0.3+
- Git 1.8+
- Un des environnements locaux suivants :
Si vous ne souhaitez pas configurer les applications requises sur l'environnement local, vous pouvez utiliser Oracle Cloud Infrastructure Cloud Shell à la place. L'avantage de Cloud Shell est que tous les outils nécessaires à la gestion de votre application sont déjà installés et prêts à être utilisés. Suivez les étapes décrites dans les ressources suivantes :
Kubernetes avec Cloud Shell : déploiement d'une application Spring Boot
Si vous souhaitez utiliser une instance de calcul Linux de niveau gratuit OCI pour gérer votre déploiement, vous trouverez les informations permettant d'installer le logiciel requis dans les sections suivantes.
- Installez une machine virtuelle Linux avec une forme de calcul Toujours gratuit sur Oracle Cloud Infrastructure. Vous avez besoin d'un ordinateur prenant en charge
ssh
pour vous connecter à l'instance Linux.- Installation d'une machine virtuelle Oracle Linux
- Suivez les sections 2 et 3.
- Si vous disposez d'un compte payant, pour la section 2, choisissez vos options de calcul en fonction de vos offres.
- Pour vous connecter à l'instance, dans la section 4, suivez les étapes 1 à 5.
- Ignorez les instructions Apache.
- Installation d'une machine virtuelle Ubuntu
- Suivez les sections 2 et 3.
- Si vous disposez d'un compte payant, pour la section 2, choisissez des options de calcul en fonction de vos offres.
- Pour vous connecter à l'instance, dans la section 4, suivez les étapes 1 à 5.
- Ignorez les instructions Apache.
- Pour mettre à jour les paramètres du pare-feu, dans la section 4, effectuez l'étape 8.
- Installation d'une machine virtuelle Oracle Linux
- Vérifiez l'installation en cours :
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
Ajoutez le texte ci-dessous à la fin du fichier, puis enregistrez ce dernier :
# 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 active.
source ~/.bashrc
- Vérifiez l'installation en cours.
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 l'installation en cours :
kubectl version --client
Si vous disposez de Kubernetes, la version est<version-majeure>.<version-mineure>
. Par exemple, pour la version 1.20, vous obtenez ce qui suit :version.Info{Major:"1", Minor:"20"...
- Pour installer le client
kubectl
, reportez-vous aux liens suivants : - Vérifiez l'installation.
kubectl version --client
- Vérifiez l'installation en cours.
mvn --version
- Pour installer Apache Maven, reportez-vous aux liens suivants :
- Vérifiez l'installation.
mvn --version
- Vérifiez l'installation en cours :
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
Remarque : la dernière commande permet à Docker de démarrer lors des redémarrages.
- Ubuntu Linux
Pour installer Docker sur Ubuntu Linux, reportez-vous à ce lien permettant d'obtenir Docker.
- Vérifiez l'installation.
docker -v
1. Préparation
Préparez votre environnement pour créer et déployer l'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.
- Recherchez la limite du service Regions :
- Filtrez sur les options suivantes :
- Service : Regions
- Portée : Location
- Ressource : nombre d'abonnements à des régions
- 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 :
- Filtrez sur les options suivantes :
- Recherchez le nombre de coeurs Compute disponibles pour la forme VM.Standard.E3.Flex :
- Filtrez sur les options suivantes :
- Service : Compute
- Portée :
<first-availability-domain>
. Exemple :EMlr:US-ASHBURN-AD-1
- Ressource : Coeurs pour les instances Standard.E3.Flex et 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 :
<deuxième-domaine-de-disponibilité>
et<troisième-domaine-de-disponibilité>
. Chaque région doit disposer d'au moins un coeur pour cette forme.
- Filtrez sur les options suivantes :
- Déterminez si vous disposez de 50 Go de volume de blocs :
- Filtrez sur les options suivantes :
- Service : Block Volume.
- Portée :
<first-availability-domain>
. Exemple :EMlr:US-ASHBURN-AD-1
- Ressource : Taille de volume (Go)
- Compartiment :
<tenancy-name>
(racine)
- Recherchez le stockage de volume de blocs disponible :
- Nom de la limite :
total-storage-gb
- Disponible : 50
- Nom de la limite :
- Répétez l'opération pour Portée :
<deuxième-domaine-de-disponibilité>
et<troisième-domaine-de-disponibilité>
. Chaque région doit disposer d'au moins 50 Go de volume de blocs.
- Filtrez sur les options suivantes :
- Déterminez le nombre d'équilibreurs de charge flexibles dont vous disposez :
- Filtrez sur les options suivantes :
- Service : LbaaS
- Portée :
<your-region>
. Exemple :us-ashburn-1
- Ressource :
<blank>
- Compartiment :
<tenancy-name>
(racine)
- Recherchez le nombre d'équilibreurs de charge flexibles disponibles :
- Nom de la limite :
lb-flexible-count
- Disponible : 1 au minimum.
- Nom de la limite :
- Filtrez sur les options suivantes :
Ce tutoriel crée trois instances de calcul avec la forme VM.Standard.E3.Flex pour les noeuds de cluster. Pour utiliser une autre forme, appliquez un filtre afin d'obtenir son nombre de coeurs. Par exemple, pour VM.Standard2.4, filtrez sur Coeurs pour les instances Bare Metal et de machine virtuelle basées sur Standard2 afin d'obtenir le nombre de coeurs.
Pour obtenir la liste de toutes les formes, reportez-vous à Formes standard de machine virtuelle.
Ce tutoriel utilise un workflow de création rapide pour créer un cluster avec un sous-réseau régional public hébergeant un équilibreur de charge flexible. Pour utiliser un autre équilibreur de charge, vous pouvez avoir recours à un workflow personnalisé afin d'indiquer explicitement les ressources réseau existantes à employer, y compris les sous-réseaux existants dans lesquels créer les équilibreurs de charge.
Afin d'utiliser une autre bande passante pour l'équilibreur de charge, appliquez un filtre afin d'obtenir le 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 utilisateur ou Mon profil, en fonction de 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.
Veillez à enregistrer le jeton dès qu'il est créé. Vous ne pourrez plus y accéder ultérieurement.
L'outil virtualenv
Python crée un dossier contenant tous les exécutables et toutes les bibliothèques de votre projet.
L'outil virtualenvwrapper
est une extension de virtualenv
. Il fournit un ensemble de commandes, ce qui rend l'utilisation des environnements virtuels beaucoup plus agréable. Il place également tous les environnements virtuels au même endroit. virtualenvwrapper
fournit une fonction de saisie semi-automatique par 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 chemin :- Exemple Linux :
/home/ubuntu/.local/bin/virtualenvwrapper.sh
- Exemple macOS :
/usr/local/bin/virtualenvwrapper.sh
- Exemple Linux :
- Configurez le wrapper d'environnement virtuel dans
.bashrc
.sudo vi .bashrc
Ajoutez le texte suivant à la fin.
# 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 la valeur de chemin correspondante.En fonction de l'emplacement des fichiers binaires Python3 dans l'environnement, remplacez
/usr/bin/python3
par l'emplacement correct.Enregistrez le fichier.
- Activez les commandes dans la fenêtre active.
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 l'environnement virtuel,
cli-app
, apparaît à gauche de l'invite de commande.Exemple :
(cli-app) ubuntu@<nom-instance-ubuntu>:~$
- Installez l'interface de ligne de commande OCI.
pip3 install oci-cli
- Testez l'installation :
oci --version
Si tout est correctement configuré, vous obtenez la version.
oci --help
- Saisissez la commande suivante dans l'environnement virtuel :
oci setup config
- Entrez vos réponses de la section Collecte des informations requises :
- Emplacement de la configuration [$HOME/.oci/config] :
<utiliser-valeur-par-défaut>
- OCID utilisateur :
<user-ocid>
- OCID de la location :
<tenancy-ocid>
- Région (par exemple, us-ashburn-1) :
<identificateur-de-région>
- Emplacement de la configuration [$HOME/.oci/config] :
- Entrez les informations suivantes pour configurer les clés de cryptage d'API OpenSSL :
- Générer une nouvelle paire de clés RSA de signature d'API ? [Y/N] : Y
- Répertoire pour les clés [$HOME/.oci] :
<utiliser-valeur-par-défaut>
- Nom de la clé [oci_api_key]
<utiliser-valeur-par-défaut>
- Désactivez l'environnement virtuel :
deactivate
Le préfixe
(cli-app)
de votre environnement n'apparaît plus.
La clé privée est
oci_api_key.pem
et la 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 utilisateur :
- Accédez à la console.
- Dans la barre de navigation, sélectionnez le menu Profil, puis sélectionnez Paramètres utilisateur ou Mon profil, en fonction de l'option affichée.
- 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.
- Lorsque vous souhaitez utiliser l'interface de ligne de commande OCI, activez-la avec :
workon cli-app
- Lorsque vous modifiez des noms de projet,
workon
désactive l'environnement de travail en cours. Vous pouvez ainsi basculer rapidement entre les environnements.
2. Configuration d'un cluster
Installez et configurez les options de gestion pour le cluster Kubernetes. Ensuite, déployez l'application vers ce cluster.
Si votre nom utilisateur figure dans le groupe Administrateurs, ignorez cette section. Sinon, demandez à l'administrateur d'ajouter la stratégie suivante à la location :
allow group <the-group-your-username-belongs> to manage compartments in tenancy
Avec ce privilège, vous pouvez créer un compartiment pour toutes les ressources du tutoriel.
- Dans la barre de navigation, sélectionnez le menu Profil, puis sélectionnez Paramètres utilisateur ou Mon profil, en fonction de l'option affichée.
- Dans le panneau gauche, cliquez sur Groupes.
- Dans un bloc-notes, copiez le nom du groupe auquel votre nom utilisateur appartient.
- Ouvrez le menu de navigation et cliquez sur Identité et sécurité. Sous Identité, cliquez sur Stratégies.
- Sélectionnez votre compartiment dans la liste déroulante Compartiment.
- Cliquez sur Créer une stratégie.
- Renseignez 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 stratégies, cliquez sur Afficher l'éditeur manuel.
- Collez la stratégie suivante :
allow group <the-group-your-username-belongs> to manage compartments in tenancy
- Cliquez sur Créer.
Référence : type de ressource compartments
dans Combinaisons de verbe et de type de ressource pour IAM
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.
- Renseignez les informations suivantes :
- Nom :
<your-compartment-name>
- Description :
Compartiment pour <votre-description>.
- Compartiment parent :
<votre-location>(racine)
- Nom :
- Cliquez sur Créer un compartiment.
Référence : Création d'un compartiment
Si votre nom utilisateur figure dans le groupe Administrateurs, ignorez cette section. Sinon, demandez à l'administrateur d'ajouter la stratégie suivante à la location :
allow group <the-group-your-username-belongs> to manage all-resources in compartment <your-compartment-name>
Avec ce privilège, vous pouvez gérer toutes les ressources de votre compartiment, ce qui vous donne fondamentalement des droits d'administration dans ce compartiment.
- Ouvrez le menu de navigation et cliquez sur Identité et sécurité. Sous Identité, cliquez sur Stratégies.
- Sélectionnez votre compartiment dans la liste déroulante Compartiment.
- Cliquez sur Créer une stratégie.
- Renseignez les informations suivantes :
- Nom :
manage-<your-compartment-name>-resources
- Description :
Autoriser les utilisateurs à répertorier, créer, mettre à jour et supprimer des ressources dans <nom-du-compartiment>.
- Compartiment :
<your-tenancy>(root)
- Nom :
- Pour Générateur de stratégies, sélectionnez les options suivantes :
- Cas d'emploi de stratégie :
Gestion des compartiments
- Modèles de stratégie courante :
Autoriser les administrateurs de compartiment à gérer le compartiment
- Groupes :
<the-group-your-username-belongs>
- Emplacement :
<your-tenancy>(root)
- Cas d'emploi de stratégie :
- Cliquez sur Créer.
Référence : Politiques courantes
Créez un cluster avec des paramètres par défaut et de nouvelles ressources réseau via le workflow Création rapide.
Après avoir créé un cluster Kubernetes, configurez votre système local de sorte à accéder au cluster.
L'accès au cluster étant configuré, vous pouvez maintenant préparer l'application pour le déploiement.
3. Création d'une application locale
Créez une application locale et une image Docker pour l'application.
Pour macOS, vous pouvez enlever
sudo
dans les commandes docker
.4. Déploiement de l'image Docker
Propagez l'image Docker Spring Boot vers OCI Container Registry. Ensuite, utilisez l'image pour déployer l'application.
Pour macOS, vous pouvez enlever
sudo
dans les commandes docker
.Vous pouvez propager uniquement des images dont le nom inclut l'URL de registre.
Etapes suivantes
Félicitations ! Vous avez créé une application Hello World, vous l'avez déployée vers un cluster Kubernetes et vous l'avez rendue accessible sur Internet à l'aide de la structure Spring Boot.
Pour obtenir plus d'informations sur le développement avec les produits Oracle, consultez les sites suivants :