Kubernetes : déploiement d'une application Node Express
Dans ce tutoriel, vous utilisez un compte Oracle Cloud Infrastructure pour configurer un cluster Kubernetes. Ensuite, vous déployez une application Node Express 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 Node Express et une image Docker,
- propager l'image vers OCIR,
- déployer l'application Docker Node.js 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 payant Oracle Cloud Infrastructure.
- 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+
- Node.js 10+
- 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 1 et 2 de la rubrique :
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
Installez Node.js sur votre système.
Pour installer Node.js et NPM, exécutez les commandes suivantes :
- Oracle Linux :
sudo yum update
Configurez le référentiel Yum pour Node.js. Installez ensuite le package
nodejs
.sudo yum install -y oracle-nodejs-release-el7 sudo yum install -y nodejs
- Ubuntu :
sudo apt update
Installez les packages
nodejs
etnpm
.sudo apt install -y nodejs sudo apt install -y npm
- Vérifiez l'installation.
node -v npm -v
Si vous souhaitez tester votre application Node avec un navigateur, rendez le port 3000 disponible sur votre instance Linux.
- Oracle Linux
sudo firewall-cmd --add-service=http --permanent sudo firewall-cmd --add-service=https --permanent sudo firewall-cmd --reload
- Ubuntu Linux
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 3000 -j ACCEPT sudo netfilter-persistent save
Suivez ces étapes pour sélectionner le sous-réseau public du réseau cloud virtuel et ajouter la règle entrante.
- Ouvrez le menu de navigation et cliquez sur Fonctions de réseau, puis sur Réseaux cloud virtuels.
- Sélectionnez le réseau cloud virtuel que vous avez créé avec l'instance de calcul.
- Lorsque le nouveau réseau cloud virtuel est affiché, cliquez sur le lien du sous-réseau <nom-du-sous-réseau>.
Les informations sur le sous-réseau public sont affichées avec les listes de sécurité en bas de la page. Un lien vers la liste de sécurité par défaut du réseau cloud virtuel s'affiche.
- Cliquez sur le lien Liste de sécurité par défaut.
Les règles entrantes par défaut du réseau cloud virtuel sont affichées.
- Cliquez sur Ajouter des règles entrantes.
La boîte de dialogue Ajouter des règles entrantes apparaît.
- Renseignez la règle entrante avec les informations suivantes.
Renseignez la règle entrante comme suit :
- Sans conservation de statut : option cochée
- Type de source : CIDR
- CIDR source : 0.0.0.0/0
- Protocole IP : TCP
- Plage de ports source : (à laisser vide)
- Plage de ports de destination : 3000
- Description : Autoriser les connexions HTTP
- Cliquez sur Ajouter une règle entrante.
Les connexions HTTP sont désormais autorisées. Le réseau cloud virtuel est configuré pour Node Express.
Vous avez créé une règle entrante qui rend votre instance disponible à partir d'Internet.
- 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 :
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.
Créez votre application Node.js.
Vous avez configuré votre application Node.js.
Exécutez votre application Node.js.
Vous avez créé une application Hello World à l'aide de Node.js et d'Express.
Références :
- Pour plus d'informations sur cet exemple, reportez-vous à Introduction à Express.
A présent, créez une image Docker pour l'application Node.js Express.
4. Déploiement de l'image Docker
Propagez votre image Node.js Express vers OCI Container Registry. Ensuite, utilisez l'image pour déployer l'application.
Une fois l'image Docker locale créée, propagez-la vers le registre de conteneur.
Suivez les étapes ci-après.
Recherchez votre image dans Container Registry une fois la commande push terminée.
Etapes suivantes
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 Node Express.
Consultez les sites suivants pour obtenir plus d'informations sur le développement avec les produits Oracle :