Kubernetes avec Cloud Shell : déploiement d'une application Flask Python
Dans ce tutoriel, vous utilisez un compte Oracle Cloud Infrastructure pour configurer un cluster Kubernetes. Ensuite, vous créez une application Python avec une structure Flask. Enfin, vous déployez l'application vers votre cluster à l'aide de Cloud Shell.
Les principales tâches expliquent comment :
- créer un compartiment,
- configurer un cluster Kubernetes sur OCI,
- créer une application Python dans une structure Flask,
- créer une image Docker,
- propager l'image vers OCI Container Registry,
- utiliser Cloud Shell pour 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 :
- Un compte Oracle Cloud Infrastructure payant. Reportez-vous à Inscription à Oracle Cloud Infrastructure.
- Cloud Shell fournit les applications suivantes :
- JDK 8+
- Python 3.6.8+
- Kubectl 1.18.10+
- Apache Maven 3.5+
- Docker 19.0.11+
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.
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 nombre de coeurs disponibles :
- 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 correspondant aux formes suivantes :
- Nom de la limite :
lb-flexible-bandwidth-count
- Disponible : 1 au minimum.
- Nom de la limite :
- Filtrez sur les options suivantes :
Ce tutoriel crée trois instances de calcul avec une forme VM.Standard.E2.1 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 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.
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.
- Cliquez sur Créer une stratégie.
- Renseignez les informations suivantes :
- Nom :
manage-compartments
- Description :
Autoriser le groupe <groupe-auquel-le-nom-utilisateur-appartient> à répertorier, créer, mettre à jour, supprimer et récupérer des compartiments dans la location.
- 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érencer
Le 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 le compartiment dans la liste Compartiment.
- Cliquez sur Créer une stratégie.
- Renseignez les informations suivantes :
- Nom :
gérer-ressources-de-<nom-du-compartiment>
- 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érencer
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 Cloud Shell 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 de votre application Docker
A présent, configurez la structure Flask sur Cloud Shell. Ensuite, créez et exécutez une application Python.
Créez votre application Flask.
Exécutez l'application Flask.
Vous avez créé une application Python locale avec la structure Flask.
Références :
Pour plus d'informations sur Flask, reportez-vous à la documentation Flask.
A présent, créez une image Docker pour l'application Flask.
4. Déploiement de l'image Docker
L'image Python étant créée, vous pouvez maintenant la déployer.
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 Python 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 Flask.
Consultez les sites suivants pour obtenir plus d'informations sur le développement avec les produits Oracle :