Application Web évolutive sur Red Hat OpenShift on IBM Cloud
Ce tutoriel peut entraîner des coûts. Utilisez l'Estimateur de coûts pour générer une estimation du coût en fonction de votre utilisation projetée.
Ce tutoriel vous explique comment déployer une application dans un cluster à partir d'un référentiel distant Red Hat OpenShift on IBM Cloud à partir d'un dépôt distant Git, exposer l'application sur une route, surveiller l'état de l'environnement et faire évoluer l'application. En outre, vous apprendrez à utiliser un registre de conteneurs privé, à déployer une application à partir d'un référentiel privé Git et à lier un domaine personnalisé à l'application.
Avec Red Hat OpenShift on IBM Cloud, vous pouvez créer des clusters Kubernetes avec des noeuds worker qui sont installés avec OpenShift Container Platform. Pour plus d'informations sur l'architecture OpenShift Container Platform, voir la documentation Red Hat OpenShift. Vous obtenez tous les avantages d'un service géré pour votre cluster.
Objectifs
- Déployer une application Web dans le cluster Red Hat OpenShift on IBM Cloud.
- Lier un domaine personnalisé.
- Surveiller les journaux et la santé du cluster.
- Mettre à l'échelle des pods Red Hat OpenShift on IBM Cloud.
- Le développeur déploie une application Web à l'aide du code d'un référentiel Git distant. En option, le développeur peut également pousser le code vers un dépôt privé Git sur IBM Cloud.
- Une image de conteneur est créée à partir du code.
- L'image est poussée vers un registre de conteneurs local fourni avec le cluster ou vers un espace de noms dans le site IBM Cloud Container Registry.
- L'application est déployée sur un cluster Red Hat OpenShift on IBM Cloud en tirant l'image.
- Les utilisateurs accèdent à l'application via une route publique.
Avant de commencer
Pour ce tutoriel, vous devez disposer des éléments suivants :
- IBM Cloud CLI,
- du plug-in IBM Cloud Kubernetes Service (
kubernetes-service), - (facultatif) du plug-in Container Registry (
container-registry)
- du plug-in IBM Cloud Kubernetes Service (
- d'un moteur Docker,
- d'
ocpour l'interaction avec Red Hat OpenShift on IBM Cloud, - de
gitpour cloner le référentiel de code source, - (facultatif) IBM Cloud GitLab configuré avec votre clé SSH. Consultez les instructions dans les sections
Generate an SSH key pairetAdd an SSH key to your GitLab accountde la documentation ici
Vous trouverez des instructions de téléchargement et d'installation de ces outils pour votre environnement d'exploitation dans le document Démarrer avec les tutoriels.
Pour éviter l'installation de ces outils, vous pouvez utiliser Cloud Shell à partir de la console IBM Cloud. Utilisez oc version pour vérifier que la version de l'interface de ligne de commande Red Hat OpenShift
on IBM Cloud correspond à votre version de cluster (4.13.x). S'ils ne correspondent pas, installez la version correspondante en suivant Ces instructions.
Vous devez également avoir configuré un espace de nom de registre.
Création d'un cluster Red Hat OpenShift on IBM Cloud
Avec Red Hat OpenShift on IBM Cloud, vous disposez d'un moyen rapide et sûr de conteneuriser et de déployer des charges de travail d'entreprise sur des clusters Kubernetes. Red Hat OpenShift on IBM Cloud clusters s'appuie sur l'orchestration de conteneurs Kubernetes qui offre cohérence et flexibilité pour vos opérations de cycle de vie du développement.
Dans cette section, vous allez mettre à disposition un cluster Red Hat OpenShift on IBM Cloud dans une (1) zone avec deux (2) noeuds worker :
- Créez un cluster Red Hat OpenShift on IBM Cloud à partir du catalogue IBM Cloud®.
- Sous Infrastructure, choisissez VPC ou Classique,
- Pour Red Hat OpenShift on IBM Cloud sur une infrastructure VPC, vous devez créer un VPC et un sous-réseau avant de créer le cluster. Créez ou utilisez un VPC existant en gardant à l'esprit les exigences suivantes:
- Un sous-réseau pouvant être utilisé dans le cadre de ce tutoriel, notez la zone et le nom de ce sous-réseau.
- Une passerelle publique est connectée au sous-réseau. Pour plus de détails, voir Création de clusters de VPC.
- Pour Red Hat OpenShift on IBM Cloud sur une infrastructure VPC, vous devez créer un VPC et un sous-réseau avant de créer le cluster. Créez ou utilisez un VPC existant en gardant à l'esprit les exigences suivantes:
- Sous Emplacement,
- Dans le cas d'Red Hat OpenShift on IBM Cloud sur une infrastructure VPC
- Décochez les zones et les sous-réseaux inapplicables.
- Dans la zone souhaitée, vérifiez le nom du sous-réseau désiré et s'il n'y en a pas, cliquez sur le crayon d'édition pour en sélectionner un
- Pour Red Hat OpenShift on IBM Cloud sur l'infrastructure classique:
- Sélectionnez un Groupe de ressources.
- Sélectionnez une Géographie.
- Sélectionnez Zone unique sous Disponibilité.
- Choisissez une zone de travail.
- Pour plus de détails, voir les instructions relatives à la création de clusters classiques.
- Dans le cas d'Red Hat OpenShift on IBM Cloud sur une infrastructure VPC
- Définissez la versionOpenShift sur 4.13.x (Remarque: si vous choisissez d'utiliser une version de 4.15.xx ou supérieure, vous devez désactiver la protection du trafic sortant).
- Sélectionnez votre licenceOpenShift Container Platform (OCP).
- Sous Pool de noeuds worker :
- Sélectionnez 4 unités centrales virtuelles, 16 Go de RAM comme version.
- Sélectionnez 2 nœuds de travail par centre de données pour ce tutoriel (si vous avez sélectionné l'infrastructure classique : ne pas crypter le disque local ).
- Sous Détails du cluster:
- Définir le nom du cluster à
myopenshiftcluster. - Sélectionnez un groupe de ressources (si vous avez sélectionné une infrastructure VPC).
- Définir le nom du cluster à
- Cliquez sur Créer pour mettre à disposition un cluster Red Hat OpenShift on IBM Cloud.
Notez le groupe de ressources sélectionné ci-dessus. Il sera utilisé pour toutes les ressources dans ce tutoriel.
Configuration de l'interface de ligne de commande
Dans cette étape, vous allez configurer l'interface de ligne de commande oc pour qu'elle pointe vers le cluster que vous venez de créer. Le CLI de Red Hat OpenShift on IBM Cloud Container Platform expose des commandes pour gérer vos applications, ainsi que des outils de niveau inférieur pour interagir avec chaque composant de votre système.
L'interface de ligne de commande est disponible en utilisant la commande oc.
- Lorsque le cluster est prêt, cliquez sur OpenShift web console pour ouvrir la console.
- Sur la console Web, dans le menu déroulant situé dans l'angle supérieur droit de la page, cliquez sur Copy Login Command, puis sur le lien Display Token.
- Copiez le texte qui se trouve sous Se connecter avec ce jeton.
- Une fois connecté à l'aide de la commande
oc login, exécutez la commande ci-dessous pour voir tous les espaces de noms de votre cluster.oc get ns
Création d'une nouvelle application Red Hat OpenShift on IBM Cloud
Dans cette section, vous allez créer un projet Red Hat OpenShift on IBM Cloud, puis déployer une application à partir d'un référentielGitHub. Le code de cette application est une page d'arrivée Node.js simple et deux noeuds finaux d'API pour commencer. Vous pouvez toujours étendre cette application en fonction de vos propres besoins d'exploration.
Créer un projet
Un espace de nom Kubernetes fournit un mécanisme permettant de parcourir les ressources figurant dans un cluster. Dans Red Hat OpenShift on IBM Cloud, un projet est un espace de nom Kubernetes avec des annotations supplémentaires.
- Définissez une variable d'environnement nommée
MYPROJECTet définissez le nom de l'application en remplaçant<your-initials>par vos propres initiales :export MYPROJECT=<your-initials>-openshiftapp - Créez un nouveau projet.
Après avoir créé un projet à l'aide de la commande ci-dessus, vous basculez automatiquement vers ce projet et toutes les commandes qui suivent s'exécutent dans le contexte de ce projet. Si vous devez changer de projet ou y revenir ultérieurement, utilisez la commandeoc new-project $MYPROJECToc project $MYPROJECT.
Déployer une application
La commande oc new-app vous permet de créer des applications à partir d'un code source dans un référenciel Git local ou distant.
-
Créez une application en utilisant la stratégie de génération
dockerpour générer une image de conteneur à partir d'un fichier Dockerfile dans le référentiel. Vous définissez le nom de l'application sur le nom du projet pour la simplicité.oc new-app https://github.com/IBM-Cloud/openshift-node-app --name=$MYPROJECT --strategy=docker --as-deployment-configS'il existe un fichier Jenkins dans le répertoire racine ou le répertoire de contexte spécifié du référentiel source lors de la création d'une application, Red Hat OpenShift on IBM Cloud génère une stratégie de génération de type
pipeline. Sinon, il génère une stratégie de générationsource. Vous pouvez toujours remplacer la stratégie de génération en définissant l'indicateur--strategy. -
Pour vérifier la création de l'image du conteneur builder et son transfert vers le site interne Red Hat OpenShift on IBM Cloud Container Registry (OCR), exécutez la commande ci-dessous.
oc logs -f buildconfig/$MYPROJECTVotre cluster est configuré avec le registre d'images Red Hat OpenShift on IBM Cloud Container Registry interne pour qu'Red Hat OpenShift on IBM Cloud puisse générer, déployer et gérer automatiquement le cycle de vie de vos applications depuis le cluster.
-
Attendez que la compilation soit réussie et que l'image soit poussée. Vous pouvez vérifier le statut du déploiement et du service en exécutant la commande ci-dessous.
oc status
Accéder à l'application par le biais du domaine IBM fourni
Pour accéder à l'application, vous devez créer un itinéraire. Une route permet d'exposer votre service au monde entier.
-
Créez une route en exécutant la commande ci-dessous dans un terminal.
oc expose service/$MYPROJECT -
Vous pouvez accéder à l'application via un domaine fourni par IBM. Exécutez la commande ci-dessous pour obtenir l' URL.
oc get route/$MYPROJECT -
Copiez la valeur du nom d'hôte sous la valeur HOST/PORT et collez l'adresse URL dans un navigateur pour voir votre application en action à l'adresse
http://<hostname>. Veillez à utiliserhttpdans l' URL. -
Définir une variable d'environnement pointant vers le nom d'hôte.
export HOST=<hostname>
Sécurisation de la route du domaine fourni par IBM par défaut
- Pour créer une route HTTPS sécurisée, chiffrée avec le certificat par défaut pour Red Hat OpenShift on IBM Cloud, vous pouvez utiliser la commande
create route.oc create route edge $MYPROJECT-https --service=$MYPROJECT --port=3000 - Pour obtenir l'URL de l'hôte HTTPS (HTTPS HOST URL), exécutez la commande
oc get routes. Copiez et collez l'URL avec HTTPS (https://<HOST>) en regard de la route $MYPROJECT-https dans un navigateur. Cette fois, vous pouvez utiliserhttpsdans l' URL.
Surveillance de l'application
Dans cette section, vous allez découvrir comment surveiller l'état de santé et les performances de votre application. OpenShift Container Platform est livré avec une pile de surveillance et d'alerte préconfigurée et à mise à jour automatique.
- À partir d'un terminal, exécutez la commande avec l' URL l'itinéraire pour générer une charge. La commande envoie sans fin des demandes à l'application.
while sleep 1; do curl --max-time 2 -s http://$HOST/load/50; done - Dans la console WebOpenShift, accédez à la vue Administrateur.
- Sous Observez, sélectionnez Métriques.
- Dans la zone d'expression, entrez l'expression ci-dessous, remplacez
<MYPROJECT>par le nom de votre projet et cliquez sur Exécuter les requêtes pour afficher l'utilisation totale de l'UC de conteneur en secondes dans un graphique.sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate{namespace="<MYPROJECT>"}) by (container) - Sous Observez, sélectionnez Tableaux de bord.
- Cliquez sur le menu déroulant Tableau de bord et sélectionnez Kubernetes / Compute Resources / Namespace (Workloads).
- Remplacez Namespace par votre projet.
- Définissez Intervalle de temps sur 5 dernières minutes.
- Vérifiez l'utilisation de l'UC et de la mémoire.
- Arrêtez le script ci-dessus à l'aide des touches
control+C. - Pour la journalisation, vous pouvez utiliser la commande intégrée
oc logs. Consultez les journaux de consultation d'une ressource pour en savoir plus sur l'utilisation deoc logs.
Vous pouvez également mettre à disposition et utiliser les services IBM Cloud Logs et IBM Cloud Monitoring pour la journalisation et la surveillance de vos applications Red Hat OpenShift on IBM Cloud. Suivez les instructions présentées ici pour configurer les modules complémentaires de journalisation et de surveillance afin de surveiller l'état de santé des clusters.
Mise à l'échelle de l'application
Dans cette section, vous découvrirez comment dimensionner votre application manuellement et automatiquement.
Mise à l'échelle manuelle
- Vous pouvez effectuer une mise à l'échelle manuelle de vos pods avec la commande
oc scale. Cette commande définit une nouvelle taille pour une configuration de déploiement ou un contrôleur de réplication.oc scale dc/$MYPROJECT --replicas=2 - Vous pouvez utiliser un nouveau pod en cours de mise à disposition en exécutant la commande
oc get pods. - Réexécutez l'étape Surveillance pour afficher les métriques mises à jour.
Mise à l'échelle automatique
Vous pouvez utiliser un programme de mise à l'échelle automatique de pod horizontale (HPA) pour indiquer la manière dont Red Hat OpenShift on IBM Cloud doit augmenter ou diminuer automatiquement l'échelle d'une configuration de déploiement
(dc) ou d'un contrôleur de réplication (rc), en fonction des métriques collectées des pods qui appartiennent à cette dc ou ce rc.
- Pour pouvoir configurer la mise à l'échelle automatique de vos pods, vous devez au préalable définir des limites de ressources sur les pods exécutés dans le cluster. Ces limites vous permettent de choisir les quantités d'UC et de mémoire
minimales et maximales utilisées pour un pod. Vous pouvez définir les limites et demandes sur un conteneur à l'aide de la commande
oc set resources.Pour les vérifier, exécutezoc set resources dc/$MYPROJECT --limits=cpu=250m,memory=512Mi --requests=cpu=100m,memory=256Mioc describe dc/$MYPROJECT, puis recherchezLimitsetRequests. - Pour créer un programme de mise à l'échelle automatique, vous devez exécuter la commande
oc autoscaleavec les limites inférieure (min) et supérieure (max) du nombre de pods pouvant être définis par le programme de mise à l'échelle automatique et la quantité moyenne d'UC cible utilisée (représentée en pourcentage de la quantité d'UC demandée) sur tous les pods. Pour les tests, définissez--cpu-percentà 5 %.oc autoscale dc/$MYPROJECT \ --min=1 \ --max=5 \ --cpu-percent=5 - Réexécutez l'étape Surveillance pour générer la charge sur l'application.
- Vous pouvez voir les nouveaux pods mis à disposition en exécutant la commande
oc get pods --watchou en examinant l'application dans la console Web. - Retirez le programme de mise à l'échelle automatique :
oc delete hpa/$MYPROJECT
(Facultatif) Génération et envoi de l'image de conteneur à Container Registry
Dans cette section, vous allez apprendre à utiliser un registre de conteneur privé distant de Container Registry pour stocker les images de conteneur générées.
IBM Cloud Container Registry fournit un registre d'images privé à service partagé, hautement disponible, évolutif et chiffré, hébergé et géré par IBM. Vous pouvez utiliser IBM Cloud Container Registry en configurant votre propre espace de nom d'image et en envoyant les images de conteneur vers votre espace de nom.
-
Pour identifier votre Container Registry URL, exécutez :
ibmcloud cr region -
Définir une variable d'environnement nommée
MYREGISTRYpointant vers le registre tel que :export MYREGISTRY=us.icr.io -
Choisissez l'un de vos espaces de noms ou créez-en. Pour afficher la liste des espaces de noms existants, exécutez :
ibmcloud cr namespacesPour créer un espace de nom :
ibmcloud cr namespace-add <REGISTRY_NAMESPACE> -
Définissez une variable d'environnement
MYNAMESPACEpointant vers l'espace de nom du registre :export MYNAMESPACE=<REGISTRY_NAMESPACE> -
Définir une variable d'environnement nommée
API_KEYpointant vers une clé API IAM IBM Cloud:export API_KEY=<YOUR_API_KEY>Pour créer une clé d'API, consultez ce lien.
-
Pour automatiser l'accès aux espaces de noms de votre registre et envoyer l'image de conteneur du générateur à Container Registry, créez un secret :
oc create secret docker-registry push-secret --docker-username=iamapikey --docker-password=$API_KEY --docker-server=$MYREGISTRY -
Copier et patcher le secret image-pull du projet
defaultdans votre projet :oc get secret all-icr-io -n default -o yaml | sed 's/default/'$MYPROJECT'/g' | oc -n $MYPROJECT create -f - -
Pour que le secret d'extraction d'image prenne effet, vous devez l'ajouter dans le compte de service
default:oc secrets link serviceaccount/default secrets/all-icr-io --for=pull
Cloner un exemple d'application
Dans cette section, vous allez cloner un référentiel GitHub qui est fourni avec un fichier modèle et un script shell pour générer un fichier yaml à partir des variables d'environnement précédemment créées. Le fichier généré est
utilisé pour construire une image de conteneur, pousser l'image vers le registre de conteneurs privé et déployer une nouvelle application.
- Dans un terminal, exécutez la commande ci-dessous pour cloner le dépôt GitHub sur votre machine :
git clone https://github.com/IBM-Cloud/openshift-node-app - Accédez au répertoire de l'application :
cd openshift-node-app
Mise à jour de la section BuildConfig et insertion de l'image du générateur dans Container Registry
Dans cette étape, vous exécutez un script pour mettre à jour les sections du fichier openshift.template.yaml et générer un nouveau fichier yaml pointant vers votre espace de nom Container Registry.
-
Exécutez le script bash ci-dessous pour mettre à jour les marques de réservation dans le fichier
openshift.template.yamlet générer le fichier openshift_private_registry.yaml../generate_yaml.sh use_private_registry -
Exécutez la commande export à partir de la sortie pour définir la variable d'environnement existante
MYPROJECTavec le nom de la nouvelle application. Exécutez la commandeecho $MYPROJECTpour afficher le nom de la nouvelle application. -
Vous pouvez éventuellement vérifier le fichier
openshift_private_registry.yamlgénéré pour voir si toutes les marques de réservation ont été mises à jour avec les variables d'environnement respectives. Vous trouverez ci-dessous trois endroits où effectuer une vérification rapide. Vous pouvez passer à la section suivante. -
Facultatif Localisez l'objet ImageStream dont l'attribut name est défini sur votre projet (
$MYPROJECT) et vérifiez si les espaces réservés$MYREGISTRY,$MYNAMESPACE, et$MYPROJECTsousdockerImageRepositorydéfinition despecsont mis à jour- apiVersion: image.openshift.io/v1 kind: ImageStream metadata: annotations: openshift.io/generated-by: OpenShiftNewApp creationTimestamp: null labels: app: $MYPROJECT app.kubernetes.io/component: $MYPROJECT app.kubernetes.io/instance: $MYPROJECT name: $MYPROJECT spec: dockerImageRepository: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT lookupPolicy: local: false status: dockerImageRepository: ""Un flux d'images et ses balises associées fournissent une abstraction pour référencer les images de conteneur depuis Red Hat OpenShift on IBM Cloud Container Platform
-
Facultatif Vérifiez que la spécification
specsous la sectionBuildConfigpour la sortie a été définie sur le typeDockerImageet les marques de réservation sousnamemises à jour.spec: nodeSelector: null output: to: kind: DockerImage name: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest pushSecret: name: push-secretUne génération est le processus de transformation des paramètres d'entrée pour obtenir un objet. Le plus souvent, ce processus est utilisé pour transformer des paramètres d'entrée ou du code source en image exécutable. Un objet
BuildConfigest la définition de l'ensemble du processus de génération. -
Facultatif Recherchez
containers, vérifiezimageetnamecontainers: - image: $MYREGISTRY/$MYNAMESPACE/$MYPROJECT:latest name: $MYPROJECT -
Si vous l'avez mis à jour, sauvegardez le fichier YAML.
Déploiement de l'application à l'aide d'IBM Cloud Container Registry
Dans cette section, vous allez déployer l'application dans le cluster à l'aide du fichier openshift_private_registry.yaml généré. Une fois le déploiement terminé, vous accéderez à l'application en créant une route.
-
Créer une nouvelle application OpenShift avec une buildconfig(bc), une deploymentconfig(dc), un service(svc), un imagestream(is) en utilisant le yaml mis à jour.
oc apply -f openshift_private_registry.yaml -
Pour vérifier la création de l'image du conteneur builder et son transfert sur le site Container Registry, exécutez la commande ci-dessous.
oc logs -f bc/$PRIVREGDans les journaux, vous devriez voir le message suivant si l'image du conteneur est poussée vers le registre de conteneurs privés.
Pushing image us.icr.io/mods15/vmac-openshift-app-registry:latest ... Getting image source signatures Copying blob sha256:9d038e1c7afbe92c29313557c02110e8fb796818ebb78441c68929381103a94b Copying blob sha256:61c671f49591a059c9b6728a9f84c16f5b00126470112ee9c9f9e01dbbfcc3ea Copying blob sha256:e2787650308235c87eff7d2b88c3ab217e84b74a3fa9696103bd46bb99068c7a Copying blob sha256:dcef409117430ed9906a59ad0a3ea0752061fbf8a9e544f4edd77667a25d85ae Copying blob sha256:a1f889dd610c6510c7fc091a51c247463f3cc9a7c67bdc397c9632168808f7d2 Copying blob sha256:bd278801acd18ada10f43b732113a6fffc163011862ea6cde729f8dc59e64222 Copying blob sha256:2d6c03ed5d15be86cdef7d9c0c9fea40a3f6b89662bca59680d037074f52bb38 Copying blob sha256:fa2ef7f80d6fc9543f6eb472846931ed1cec2b5f776d1b67bcb1b9942e1a947e Copying blob sha256:ff5a4e4d3690ccc931900b63714d326cc53a58e644f8d0a4f06bf8c62f11c5c7 Copying config sha256:01aa1ebb7be74529867106100c4e699ca2ae87f8242460771527f772e6a3d174 Writing manifest to image destination Storing signatures Successfully pushed us.icr.io/mods15/vmac-openshift-app-registry@sha256:6847b889397704b9fb8c3122c84b505c3dc5f99a0669fb69f534d3504eec385d Push successful -
Vous pouvez vérifier l'état du déploiement et du service.
oc status -
Importer manuellement le dernier flux d'images pour s'assurer que le déploiement a lieu dès que possible.
oc import-image $PRIVREGVous pouvez également utiliser la commande si le déploiement prend plus de temps, voir ce lien pour plus d'informations.
-
Exposez le service pour créer une nouvelle route.
oc expose service/$PRIVREG -
Vous pouvez accéder à l'application par le biais du domaine fourni par IBM. Exécutez la commande ci-dessous pour obtenir l' URL.
oc get route/$PRIVREG -
Copiez la valeur du nom d'hôte sous la valeur HOST/PORT et collez l'adresse URL dans un navigateur pour voir votre application en action à l'adresse
http://<hostname>. Veillez à utiliserhttpdans l' URL.Vous devez voir la même application exposée sur une autre route et déployée à l'aide de l'image de conteneur stockée dans un registre de conteneur privé.
(Facultatif) Envoi du code à un registre Git IBM Cloud privé
Dans cette étape, vous allez créer un dépôt privé IBM Cloud Git et pousser le code de l'application d'exemple. Vous apprendrez également à construire et à redéployer automatiquement l'application lorsqu'elle est mise à jour.
Vous devez configurer une clé SSH pour que la poussée soit réussie. Consultez les instructions dans les sections Generate an SSH key pair et Add an SSH key to your GitLab account de la documentation ici
-
Dans un navigateur, ouvrez IBM Cloud Git.
Le lien ci-dessus concerne la région
us-south. Pour d'autres régions, exécutez la commandeibmcloud regionsen remplaçantus-southdans l'URL par un nom de région. -
Cliquez sur New project, puis sur Create blank project et indiquez
openshiftappcomme nom de projet. -
Définissez le Niveau de visibilité sur Privé.
-
Sous Configuration de projet, décochez la case en regard de Initialiser le référentiel avec un fichier README.
-
Cliquez sur Créer un projet,
-
Suivez les instructions sous les sections Git global setup et Push an existing Git repository pour configurer Git et pour pousser le code de l'application exemple.
-
Une fois que vous avez transféré le code dans le dépôt privé, vous devriez voir l'exemple de code dans le projet.
Création d'un jeton de déploiement Git
Dans cette section, vous allez créer un jeton de déploiement Git pour autoriser l'accès en lecture seule à votre référentiel.
Pour générer un jeton de déploiement :
- Dans le panneau de navigation de la page Git repo, cliquez sur Settings > Repository.
- Cliquez sur Expand en regard de Deploy Tokens.
- Dans la zone Nom, entrez
foropenshift, puis sélectionnez read_repository sous Portées. Enfin, cliquez sur Créer un jeton de déploiement. - Sauvegardez le nom d'utilisateur (username) et le mot de passe (password) générés pour référence ultérieure.
- Dans la zone Nom, entrez
- Dans le panneau de navigation, cliquez sur Aperçu du projet, puis sur Cloner et copiez Cloner avec HTTPS URL. Sauvegardez l'adresse URL pour référence ultérieure.
- Définissez les variables d'environnement pour le nom d'utilisateur, le mot de passe et l'URL du référentiel Git privé à utiliser ultérieurement avec le fichier YAML dans le tutoriel
export GIT_TOKEN_USERNAME=<PRIVATE_GIT_DEPLOY_TOKEN_USERNAME> export GIT_TOKEN_PASSWORD=<PRIVATE_GIT_DEPLOY_TOKEN_PASSWORD> export REPO_URL=<PRIVATE_GIT_REPO_URL>
Déploiement d'une nouvelle application à l'aide du registre privé et du code du référentiel privé
-
Exécutez le script bash ci-dessous pour mettre à jour les marques de réservation dans le fichier
openshift.template.yamlet générer le fichier openshift_private_repository.yaml../generate_yaml.sh use_private_repository -
Exécutez la commande export à partir de la sortie pour définir la variable d'environnement existante
MYPROJECTavec le nom du nouveau projet. -
En plus des marques de réservation du registre de conteneur privé, le script remplace également l'URL
REPO_URLsous la section specBuildConfigpar les variables d'environnement que vous avez définies à l'étape ci-dessus,source: git: uri: $REPO_URL type: Git -
Créer une nouvelle application openshift avec un buildconfig(bc), deploymentconfig(dc), service(svc), imagestream(is) en utilisant le yaml mis à jour
oc apply -f openshift_private_repository.yaml -
Vous pouvez consulter les journaux du générateur.
oc logs -f bc/$PRIVREPO -
Vous pouvez vérifier l'état du déploiement et du service en utilisant.
oc status -
Importer manuellement le dernier flux d'images pour s'assurer que le déploiement a lieu dès que possible.
oc import-image $PRIVREPO -
Exposez le service pour créer une nouvelle route.
oc expose service/$PRIVREPO -
Vous pouvez accéder à l'application par le biais du domaine fourni par IBM. Exécutez la commande ci-dessous pour obtenir l' URL.
oc get route/$PRIVREPO -
Copiez la valeur du nom d'hôte sous la valeur HOST/PORT et collez l'adresse URL dans un navigateur pour voir votre application en action à l'adresse
http://<hostname>. Veillez à utiliserhttpdans l' URL.Une nouvelle application est déployée à l'aide du code du référentiel Git privé et de l'image de conteneur de l'espace de nom du registre privé.
Mise à jour de l'application et redéploiement
Dans cette étape, vous allez automatiser le processus de génération et de déploiement. Chaque fois que vous mettez à jour l'application et que vous envoyez les modifications au référentiel privé, une nouvelle génération génère une nouvelle version de l'image de conteneur. Cette image est ensuite déployée automatiquement.
-
Vous allez créer un nouveau déclencheur de webhook GitLab. Les déclencheurs de webhook vous permettent de lancer une nouvelle génération en envoyant une demande au noeud final d'API Red Hat OpenShift on IBM Cloud Container Platform. Vous pouvez définir ces déclencheurs avec GitHub, GitLab, Bitbucket ou des déclencheurs de webhook génériques.
oc set triggers bc $PRIVREPO --from-gitlab -
Pour ajouter un webhook dans le référentiel GitLab, vous avez besoin d'une URL et d'une valeur confidentielle (secret).
- Pour l'URL du webhook GitLab,
oc describe bc/$PRIVREPO | grep -A 1 "GitLab" - Pour le secret qui doit être transmis à l'URL du webhook,
oc get bc/$PRIVREPO -o yaml | grep -A 3 "\- gitlab" - **Remplacez **
<secret>dans l'URL GitLab du webhook la valeur secrète sous gitlab dans la sortie de la commande ci-dessus.
- Pour l'URL du webhook GitLab,
-
Ouvrez votre repo git privé dans un navigateur en utilisant le lien Git repo HTTPS puis cliquez sur Settings et cliquez sur Webhooks.
-
Collez l'URL, sélectionnez Push events comme Trigger et cliquez sur Add webhook. Le message
Webhook was createddoit s'afficher. -
Mettez à jour ImagePolicy dans l'élément ImageStream pour interroger Container Registry à un intervalle planifié afin de synchroniser les métadonnées de balise et d'image. Cette opération mettra à jour la définition de
tags.oc tag $MYREGISTRY/$MYNAMESPACE/${PRIVREPO}:latest ${PRIVREPO}:latest --scheduled=true -
Ouvrez le dépôt cloné dans un IDE pour mettre à jour la balise
h1du fichier local public/index.html et la remplacer parCongratulations! <insert your name>. -
Sauvegarder et pousser le code dans le référentiel.
git add public/index.htmlgit commit -m "Updated with my name"git push -u origin master -
Vous pouvez vérifier la progression de la génération et du déploiement avec la commande
oc status. Une fois le déploiement terminé, actualisez l'adresse de l'hôte (HOST) de la route pour voir l'application Web mise à jour.Parfois, le déploiement peut prendre jusqu'à 15 minutes pour importer le dernier flux d'images. Vous pouvez attendre ou effectuer une importation manuelle à l'aide de la commande
oc import-image $PRIVREPO. Consultez ce lien pour plus d'informations.
(Facultatif) Utilisation de votre domaine personnalisé
Pour cette section, vous devez posséder un domaine personnalisé et pouvoir modifier les enregistrements DNS du domaine. Vous devez créer un enregistrement CNAME désignant le domaine fourni par IBM.
Les étapes de configuration de l'enregistrement CNAME varient selon votre fournisseur DNS. Sous Gestion DNS/Zone, dans votre domaine, ajoutez un nouvel enregistrement CNAME, définissez Host(name) sur openshiftapp ou sur tout sous-domaine de votre choix et définissez Points to sur le domaine fourni par IBM, sans HTTP ou HTTPS
Avec HTTP
- Créez une route exposant le service à un nom d'hôte en remplaçant
<HOSTNAME>par votre nom d'hôte (par exemple, www.example.com ou openshiftapp.example.com), afin que les clients externes puissent l'atteindre par leur nom.oc expose svc/$PRIVREPO --hostname=<HOSTNAME> --name=$PRIVREPO-domain --port=3000 - Accédez à votre application à l'adresse
http://<HOSTNAME>/
Avec HTTPS
- Pour créer une route HTTPS sécurisée, vous pouvez utiliser votre propre certificat et vos fichiers de clés à partir d'une autorité de certification telle que Let's Encrypt ou une commande via Secrets Manager. Transmettez-les à l'aide de la commande
create routeIci, vous avez utilisé une terminaison Edge. Pour en savoir plus sur les autres routes sécurisées et types de terminaison possibles, telles que passe-système et rechiffrement, exécutez la commandeoc create route edge $PRIVREPO-httpsca --service=$PRIVREPO --cert=example.pem --key=example.key --hostname=<www.HOSTNAME> --port=3000oc create route --help
Suppression de ressources
-
Supprimez tous les objets ressource spécifiques à une application :
oc delete all --selector app=$PRIVREPO oc delete all --selector app=$PRIVREG oc delete all --selector app=$MYPROJECTPour répertorier les noms d'application dans le projet, exécutez
oc get svc | awk '{print $1}' -
Supprimez le projet :
oc delete project $MYPROJECT -
Supprimez le référentiel d'application:
- Dans le panneau de navigation de la page de référentiel Git, cliquez sur Paramètres > Général.
- Cliquez sur Développer en regard de Avancé.
- Cliquez sur Supprimer le projet et confirmez la suppression du projet.
-
Supprimez la ou les images de conteneur de Container Registry:
- A l'aide de votre navigateur, accédez à la page des référentiels de Container Registry.
- Sélectionnez les images créées dans le cadre de ce tutoriel et supprimez-les.
-
Supprimez le cluster que vous avez créé.