Déployer une application à partir de la source vers Azure Red Hat OpenShift
Dans cet article, vous déployez une application sur un cluster Azure Red Hat OpenShift à partir du code source à l’aide d’un build source-image (S2I). Le processus du build source-image (S2I) permet de générer des images de conteneur reproductibles à partir de code source. S2I génère des images prêtes à être exécutées en injectant du code source dans une image conteneur et en permettant au conteneur de préparer le code source pour l’exécution. Vous pouvez faire en sorte qu’OpenShift génère une application à partir de la source pour la déployer. Vous ne devez donc pas construire de conteneur manuellement à chaque modification. OpenShift peut ensuite créer et déployer automatiquement de nouvelles versions lorsqu’il est informé de modifications du code source.
Avant de commencer
Remarque
Cet article suppose que vous avez configuré un secret de tirage (pull secret). Si vous n’avez pas de secret de tirage (pull secret) pour votre cluster, vous pouvez suivre la documentation pour ajouter ou mettre à jour votre secret de tirage (pull secret) Red Hat.
Créer un cluster
Suivez le tutoriel pour Créer un cluster Azure Red Hat OpenShift. Si vous choisissez d’installer et d’utiliser l’interface de ligne de commande (CLI) localement, ce tutoriel nécessite d’utiliser Azure CLI version 2.6.0 ou ultérieure. Exécutez az --version
pour rechercher votre version actuelle. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.
Se connecter au cluster
Pour gérer un cluster Azure Red Hat OpenShift, vous devez utiliser oc, le client de ligne de commande OpenShift.
Remarque
Nous vous recommandons d’installer la ligne de commande OpenShift sur Azure Cloud Shell et de l’utiliser pour toutes les opérations de ligne de commande de cet article. Ouvrez votre interpréteur de commandes à partir de shell.azure.com ou en cliquant sur le lien suivant :
Suivez le tutoriel pour installer votre interface CLI, pour récupérer vos informations d’identification du cluster et vous connecter au cluster à l’aide de la console web et de l’interface CLI OpenShift.
Une fois que vous êtes connecté, vous devriez voir un message indiquant que vous utilisez le projet default
.
Login successful.
You have access to 61 projects, the list has been suppressed. You can list all projects with 'oc projects'
Using project "default".
Création d’un projet
Pour créer un projet appelé demoproject
, exécutez la commande suivante :
oc new-project demoproject
La sortie doit ressembler à celle-ci :
Now using project "demoproject" on server "https://api.wzy5hg7x.eastus.aroapp.io:6443".
You can add applications to this project with the 'new-app' command. For example, try:
oc new-app django-psql-example
to build a new example application in Python. Or use kubectl to deploy a simple Kubernetes application:
kubectl create deployment hello-node --image=gcr.io/hello-minikube-zero-install/hello-node
Lancer la console web
Pour découvrir l’URL de la console web du cluster, exécutez la commande suivante :
az aro show \
--name <cluster name> \
--resource-group <resource group> \
--query "consoleProfile.url" -o tsv
L’URL doit ressembler à celle-ci.
https://console-openshift-console.apps.wzy5hg7x.eastus.aroapp.io/
Lancez l’URL de la console dans un navigateur et connectez-vous à l’aide des informations d’identification kubeadmin
.
Basculez vers la perspective Développeur au lieu de la perspective Administrateur dans le menu latéral gauche, puis sélectionnez demoproject
dans la liste des projets. Vous devez ensuite être sur la page Topologie du projet.
Dans la mesure où le projet est vide, aucune charge de travail ne doit être trouvée et les différentes options de déploiement d’une application vous seront présentées.
Déploiement à l’aide de la console web
À partir des options présentées pour le déploiement d’une application, sélectionnez À partir de Git. Vous êtes redirigé vers la page Importer à partir de Git. Utilisez https://github.com/sclorg/django-ex.git
comme URL du référentiel Git. L’exemple d’application web est implémenté à l’aide du langage de programmation Python.
Remarque
OpenShift détecte qu’il s’agit d’un projet Python et sélectionne l’image de générateur appropriée.
Faites défiler jusqu’à Options avancées et vérifiez que l’option Créer un itinéraire vers l’application est cochée. Cette action permet de créer un itinéraire OpenShift, un moyen d’exposer un service en lui donnant un nom d’hôte accessible de l’extérieur.
Lorsque vous êtes prêt, en bas de la page, cliquez sur Créer. Cela vous permet de créer des ressources pour gérer la création et le déploiement de l’application. Vous êtes ensuite redirigé vers la vue d’ensemble de la topologie pour le projet.
La vue d’ensemble de la topologie fournit une représentation visuelle de l’application que vous avez déployée. Cette vue vous permet de consulter la structure globale de l’application.
Vous pouvez cliquer sur l’icône Git pour vous connecter au référentiel Git à partir duquel le code source de l’application a été créé. L’icône affichée en bas à gauche montre l’état du build de l’application. Cliquez sur cette icône pour accéder à la section des détails du build. Si l’application a exposé des itinéraires, vous pouvez cliquer sur l’icône en haut à droite pour ouvrir l’URL de l’itinéraire de l’application qui a été créée.
Pendant que l’application effectue un scale up ou down, démarre les lancements et recrée des pods, la représentation de l’application dans la vue de la topologie est animée pour vous offrir une vue en temps réel de ce qu’il se passe.
Cliquez sur l’icône d’application pour afficher plus de détails, comme indiqué ci-dessous.
Affichage des journaux du générateur
Une fois le build démarré, cliquez sur le lien Voir les journaux affiché dans le panneau Ressources.
Cela vous permettra de surveiller la progression du build lors de son exécution. L’image du générateur, Python dans ce cas, injecte le code source de l’application dans l’image finale avant de l’envoyer dans le registre de l’image interne OpenShift. La génération est terminée lorsque vous voyez un message final indiquant que l’envoi (push) a réussi.
Accès à l’application
Une fois la génération de l’image d’application terminée, celle-ci est déployée.
Cliquez sur Topologie dans la barre de menus de gauche pour revenir à la vue de la topologie du projet. Lorsque vous avez créé l’application à l’aide de la console web, un itinéraire a été créé automatiquement pour l’application et il est exposé en dehors du cluster. L’URL qui peut permettre d’accéder à l’application à partir d’un navigateur web était visible sous l’onglet Ressources de l’application que vous avez consultée précédemment.
Dans la vue de la topologie, vous pouvez accéder à l’URL de l’application déployée en cliquant sur l’icône en haut à droite de l’anneau. Une fois le déploiement terminé, cliquez sur l’icône pour voir l’application que vous avez déployée.
Déploiement avec la ligne de commande
Vous avez appris à déployer une application à l’aide de la console web, ce qui permet désormais de déployer la même application web, mais cette fois-ci à l’aide de l'outil en ligne de commande oc
.
Exécutez la commande suivante pour supprimer le projet et recommencer :
oc delete project demoproject
Vous devez obtenir un message de confirmation indiquant que demoproject
a été supprimé.
project.project.openshift.io "demoproject" deleted
Pour recréer demoproject
, exécutez :
oc new-project demoproject
Dans le projet, créez une application à partir de la source sur GitHub en spécifiant le générateur S2I pour la dernière version de Python fournie.
oc new-app python:latest~https://github.com/sclorg/django-ex.git
Cette valeur doit afficher une sortie semblable à celle-ci :
--> Found image 8ec6f0d (4 weeks old) in image stream "openshift/python" under tag "latest" for "python:latest"
Python 3.8
----------
[...]
Tags: builder, python, python38, python-38, rh-python38
* A source build using source code from https://github.com/sclorg/django-ex.git will be created
* The resulting image will be pushed to image stream tag "django-ex:latest"
* Use 'oc start-build' to trigger a new build
* This image will be deployed in deployment config "django-ex"
* Port 8080/tcp will be load balanced by service "django-ex"
* Other containers can access this service through the hostname "django-ex"
--> Creating resources ...
imagestream.image.openshift.io "django-ex" created
buildconfig.build.openshift.io "django-ex" created
deploymentconfig.apps.openshift.io "django-ex" created
service "django-ex" created
--> Success
Build scheduled, use 'oc logs -f bc/django-ex' to track its progress.
Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
'oc expose svc/django-ex'
Run 'oc status' to view your app.
OpenShift va utiliser le nom du référentiel Git comme nom de l’application. Passez en revue l’état de la création et du déploiement en exécutant :
oc status
Une fois la création et le déploiement terminés, vous devez voir une sortie semblable à la suivante.
In project demoproject on server https://api.wzy5hg7x.eastus.aroapp.io:6443
svc/django-ex - 172.30.200.50:8080
dc/django-ex deploys istag/django-ex:latest <-
bc/django-ex source builds https://github.com/sclorg/django-ex.git on openshift/python:latest
deployment #1 deployed about a minute ago - 1 pod
2 infos identified, use 'oc status --suggest' to see details.
Pour exposer l’application en dehors du cluster OpenShift, vous devez créer un itinéraire en exécutant :
oc expose service/django-ex
Vous devez obtenir une confirmation.
route.route.openshift.io/django-ex exposed
Récupérez l’URL en exécutant :
oc get route django-ex
Vous devez récupérer le nom d’hôte affecté à l’itinéraire que vous pouvez utiliser pour parcourir l’application déployée.
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
django-ex django-ex-demoproject.apps.wzy5hg7x.eastus.aroapp.io django-ex 8080-tcp None
Déclenchement d’un nouveau build binaire
Au fur et à mesure que vous utilisez l’application, vous souhaiterez probablement apporter des modifications et les voir déployées. Vous pouvez facilement configurer un webhook qui déclenche une nouvelle création et un déploiement avec chaque validation de code. Toutefois, ce n’est peut-être pas souhaitable, car vous aimeriez parfois voir les modifications sans devoir envoyer (push) chaque modification de code au référentiel.
Dans les cas où vous effectuez rapidement une itération sur les modifications, vous pouvez utiliser ce que l’on appelle un build binaire. Pour illustrer ce scénario, clonez le référentiel Git pour l’application en local en exécutant :
git clone https://github.com/sclorg/django-ex.git
Cette opération crée un sous-répertoire django-ex
contenant le code source de l’application :
Cloning into 'django-ex'...
remote: Enumerating objects: 980, done.
remote: Total 980 (delta 0), reused 0 (delta 0), pack-reused 980
Receiving objects: 100% (980/980), 276.23 KiB | 4.85 MiB/s, done.
Resolving deltas: 100% (434/434), done.
Basculez vers le sous-répertoire :
cd django-ex
Ouvrez l’éditeur Azure Cloud Shell intégré :
code welcome/templates/welcome/index.html
Faites défiler vers le bas et modifiez la ligne qui indique Welcome to your Django application on OpenShift
en Welcome to Azure Red Hat OpenShift
. Enregistrez le fichier et fermez l’éditeur via le menu ...
en haut à droite.
Démarrez un nouveau build en exécutant la commande :
oc start-build django-ex --from-dir=. --wait
Lorsque vous transmettez l'indicateur --from-dir=.
, la ligne de commande OpenShift charge le code source à partir du répertoire spécifié, puis lance les processus de création et de déploiement. Vous devez obtenir une sortie similaire à la suivante et, après quelques minutes, le build doit être terminé.
Uploading directory "." as binary input for the build ...
.
Uploading finished
build.build.openshift.io/django-ex-2 started
Si vous actualisez le navigateur avec l’application, vous devez voir le titre mis à jour.
Nettoyer les ressources
Lorsque vous avez terminé avec l’application, vous pouvez exécuter la commande suivante pour supprimer le projet :
oc delete project demoproject
Vous pouvez également supprimer le cluster en suivant les instructions figurant dans Tutoriel : Supprimer un cluster Azure Red Hat OpenShift 4.
Étapes suivantes
Dans ce guide, vous avez appris à :
- Création d’un projet
- Déployer une application à partir de code source à l’aide de la console web
- Déployer une application à partir de code source à l’aide de la ligne de commande OpenShift
- Déclencher un build binaire à l’aide de la ligne de commande OpenShift
En savoir plus sur les procédures de création et de déploiement d’applications à l’aide de stratégies de génération source-image ou autres.