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:6443
$ oc login --token=RYhFlXXXXXXXXXXXX --server=https://api.osd4-demo.abc1.p1.openshiftapps.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple 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>
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>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Créez un nouveau projet à partir du CLI en exécutant la commande suivante:
oc new-project ostoy-s2i
$ oc new-project ostoy-s2i
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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.yaml
$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ajouter 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.yaml
$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dé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=ostoy
$ oc new-app https://github.com/<UserName>/ostoy \ --context-dir=microservice \ --name=ostoy-microservice \ --labels=app=ostoy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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 status
$ oc status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Attendez 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_MICROSERVICE
$ oc new-app https://github.com/<UserName>/ostoy \ --env=MICROSERVICE_NAME=OSTOY_MICROSERVICE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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"}]'
$ oc patch deployment ostoy --type=json -p \ '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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/health
$ oc set probe deployment ostoy --liveness --get-url=http://:8080/health
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Joindre 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/secret
$ oc set volume deployment ostoy --add \ --secret-name=ostoy-secret \ --mount-path=/var/secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Attachez ConfigMap
oc set volume deployment ostoy --add \ --configmap-name=ostoy-config \ -m /var/config
$ oc set volume deployment ostoy --add \ --configmap-name=ostoy-config \ -m /var/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Créer et joindre PersistentVolume
oc set volume deployment ostoy --add \ --type=pvc \ --claim-size=1G \ -m /var/demo_files
$ oc set volume deployment ostoy --add \ --type=pvc \ --claim-size=1G \ -m /var/demo_files
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
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=Redirect
$ oc create route edge --service=ostoy --insecure-policy=Redirect
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Accé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}}')"
$ python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ oc get route
Copy to Clipboard Copied! Toggle word wrap Toggle overflow