18.11. Tutoriel: déploiements S2I
Il existe plusieurs méthodes pour déployer des applications dans OpenShift. Ce tutoriel explore à l’aide du constructeur intégré Source-à-Image (S2I). Comme mentionné dans la section Concepts OpenShift, S2I est un outil pour construire des images de conteneurs reproductibles au format Docker.
18.11.1. Conditions préalables Copier lienLien copié sur presse-papiers!
Les exigences suivantes doivent être remplies avant de pouvoir utiliser ce tutoriel.
- « vous avez créé un cluster ROSA.
Enregistrez votre commande de connexion
Lorsque vous n’êtes pas connecté via le CLI, dans OpenShift Cluster Manager, cliquez sur la flèche déroulante à côté de votre nom en haut à droite et sélectionnez Copier la commande de connexion.
- Le nouvel onglet s’ouvre. Entrez votre nom d’utilisateur et votre mot de passe, puis sélectionnez la méthode d’authentification.
- Cliquez sur Affichage du jeton
- Copiez la commande sous « Connectez-vous avec ce jeton ».
Connectez-vous à l’interface de ligne de commande (CLI) en exécutant la commande copiée dans votre terminal. Il faut voir quelque chose de similaire à ce qui suit:
$ oc login --token=RYhFlXXXXXXXXXXXX --server=https://api.osd4-demo.abc1.p1.openshiftapps.com:6443Exemple de sortie
Logged into "https://api.myrosacluster.abcd.p1.openshiftapps.com:6443" as "rosa-user" using the token provided. You don't have any projects. You can try to create a new project, by running oc new-project <project name>
Créez un nouveau projet à partir du CLI en exécutant la commande suivante:
$ oc new-project ostoy-s2i
18.11.2. Fourche le référentiel OSToy Copier lienLien copié sur presse-papiers!
La section suivante se concentre sur le déclenchement de builds automatisés en fonction des modifications apportées au code source. Il faut configurer un webhook GitHub pour déclencher les builds S2I lorsque vous poussez du code dans votre Repo GitHub. Afin de configurer le webhook, vous devez d’abord fourcher le repo.
Dans ce guide, remplacez <UserName> par votre propre nom d’utilisateur GitHub pour les URL suivantes.
18.11.3. En utilisant S2i pour déployer OSToy sur votre cluster Copier lienLien copié sur presse-papiers!
Ajouter secret à OpenShift
L’exemple imite un fichier .env et montre à quel point il est facile de les déplacer directement dans un environnement OpenShift. Les fichiers peuvent même être renommés dans le Secret. Dans votre CLI entrez la commande suivante, remplaçant <UserName> par votre nom d’utilisateur GitHub:
$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/secret.yamlAjouter ConfigMap à OpenShift
L’exemple imite un fichier de configuration HAProxy, et est généralement utilisé pour remplacer les configurations par défaut dans une application OpenShift. Les fichiers peuvent même être renommés dans le ConfigMap.
Dans votre CLI entrez la commande suivante, remplaçant <UserName> par votre nom d’utilisateur GitHub:
$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yamlDéployer le microservice
Il faut d’abord déployer le microservice pour s’assurer que les variables d’environnement SERVICE sont disponibles à partir de l’application UI. --context-dir est utilisé ici pour construire uniquement l’application définie dans le répertoire microservice dans le référentiel git. En utilisant l’étiquette de l’application nous permet de nous assurer que l’application d’interface utilisateur et le microservice sont tous deux regroupés dans l’interface utilisateur OpenShift. Exécutez la commande suivante dans le CLI pour créer le microservice, en remplaçant <UserName> par votre nom d’utilisateur GitHub:
$ oc new-app https://github.com/<UserName>/ostoy \ --context-dir=microservice \ --name=ostoy-microservice \ --labels=app=ostoyExemple de sortie
--> Creating resources with label app=ostoy ... imagestream.image.openshift.io "ostoy-microservice" created buildconfig.build.openshift.io "ostoy-microservice" created deployment.apps "ostoy-microservice" created service "ostoy-microservice" created --> Success Build scheduled, use 'oc logs -f buildconfig/ostoy-microservice' 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 service/ostoy-microservice' Run 'oc status' to view your app.Consultez l’état du microservice
Avant de passer à l’étape suivante, nous devrions être sûrs que le microservice a été créé et fonctionne correctement en exécutant la commande suivante:
$ oc statusExemple de sortie
In project ostoy-s2i on server https://api.myrosacluster.g14t.p1.openshiftapps.com:6443 svc/ostoy-microservice - 172.30.47.74:8080 dc/ostoy-microservice deploys istag/ostoy-microservice:latest <- bc/ostoy-microservice source builds https://github.com/UserName/ostoy on openshift/nodejs:14-ubi8 deployment #1 deployed 34 seconds ago - 1 podAttendez que vous voyez qu’il a été déployé avec succès. Il est également possible de vérifier cela via l’interface utilisateur Web.
Déployer l’interface utilisateur frontale
L’application a été conçue pour s’appuyer sur plusieurs variables d’environnement pour définir des paramètres externes. Attachez le Secret et ConfigMap précédemment créés par la suite, ainsi que la création d’un Volume Persistent. Inscrivez ce qui suit dans le CLI:
$ oc new-app https://github.com/<UserName>/ostoy \ --env=MICROSERVICE_NAME=OSTOY_MICROSERVICEExemple de sortie
--> Creating resources ... imagestream.image.openshift.io "ostoy" created buildconfig.build.openshift.io "ostoy" created deployment.apps "ostoy" created service "ostoy" created --> Success Build scheduled, use 'oc logs -f buildconfig/ostoy' 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 service/ostoy' Run 'oc status' to view your app.Actualiser le déploiement
Actualisez le déploiement pour utiliser une stratégie de déploiement « Recréer » (par opposition à la valeur par défaut de RollingUpdate) pour des déploiements cohérents avec des volumes persistants. Le raisonnement ici est que le PV est soutenu par EBS et en tant que tel ne prend en charge que la méthode RWO. « si le déploiement est mis à jour sans que toutes les gousses existantes ne soient tuées, il pourrait ne pas être en mesure de planifier un nouveau pod et de créer un PVC pour le PV car il est toujours lié à la gousse existante. » Lorsque vous utilisez EFS, vous n’avez pas à modifier cela.
$ oc patch deployment ostoy --type=json -p \ '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'Définir une sonde Liveness
Créez une sonde de vie sur le déploiement pour s’assurer que le pod est redémarré si quelque chose n’est pas sain dans l’application. Inscrivez ce qui suit dans le CLI:
$ oc set probe deployment ostoy --liveness --get-url=http://:8080/healthJoindre Secret, ConfigMap et PersistentVolume au déploiement
Exécutez les commandes suivantes attachez votre secret, ConfigMap et PersistentVolume:
Attachez le secret
$ oc set volume deployment ostoy --add \ --secret-name=ostoy-secret \ --mount-path=/var/secretAttachez ConfigMap
$ oc set volume deployment ostoy --add \ --configmap-name=ostoy-config \ -m /var/configCréer et joindre PersistentVolume
$ oc set volume deployment ostoy --add \ --type=pvc \ --claim-size=1G \ -m /var/demo_files
Exposer l’application UI en tant que route OpenShift
Exécutez la commande suivante pour déployer ceci en tant qu’application HTTPS qui utilise les certificats de wildcard TLS inclus:
$ oc create route edge --service=ostoy --insecure-policy=RedirectAccédez à votre application avec les méthodes suivantes:
L’exécution de la commande suivante ouvre un navigateur Web avec votre application OSToy:
$ python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"Il est possible d’obtenir l’itinéraire de l’application et de copier et coller l’itinéraire dans votre navigateur en exécutant la commande suivante:
$ oc get route