Pour commencer

Plate-forme de conteneurs OpenShift 4.12

Démarrer avec OpenShift Container Platform

Red Hat OpenShift Documentation Team

Résumé

Ce document fournit des informations pour vous aider à démarrer avec OpenShift Container Platform. Il comprend des définitions des termes courants utilisés dans Kubernetes et OpenShift Container Platform. Il contient également une présentation de la console web d'OpenShift Container Platform, ainsi que de la création et du développement d'applications à l'aide de l'interface en ligne de commande.

Chapitre 1. Aperçu de Kubernetes

Kubernetes est un outil d'orchestration de conteneurs open source développé par Google. Kubernetes permet d'exécuter et de gérer des charges de travail basées sur des conteneurs. Le cas d'utilisation le plus courant de Kubernetes est le déploiement d'un ensemble de microservices interconnectés, construisant une application de manière native dans le nuage. Vous pouvez créer des clusters Kubernetes qui peuvent s'étendre sur des hôtes dans des clouds sur site, publics, privés ou hybrides.

Traditionnellement, les applications étaient déployées sur un seul système d'exploitation. Avec la virtualisation, vous pouvez diviser l'hôte physique en plusieurs hôtes virtuels. Travailler avec des instances virtuelles sur des ressources partagées n'est pas optimal en termes d'efficacité et d'évolutivité. Étant donné qu'une machine virtuelle (VM) consomme autant de ressources qu'une machine physique, la fourniture de ressources à une VM, telles que l'unité centrale, la mémoire vive et l'espace de stockage, peut s'avérer coûteuse. En outre, vous risquez de voir les performances de votre application se dégrader en raison de l'utilisation d'instances virtuelles sur des ressources partagées.

Figure 1.1. Évolution des technologies de conteneurs pour les déploiements classiques

247 OpenShift Kubernetes Overview

Pour résoudre ce problème, vous pouvez utiliser des technologies de conteneurisation qui séparent les applications dans un environnement conteneurisé. À l'instar d'une machine virtuelle, un conteneur possède son propre système de fichiers, son vCPU, sa mémoire, son espace de traitement, ses dépendances, etc. Les conteneurs sont découplés de l'infrastructure sous-jacente et sont portables à travers les nuages et les distributions de systèmes d'exploitation. Les conteneurs sont par nature beaucoup plus légers qu'un système d'exploitation complet et sont des processus isolés légers qui s'exécutent sur le noyau du système d'exploitation. Les VM sont plus lentes à démarrer et constituent une abstraction du matériel physique. Les VM s'exécutent sur une seule machine à l'aide d'un hyperviseur.

Vous pouvez effectuer les actions suivantes en utilisant Kubernetes :

  • Partage des ressources
  • Orchestrer les conteneurs sur plusieurs hôtes
  • Installation de nouvelles configurations matérielles
  • Exécution de contrôles de santé et d'applications d'autoréparation
  • Mise à l'échelle des applications conteneurisées

1.1. Composants Kubernetes

Tableau 1.1. Composants Kubernetes

ComposantObjectif

kube-proxy

S'exécute sur chaque nœud du cluster et maintient le trafic réseau entre les ressources Kubernetes.

kube-controller-manager

Régit l'état de la grappe.

kube-scheduler

Attribue des modules aux nœuds.

etcd

Stocke les données de la grappe.

kube-apiserver

Valide et configure les données pour les objets API.

kubelet

S'exécute sur les nœuds et lit les manifestes des conteneurs. S'assure que les conteneurs définis ont démarré et sont en cours d'exécution.

kubectl

Permet de définir la manière dont vous souhaitez exécuter les charges de travail. Utilisez la commande kubectl pour interagir avec la commande kube-apiserver.

Nœud

Le nœud est une machine physique ou une VM dans un cluster Kubernetes. Le plan de contrôle gère chaque nœud et planifie les pods sur les nœuds du cluster Kubernetes.

durée d'exécution du conteneur

exécute des conteneurs sur un système d'exploitation hôte. Vous devez installer un moteur d'exécution de conteneur sur chaque nœud pour que les pods puissent s'exécuter sur le nœud.

Stockage permanent

Stocke les données même après l'arrêt de l'appareil. Kubernetes utilise des volumes persistants pour stocker les données de l'application.

container-registry

Stocke les images des conteneurs et y accède.

Cosse

Le pod est la plus petite unité logique de Kubernetes. Un pod contient un ou plusieurs conteneurs à exécuter dans un worker node.

1.2. Ressources Kubernetes

Une ressource personnalisée est une extension de l'API Kubernetes. Vous pouvez personnaliser les clusters Kubernetes en utilisant des ressources personnalisées. Les opérateurs sont des extensions logicielles qui gèrent les applications et leurs composants à l'aide de ressources personnalisées. Kubernetes utilise un modèle déclaratif lorsque vous souhaitez obtenir un résultat fixe lors de l'utilisation des ressources du cluster. En utilisant des opérateurs, Kubernetes définit ses états de manière déclarative. Vous pouvez modifier les ressources du cluster Kubernetes en utilisant des commandes impératives. Un opérateur agit comme une boucle de contrôle qui compare en permanence l'état souhaité des ressources avec l'état réel des ressources et met en place des actions pour aligner la réalité sur l'état souhaité.

Figure 1.2. Aperçu du cluster Kubernetes

247 OpenShift Kubernetes Overview 1

Tableau 1.2. Ressources Kubernetes

RessourcesObjectif

Service

Kubernetes utilise des services pour exposer une application en cours d'exécution sur un ensemble de pods.

ReplicaSets

Kubernetes utilise le site ReplicaSets pour maintenir un numéro de pod constant.

Déploiement

Objet ressource qui gère le cycle de vie d'une application.

Kubernetes est un composant essentiel d'OpenShift Container Platform. Vous pouvez utiliser OpenShift Container Platform pour développer et exécuter des applications conteneurisées. Fondée sur Kubernetes, OpenShift Container Platform intègre la même technologie que celle qui sert de moteur aux télécommunications massives, à la vidéo en continu, aux jeux, aux services bancaires et à d'autres applications. Vous pouvez étendre vos applications conteneurisées au-delà d'un seul cloud à des environnements sur site et multi-cloud en utilisant OpenShift Container Platform.

Figure 1.3. Architecture de Kubernetes

247 OpenShift Kubernetes Overview 2

Un cluster est une unité de calcul unique composée de plusieurs nœuds dans un environnement cloud. Un cluster Kubernetes comprend un plan de contrôle et des nœuds de travail. Vous pouvez exécuter des conteneurs Kubernetes sur différentes machines et dans différents environnements. Le nœud du plan de contrôle contrôle et maintient l'état d'un cluster. Vous pouvez exécuter l'application Kubernetes en utilisant des nœuds de travail. Vous pouvez utiliser l'espace de noms Kubernetes pour différencier les ressources d'un cluster. Le cadrage de l'espace de noms s'applique aux objets de ressources, tels que le déploiement, le service et les pods. Vous ne pouvez pas utiliser l'espace de noms pour les objets de ressources à l'échelle du cluster, tels que la classe de stockage, les nœuds et les volumes persistants.

1.3. Lignes directrices conceptuelles de Kubernetes

Avant de commencer à utiliser OpenShift Container Platform, prenez en compte ces lignes directrices conceptuelles de Kubernetes :

  • Commencez par un ou plusieurs nœuds de travail pour exécuter les charges de travail des conteneurs.
  • Gérer le déploiement de ces charges de travail à partir d'un ou plusieurs nœuds du plan de contrôle.
  • Envelopper les conteneurs dans une unité de déploiement appelée pod. L'utilisation de pods fournit des métadonnées supplémentaires avec le conteneur et offre la possibilité de regrouper plusieurs conteneurs dans une seule entité de déploiement.
  • Créer des types d'actifs particuliers. Par exemple, les services sont représentés par un ensemble de pods et une politique qui définit comment y accéder. Cette politique permet aux conteneurs de se connecter aux services dont ils ont besoin, même s'ils ne disposent pas des adresses IP spécifiques de ces services. Les contrôleurs de réplication sont une autre ressource spéciale qui indique combien de répliques de pods sont nécessaires pour fonctionner à un moment donné. Vous pouvez utiliser cette capacité pour adapter automatiquement votre application à la demande actuelle.

L'API du cluster OpenShift Container Platform est 100% Kubernetes. Rien ne change entre un conteneur fonctionnant sur n'importe quel autre Kubernetes et celui fonctionnant sur OpenShift Container Platform. L'application ne subit aucune modification. OpenShift Container Platform apporte des fonctionnalités à valeur ajoutée pour fournir des améliorations prêtes pour l'entreprise à Kubernetes. L'outil CLI d'OpenShift Container Platform (oc) est compatible avec kubectl. Bien que l'API de Kubernetes soit accessible à 100 % dans OpenShift Container Platform, la ligne de commande kubectl manque de nombreuses fonctionnalités qui pourraient la rendre plus conviviale. OpenShift Container Platform offre un ensemble de fonctionnalités et d'outils en ligne de commande tels que oc. Bien que Kubernetes excelle dans la gestion de vos applications, il ne spécifie ni ne gère les exigences au niveau de la plateforme ou les processus de déploiement. Des outils et des processus de gestion de plateforme puissants et flexibles sont des avantages importants qu'offre OpenShift Container Platform. Vous devez ajouter l'authentification, la mise en réseau, la sécurité, la surveillance et la gestion des journaux à votre plateforme de conteneurisation.

Chapitre 2. Aperçu de la plateforme OpenShift Container

OpenShift Container Platform est une plateforme de conteneurs Kubernetes basée sur le cloud. La fondation d'OpenShift Container Platform est basée sur Kubernetes et partage donc la même technologie. Elle est conçue pour permettre aux applications et aux centres de données qui les prennent en charge de passer de quelques machines et applications à des milliers de machines desservant des millions de clients.

OpenShift Container Platform vous permet de faire ce qui suit :

  • Fournir aux développeurs et aux services informatiques des plateformes d'applications en nuage qui peuvent être utilisées pour déployer des applications sur des ressources sécurisées et évolutives.
  • Nécessitent une configuration et une gestion minimales.
  • Apporter la plateforme Kubernetes aux centres de données et au cloud des clients.
  • Répondre aux exigences en matière de sécurité, de confidentialité, de conformité et de gouvernance.

Avec son fondement dans Kubernetes, OpenShift Container Platform incorpore la même technologie qui sert de moteur aux télécommunications massives, à la vidéo en continu, aux jeux, à la banque et à d'autres applications. Sa mise en œuvre dans les technologies ouvertes Red Hat vous permet d'étendre vos applications conteneurisées au-delà d'un seul cloud à des environnements sur site et multicloud.

2.1. Glossaire des termes courants pour OpenShift Container Platform

Ce glossaire définit les termes courants de Kubernetes et d'OpenShift Container Platform.

Kubernetes
Kubernetes est un moteur d'orchestration de conteneurs open source permettant d'automatiser le déploiement, la mise à l'échelle et la gestion des applications conteneurisées.
Conteneurs
Les conteneurs sont des instances d'application et des composants qui s'exécutent dans des conteneurs conformes à l'OCI sur les nœuds de travail. Un conteneur est le temps d'exécution d'une image conforme à l'Open Container Initiative (OCI). Une image est une application binaire. Un nœud de travailleur peut exécuter de nombreux conteneurs. La capacité d'un nœud est liée aux capacités de mémoire et d'unité centrale des ressources sous-jacentes, qu'il s'agisse d'un nuage, de matériel ou de virtualisation.
Cosse

Un pod est un ou plusieurs conteneurs déployés ensemble sur un hôte. Il s'agit d'un groupe de conteneurs colocalisés avec des ressources partagées telles que des volumes et des adresses IP. Un pod est également la plus petite unité de calcul définie, déployée et gérée.

Dans OpenShift Container Platform, les pods remplacent les conteneurs d'application individuels en tant que plus petite unité déployable.

Les pods sont l'unité orchestrée dans OpenShift Container Platform. OpenShift Container Platform planifie et exécute tous les conteneurs d'un pod sur le même nœud. Les applications complexes sont composées de nombreux pods, chacun avec ses propres conteneurs. Elles interagissent avec l'extérieur et aussi avec l'intérieur de l'environnement d'OpenShift Container Platform.

Jeu de répliques et contrôleur de réplication
L'ensemble de répliques Kubernetes et le contrôleur de réplication OpenShift Container Platform sont tous deux disponibles. Le rôle de ce composant est de s'assurer que le nombre spécifié de répliques de pods est en cours d'exécution à tout moment. Si des pods sortent ou sont supprimés, l'ensemble de répliques ou le contrôleur de réplication en démarre d'autres. Si le nombre de pods en cours d'exécution est supérieur aux besoins, l'ensemble de réplicas en supprime autant que nécessaire pour atteindre le nombre de réplicas spécifié.
Déploiement et DeploymentConfig

OpenShift Container Platform implémente à la fois les objets Kubernetes Deployment et les objets OpenShift Container Platform DeploymentConfigs. Les utilisateurs peuvent choisir l'un ou l'autre.

Deployment contrôlent la manière dont une application est déployée sous forme de pods. Ils identifient le nom de l'image du conteneur à extraire du registre et à déployer en tant que module sur un nœud. Ils définissent le nombre de répliques du module à déployer, en créant un ensemble de répliques pour gérer le processus. Les étiquettes indiquées indiquent au planificateur sur quels nœuds déployer le module. L'ensemble des étiquettes est inclus dans la définition du module que l'ensemble de répliques instancie.

Deployment sont capables de mettre à jour les pods déployés sur les nœuds de travail en fonction de la version des objets Deployment et des diverses stratégies de déploiement pour gérer la disponibilité acceptable de l'application. Les objets DeploymentConfig d'OpenShift Container Platform ajoutent les caractéristiques supplémentaires des déclencheurs de changement, qui sont capables de créer automatiquement de nouvelles versions des objets Deployment lorsque de nouvelles versions de l'image du conteneur sont disponibles, ou d'autres changements.

Service

Un service définit un ensemble logique de modules et de politiques d'accès. Il fournit des adresses IP internes permanentes et des noms d'hôtes que d'autres applications peuvent utiliser lors de la création et de la destruction des pods.

Les couches de service relient les composants de l'application entre eux. Par exemple, un service web frontal se connecte à une instance de base de données en communiquant avec son service. Les services permettent un simple équilibrage de la charge interne entre les composants de l'application. OpenShift Container Platform injecte automatiquement des informations sur les services dans les conteneurs en cours d'exécution pour faciliter la découverte.

Itinéraire
Une route est un moyen d'exposer un service en lui donnant un nom d'hôte accessible de l'extérieur, tel que www.example.com. Chaque route se compose d'un nom de route, d'un sélecteur de service et, éventuellement, d'une configuration de sécurité. Un routeur peut consommer une route définie et les points d'extrémité identifiés par son service pour fournir un nom qui permet aux clients externes d'accéder à vos applications. Bien qu'il soit facile de déployer une application multi-niveaux complète, le trafic provenant de n'importe où en dehors de l'environnement OpenShift Container Platform ne peut pas atteindre l'application sans la couche de routage.
Construire
Une compilation est le processus de transformation des paramètres d'entrée en un objet résultant. Le plus souvent, le processus est utilisé pour transformer les paramètres d'entrée ou le code source en une image exécutable. Un objet BuildConfig est la définition de l'ensemble du processus de construction. OpenShift Container Platform exploite Kubernetes en créant des conteneurs à partir d'images de construction et en les poussant vers le registre intégré.
Projet

OpenShift Container Platform utilise des projets pour permettre à des groupes d'utilisateurs ou de développeurs de travailler ensemble, servant d'unité d'isolation et de collaboration. Il définit la portée des ressources, permet aux administrateurs de projets et aux collaborateurs de gérer les ressources, et restreint et suit les ressources de l'utilisateur à l'aide de quotas et de limites.

Un projet est un espace de noms Kubernetes avec des annotations supplémentaires. Il s'agit du véhicule central de gestion de l'accès aux ressources pour les utilisateurs réguliers. Un projet permet à une communauté d'utilisateurs d'organiser et de gérer son contenu de manière isolée par rapport aux autres communautés. Les utilisateurs doivent recevoir l'accès aux projets de la part des administrateurs. Mais les administrateurs de clusters peuvent autoriser les développeurs à créer leurs propres projets, auquel cas les utilisateurs ont automatiquement accès à leurs propres projets.

Chaque projet possède son propre ensemble d'objets, de politiques, de contraintes et de comptes de service.

Les projets sont également connus sous le nom d'espaces de noms.

Opérateurs

Un opérateur est une application native Kubernetes. L'objectif d'un Operator est de mettre les connaissances opérationnelles dans un logiciel. Auparavant, ces connaissances résidaient uniquement dans l'esprit des administrateurs, dans diverses combinaisons de scripts shell ou dans des logiciels d'automatisation tels qu'Ansible. Elle était en dehors de votre cluster Kubernetes et difficile à intégrer. Avec les opérateurs, tout cela change.

Les opérateurs sont conçus spécialement pour vos applications. Ils mettent en œuvre et automatisent les activités courantes du jour 1, telles que l'installation et la configuration, ainsi que les activités du jour 2, telles que l'augmentation et la réduction d'échelle, la reconfiguration, les mises à jour, les sauvegardes, les défaillances et les restaurations dans un logiciel fonctionnant dans votre cluster Kubernetes en s'intégrant nativement aux concepts et aux API de Kubernetes. C'est ce qu'on appelle une application native Kubernetes.

Avec les opérateurs, les applications ne doivent pas être traitées comme une collection de primitives, telles que les pods, les déploiements, les services ou les cartes de configuration. Au lieu de cela, les opérateurs doivent être traités comme un objet unique qui expose les options qui ont un sens pour l'application.

2.2. Comprendre OpenShift Container Platform

OpenShift Container Platform est un environnement Kubernetes permettant de gérer le cycle de vie des applications basées sur des conteneurs et leurs dépendances sur différentes plateformes informatiques, telles que bare metal, virtualisées, sur site et dans le cloud. OpenShift Container Platform déploie, configure et gère les conteneurs. OpenShift Container Platform offre une facilité d'utilisation, une stabilité et une personnalisation de ses composants.

OpenShift Container Platform utilise un certain nombre de ressources informatiques, appelées nœuds. Un nœud dispose d'un système d'exploitation léger et sécurisé basé sur Red Hat Enterprise Linux (RHEL), connu sous le nom de Red Hat Enterprise Linux CoreOS (RHCOS).

Une fois qu'un nœud est démarré et configuré, il obtient un moteur d'exécution de conteneur, tel que CRI-O ou Docker, pour gérer et exécuter les images des charges de travail de conteneur qui lui sont programmées. L'agent Kubernetes, ou kubelet, planifie les charges de travail des conteneurs sur le nœud. Le kubelet est chargé d'enregistrer le nœud dans le cluster et de recevoir les détails des charges de travail des conteneurs.

OpenShift Container Platform configure et gère le réseau, l'équilibrage de charge et le routage du cluster. OpenShift Container Platform ajoute des services de cluster pour surveiller l'état et les performances du cluster, la journalisation et la gestion des mises à niveau.

Le registre d'images de conteneurs et OperatorHub fournissent des produits certifiés Red Hat et des logiciels développés par la communauté pour fournir divers services d'application au sein du cluster. Ces applications et services gèrent les applications déployées dans le cluster, les bases de données, les frontends et les interfaces utilisateur, les runtimes d'application et l'automatisation des activités, ainsi que les services aux développeurs pour le développement et le test des applications de conteneurs.

Vous pouvez gérer les applications au sein du cluster soit manuellement en configurant des déploiements de conteneurs fonctionnant à partir d'images préconstruites, soit par l'intermédiaire de ressources connues sous le nom d'opérateurs. Vous pouvez créer des images personnalisées à partir d'images préconstruites et de code source, et stocker ces images personnalisées localement dans un registre interne, privé ou public.

La couche Multicluster Management permet de gérer plusieurs clusters, y compris leur déploiement, leur configuration, leur conformité et la distribution des charges de travail dans une console unique.

Red Hat OpenShift Kubernetes Engine

2.3. Installation d'OpenShift Container Platform

Le programme d'installation d'OpenShift Container Platform vous offre une grande flexibilité. Vous pouvez utiliser le programme d'installation pour déployer un cluster sur une infrastructure que le programme d'installation fournit et que le cluster maintient ou déployer un cluster sur une infrastructure que vous préparez et maintenez.

Pour plus d'informations sur le processus d'installation, les plates-formes prises en charge et le choix d'une méthode d'installation et de préparation de votre cluster, voir ce qui suit :

2.4. Prochaines étapes

2.4.1. Pour les développeurs

Développez et déployez des applications conteneurisées avec OpenShift Container Platform. OpenShift Container Platform est une plateforme de développement et de déploiement d'applications conteneurisées. La documentation d'OpenShift Container Platform vous aide :

Utilisez la perspective Developer dans la console web d'OpenShift Container Platform pour créer et déployer des applications.

Utilisez la vueTopology pour voir vos applications, surveiller l'état, connecter et grouper des composants, et modifier votre base de code.

  • Use the developer CLI tool (odo): L'outil CLI odo permet aux développeurs de créer des applications à un ou plusieurs composants et d'automatiser les configurations de déploiement, de construction et de route de service. Il fait abstraction des concepts complexes de Kubernetes et d'OpenShift Container Platform, ce qui vous permet de vous concentrer sur le développement de vos applications.
  • Create CI/CD Pipelines: Les pipelines sont des systèmes sans serveur, cloud-native, d'intégration continue et de déploiement continu qui s'exécutent dans des conteneurs isolés. Ils utilisent les ressources personnalisées standard de Tekton pour automatiser les déploiements et sont conçus pour les équipes décentralisées travaillant sur une architecture basée sur les microservices.
  • Deploy Helm charts: Helm 3 est un gestionnaire de paquets qui aide les développeurs à définir, installer et mettre à jour des paquets d'applications sur Kubernetes. Un diagramme Helm est un format d'emballage qui décrit une application qui peut être déployée à l'aide de la CLI Helm.
  • Understand image builds: Choisissez parmi différentes stratégies de construction (Docker, S2I, personnalisée et pipeline) qui peuvent inclure différents types de matériaux sources (dépôts Git, entrées binaires locales et artefacts externes). Ensuite, suivez des exemples de types de construction, des constructions de base aux constructions avancées.
  • Create container images: Une image de conteneur est l'élément de base des applications OpenShift Container Platform (et Kubernetes). La définition de flux d'images vous permet de rassembler plusieurs versions d'une image en un seul endroit au fur et à mesure que vous poursuivez son développement. Les conteneurs S2I vous permettent d'insérer votre code source dans un conteneur de base qui est configuré pour exécuter du code d'un type particulier, tel que Ruby, Node.js ou Python.
  • Create deployments: Utilisez les objets Deployment et DeploymentConfig pour exercer une gestion fine sur les applications. Gérer les déploiements en utilisant la page Workloads ou OpenShift CLI (oc). Apprendre les stratégies de roulement, de recréation et de déploiement personnalisé.
  • Create templates: Utilisez les modèles existants ou créez vos propres modèles qui décrivent comment une application est construite ou déployée. Un modèle peut combiner des images avec des descriptions, des paramètres, des répliques, des ports exposés et d'autres contenus qui définissent comment une application peut être exécutée ou construite.
  • Understand Operators: Les opérateurs sont la méthode préférée pour créer des applications sur le cluster pour OpenShift Container Platform 4.12. Découvrez le Framework Operator et comment déployer des applications à l'aide d'Operators installés dans vos projets.
  • Develop Operators: Les opérateurs sont la méthode préférée pour créer des applications sur le cluster pour OpenShift Container Platform 4.12. Découvrez le processus de construction, de test et de déploiement des opérateurs. Ensuite, créez vos propres opérateurs basés sur Ansible ou Helm, ou configurez la surveillance Prometheus intégrée à l'aide du SDK Operator.
  • REST API reference: Découvrez les points d'extrémité de l'interface de programmation d'applications d'OpenShift Container Platform.

2.4.2. Pour les administrateurs

Chapitre 3. Création et construction d'une application à l'aide de la console web

3.1. Avant de commencer

  • Passez en revue l'accès à la console web.
  • Vous devez pouvoir accéder à une instance en cours d'exécution d'OpenShift Container Platform. Si vous n'y avez pas accès, contactez votre administrateur de cluster.

3.2. Se connecter à la console web

Vous pouvez vous connecter à la console web d'OpenShift Container Platform pour accéder à votre cluster et le gérer.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.

Procédure

  • Connectez-vous à la console web d'OpenShift Container Platform en utilisant vos identifiants de connexion.

Vous êtes redirigé vers la page Projects. Pour les utilisateurs non administratifs, la vue par défaut est la perspective Developer. Pour les administrateurs de clusters, la vue par défaut est la perspective Administrator. Si vous n'avez pas les privilèges cluster-admin, vous ne verrez pas la perspective Administrator dans votre console web.

La console web offre deux perspectives : la perspective Administrator et la perspective Developer. La perspective Developer fournit des flux de travail spécifiques aux cas d'utilisation des développeurs.

Figure 3.1. Changeur de perspective

500

Utilisez le sélecteur de perspective pour passer à la perspective Developer. La vue Topology avec les options de création d'une application s'affiche.

3.3. Création d'un nouveau projet

Un projet permet à une communauté d'utilisateurs d'organiser et de gérer leur contenu de manière isolée. Les projets sont des extensions d'OpenShift Container Platform aux espaces de noms Kubernetes. Les projets ont des fonctionnalités supplémentaires qui permettent à l'utilisateur de s'auto-provisionner.

Les utilisateurs doivent recevoir l'accès aux projets de la part des administrateurs. Les administrateurs de clusters peuvent autoriser les développeurs à créer leurs propres projets. Dans la plupart des cas, les utilisateurs ont automatiquement accès à leurs propres projets.

Chaque projet possède son propre ensemble d'objets, de politiques, de contraintes et de comptes de service.

Conditions préalables

  • Vous êtes connecté à la console web de OpenShift Container Platform.
  • Vous êtes dans la perspective Developer.
  • Vous disposez des rôles et autorisations appropriés dans un projet pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.

Procédure

  1. Dans la vue Add, sélectionnez ProjectCreate Project.
  2. Dans le champ Name, entrez user-getting-started.
  3. Facultatif : dans le champ Display name, saisissez Getting Started with OpenShift.

    Note

    Display name et Description sont facultatifs.

  4. Cliquez sur Create.

Vous avez créé votre premier projet sur OpenShift Container Platform.

3.4. Octroi de droits d'affichage

OpenShift Container Platform crée automatiquement quelques comptes de service spéciaux dans chaque projet. Le compte de service par défaut est responsable de l'exécution des pods. OpenShift Container Platform utilise et injecte ce compte de service dans chaque pod lancé.

La procédure suivante crée un objet RoleBinding pour l'objet par défaut ServiceAccount. Le compte de service communique avec l'API OpenShift Container Platform pour connaître les pods, les services et les ressources du projet.

Conditions préalables

  • Vous êtes connecté à la console web de OpenShift Container Platform.
  • Vous avez une image déployée.
  • Vous êtes dans la perspective Administrator.

Procédure

  1. À partir du site Administrator perspective, naviguez jusqu'à User Management et cliquez sur RoleBindings.
  2. Cliquez sur Create binding.
  3. Sélectionnez Namespace role binding (RoleBinding).
  4. Dans le champ Name, entrez sa-user-account.
  5. Dans le champ Namespace, recherchez et sélectionnez user-getting-started.
  6. Dans le champ Role name, recherchez view et sélectionnez view.
  7. Dans le champ Subject, sélectionnez ServiceAccount.
  8. Dans le champ Subject namespace, recherchez et sélectionnez user-getting-started.
  9. Dans le champ Subject name, entrez default.
  10. Cliquez sur Create.

3.5. Déployer votre première image

La manière la plus simple de déployer une application dans OpenShift Container Platform est d'exécuter une image de conteneur existante. La procédure suivante déploie un composant frontal d'une application appelée national-parks-app. L'application web affiche une carte interactive. La carte indique l'emplacement des principaux parcs nationaux dans le monde.

Conditions préalables

  • Vous êtes connecté à la console web de OpenShift Container Platform.
  • Vous êtes dans la perspective Developer.
  • Vous disposez des rôles et autorisations appropriés dans un projet pour créer des applications et d'autres charges de travail dans OpenShift Container Platform.

Procédure

  1. Dans la vue Add de la perspective Developer, cliquez sur Container images pour ouvrir une boîte de dialogue.
  2. Dans le champ Image Name, entrez ce qui suit : quay.io/openshiftroadshow/parksmap:latest
  3. Assurez-vous que vous disposez des valeurs actuelles pour les éléments suivants :

    1. Application : national-parks-app
    2. Nom : parksmap
  4. Sélectionnez Deployment comme Resource.
  5. Sélectionnez Create route to the application.
  6. Dans la section Advanced Options, cliquez sur Labels et ajoutez des étiquettes pour mieux identifier ce déploiement par la suite. Les étiquettes permettent d'identifier et de filtrer les composants dans la console web et dans la ligne de commande. Ajoutez les étiquettes suivantes :

    • app=national-parks-app
    • component=parksmap
    • role=frontend
  7. Cliquez sur Create.

Vous êtes redirigé vers la page Topology où vous pouvez voir le déploiement de parksmap dans l'application national-parks-app.

3.5.1. Examen de la nacelle

OpenShift Container Platform s'appuie sur le concept Kubernetes de pod, qui est un ou plusieurs conteneurs déployés ensemble sur un hôte, et la plus petite unité de calcul qui peut être définie, déployée et gérée. Les pods sont l'équivalent approximatif d'une instance de machine, physique ou virtuelle, pour un conteneur.

Le panneau Overview vous permet d'accéder à de nombreuses fonctionnalités du déploiement parksmap. Les onglets Details et Resources vous permettent de mettre à l'échelle les pods d'application, de vérifier l'état de la construction, les services et les itinéraires.

Conditions préalables

  • Vous êtes connecté à la console web de OpenShift Container Platform.
  • Vous êtes dans la perspective Developer.
  • Vous avez une image déployée.

Procédure

  • Cliquez sur D parksmap dans la vue Topology pour ouvrir le panneau Overview.

    Figure 3.2. Déploiement de Parksmap

    getting started examine pod

    Le panneau Overview comprend les onglets Details, Resources et Observe. L'onglet Details peut être affiché par défaut.

    Tableau 3.1. Définitions des onglets du tableau de bord

    OngletDéfinition

    Details

    Permet de mettre à l'échelle votre application et de visualiser la configuration du pod, comme les étiquettes, les annotations et l'état de l'application.

    Resources

    Affiche les ressources associées au déploiement.

    Les pods sont les unités de base des applications OpenShift Container Platform. Vous pouvez voir combien de pods sont utilisés, quel est leur état, et vous pouvez consulter les journaux.

    Services qui sont créés pour votre pod et les ports qui leur sont attribués sont répertoriés sous la rubrique Services.

    Routes permettent un accès externe aux pods et une URL est utilisée pour y accéder.

    Observe

    Consultez diverses informations sur Events et Metrics en rapport avec votre pod.

3.5.2. Mise à l'échelle de l'application

Dans Kubernetes, un objet Deployment définit la manière dont une application est déployée. Dans la plupart des cas, les utilisateurs utilisent les ressources Pod, Service, ReplicaSets, et Deployment ensemble. Dans la plupart des cas, OpenShift Container Platform crée les ressources pour vous.

Lorsque vous déployez l'image national-parks-app, une ressource de déploiement est créée. Dans cet exemple, un seul Pod est déployé.

La procédure suivante permet de mettre à l'échelle le site national-parks-image pour utiliser deux instances.

Conditions préalables

  • Vous êtes connecté à la console web de OpenShift Container Platform.
  • Vous êtes dans la perspective Developer.
  • Vous avez une image déployée.

Procédure

  1. Dans la vue Topology, cliquez sur l'application national-parks-app.
  2. Cliquez sur l'onglet Details.
  3. Utilisez la flèche vers le haut pour faire passer le module à deux instances.

    Figure 3.3. Application de mise à l'échelle

    500
    Note

    La mise à l'échelle des applications peut se faire rapidement car OpenShift Container Platform lance une nouvelle instance d'une image existante.

  4. Utilisez la flèche vers le bas pour réduire le pod à une seule instance.

3.6. Déployer une application Python

La procédure suivante permet de déployer un service back-end pour l'application parksmap. L'application Python effectue des requêtes géospatiales en 2D sur une base de données MongoDB afin de localiser et de renvoyer les coordonnées cartographiques de tous les parcs nationaux du monde.

Le service back-end déployé qui est nationalparks.

Conditions préalables

  • Vous êtes connecté à la console web de OpenShift Container Platform.
  • Vous êtes dans la perspective Developer.
  • Vous avez une image déployée.

Procédure

  1. Dans la vue Add de la perspective Developer, cliquez sur Import from Git pour ouvrir une boîte de dialogue.
  2. Saisissez l'URL suivante dans le champ Git Repo URL : https://github.com/openshift-roadshow/nationalparks-py.git

    Une image de constructeur est automatiquement détectée.

    Note

    Si l'image de construction détectée est Dockerfile, sélectionnez Edit Import Strategy. Sélectionnez Builder Image puis cliquez sur Python.

  3. Faites défiler jusqu'à la section General.
  4. Assurez-vous que vous disposez des valeurs actuelles pour les éléments suivants :

    1. Application : national-parks-app
    2. Nom : nationalparks
  5. Sélectionnez Deployment comme Resource.
  6. Sélectionnez Create route to the application.
  7. Dans la section Advanced Options, cliquez sur Labels et ajoutez des étiquettes pour mieux identifier ce déploiement par la suite. Les étiquettes permettent d'identifier et de filtrer les composants dans la console web et dans la ligne de commande. Ajoutez les étiquettes suivantes :

    1. app=national-parks-app
    2. component=nationalparks
    3. role=backend
    4. type=parksmap-backend
  8. Cliquez sur Create.
  9. Dans la vue Topology, sélectionnez l'application nationalparks.

    Note

    Cliquez sur l'onglet Resources. Dans la section Builds, vous pouvez voir votre version en cours d'exécution.

3.7. Connexion à une base de données

Déployez et connectez une base de données MongoDB dans laquelle l'application national-parks-app stocke les informations de localisation. Une fois que vous avez marqué l'application national-parks-app comme backend pour l'outil de visualisation de cartes, le déploiement de parksmap utilise le mécanisme de découverte d'OpenShift Container Platform pour afficher automatiquement la carte.

Conditions préalables

  • Vous êtes connecté à la console web de OpenShift Container Platform.
  • Vous êtes dans la perspective Developer.
  • Vous avez une image déployée.

Procédure

  1. Dans la vue Add de la perspective Developer, cliquez sur Container images pour ouvrir une boîte de dialogue.
  2. Dans le champ Image Name, entrez quay.io/centos7/mongodb-36-centos7.
  3. Dans le champ Runtime icon, recherchez mongodb.
  4. Faites défiler la page jusqu'à la section General.
  5. Assurez-vous que vous disposez des valeurs actuelles pour les éléments suivants :

    1. Application : national-parks-app
    2. Nom : mongodb-nationalparks
  6. Sélectionnez Deployment comme Resource.
  7. Décochez la case située à côté de Create route to the application.
  8. Dans la section Advanced Options, cliquez sur Deployment pour ajouter des variables d'environnement afin d'ajouter les variables d'environnement suivantes :

    Tableau 3.2. Noms et valeurs des variables d'environnement

    NomValeur

    MONGODB_USER

    mongodb

    MONGODB_PASSWORD

    mongodb

    MONGODB_DATABASE

    mongodb

    MONGODB_ADMIN_PASSWORD

    mongodb

  9. Cliquez sur Create.

3.7.1. Création d'un secret

L'objet Secret fournit un mécanisme pour contenir des informations sensibles telles que les mots de passe, les fichiers de configuration du client OpenShift Container Platform, les informations d'identification du référentiel source privé, etc. Les secrets découplent le contenu sensible des pods. Vous pouvez monter des secrets dans des conteneurs à l'aide d'un plugin de volume ou le système peut utiliser des secrets pour effectuer des actions au nom d'un pod. La procédure suivante ajoute le secret nationalparks-mongodb-parameters et le monte dans la charge de travail nationalparks.

Conditions préalables

  • Vous êtes connecté à la console web de OpenShift Container Platform.
  • Vous êtes dans la perspective Developer.
  • Vous avez une image déployée.

Procédure

  1. Dans la perspective de Developer, naviguez vers Secrets sur la gauche de la navigation et cliquez sur Secrets.
  2. Cliquez sur CreateKey/value secret.

    1. Dans le champ Secret name, entrez nationalparks-mongodb-parameters.
    2. Entrez les valeurs suivantes pour Key et Value:

      Tableau 3.3. Clés et valeurs secrètes

      CléValeur

      MONGODB_USER

      mongodb

      DATABASE_SERVICE_NAME

      mongodb-nationalparks

      MONGODB_PASSWORD

      mongodb

      MONGODB_DATABASE

      mongodb

      MONGODB_ADMIN_PASSWORD

      mongodb

    3. Cliquez sur Create.
  3. Cliquez sur Add Secret to workload.

    1. Dans le menu déroulant, sélectionnez nationalparks comme charge de travail à ajouter.
    2. Cliquez sur Save.

Ce changement de configuration déclenche un nouveau déploiement de nationalparks avec les variables d'environnement correctement injectées.

Ressources complémentaires

3.7.2. Chargement des données et affichage de la carte des parcs nationaux

Vous avez déployé les applications parksmap et nationalparks, puis la base de données mongodb-nationalparks. Cependant, aucune donnée n'a été chargée sur into. Avant de charger les données, ajoutez les étiquettes appropriées aux déploiements mongodb-nationalparks et nationalparks.

Conditions préalables

  • Vous êtes connecté à la console web de OpenShift Container Platform.
  • Vous êtes dans la perspective Developer.
  • Vous avez une image déployée.

Procédure

  1. À partir de la vue Topology, naviguez jusqu'à nationalparks deployment et cliquez sur Resources pour récupérer les informations relatives à votre itinéraire.
  2. Copiez et collez l'URL dans votre navigateur web et ajoutez le texte suivant à la fin de l'URL :

    /ws/data/load

    Exemple de sortie

    Items inserted in database: 2893

  3. À partir de la vue Topology, naviguez jusqu'à parksmap deployment et cliquez sur Resources pour récupérer les informations relatives à votre itinéraire.
  4. Copiez et collez l'URL dans votre navigateur web pour visualiser vos parcs nationaux sur la carte du monde.

Figure 3.4. Les parcs nationaux dans le monde

getting started map national parks

Chapitre 4. Créer et construire une application à l'aide de l'interface de programmation

4.1. Avant de commencer

  • Revue de la CLI OpenShift.
  • Vous devez pouvoir accéder à une instance en cours d'exécution d'OpenShift Container Platform. Si vous n'y avez pas accès, contactez votre administrateur de cluster.
  • Vous devez avoir téléchargé et installé l'OpenShift CLI (oc).

4.2. Se connecter à l'interface CLI

Vous pouvez vous connecter à l'OpenShift CLI (oc) pour accéder et gérer votre cluster.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Vous devez avoir installé l'OpenShift CLI (oc).

Procédure

  • Connectez-vous à OpenShift Container Platform à partir du CLI en utilisant votre nom d'utilisateur et votre mot de passe ou avec un jeton OAuth :

    • Avec le nom d'utilisateur et le mot de passe :

      $ oc login -u=<username> -p=<password> --server=<your-openshift-server> --insecure-skip-tls-verify
    • Avec un jeton OAuth :

      $ oc login <https://api.your-openshift-server.com> --token=<tokenID>

Vous pouvez maintenant créer un projet ou lancer d'autres commandes pour gérer votre cluster.

Ressources complémentaires

4.3. Création d'un nouveau projet

Un projet permet à une communauté d'utilisateurs d'organiser et de gérer leur contenu de manière isolée. Les projets sont des extensions d'OpenShift Container Platform aux espaces de noms Kubernetes. Les projets ont des fonctionnalités supplémentaires qui permettent à l'utilisateur de s'auto-provisionner.

Les utilisateurs doivent recevoir l'accès aux projets de la part des administrateurs. Les administrateurs de clusters peuvent autoriser les développeurs à créer leurs propres projets. Dans la plupart des cas, les utilisateurs ont automatiquement accès à leurs propres projets.

Chaque projet possède son propre ensemble d'objets, de politiques, de contraintes et de comptes de service.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Vous devez avoir installé l'OpenShift CLI (oc).

Procédure

  • Pour créer un nouveau projet, entrez la commande suivante :

    $ oc new-project user-getting-started --display-name="Getting Started with OpenShift"

    Exemple de sortie

    Now using project "user-getting-started" on server "https://openshift.example.com:6443".

Ressources complémentaires

4.4. Octroi de droits d'affichage

OpenShift Container Platform crée automatiquement quelques comptes de service spéciaux dans chaque projet. Le compte de service par défaut est responsable de l'exécution des pods. OpenShift Container Platform utilise et injecte ce compte de service dans chaque pod lancé.

La procédure suivante crée un objet RoleBinding pour l'objet par défaut ServiceAccount. Le compte de service communique avec l'API OpenShift Container Platform pour connaître les pods, les services et les ressources du projet.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Vous devez avoir installé l'OpenShift CLI (oc).
  • Vous avez une image déployée.
  • Vous devez avoir les privilèges cluster-admin ou project-admin.

Procédure

  • Pour ajouter le rôle de vue au compte de service par défaut sur le site user-getting-started project, entrez la commande suivante :

    $ oc adm policy add-role-to-user view -z default -n user-getting-started

4.5. Déployer votre première image

La manière la plus simple de déployer une application dans OpenShift Container Platform est d'exécuter une image de conteneur existante. La procédure suivante déploie un composant frontal d'une application appelée national-parks-app. L'application web affiche une carte interactive. La carte indique l'emplacement des principaux parcs nationaux dans le monde.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Installez le CLI OpenShift (oc).

Procédure

  • Pour déployer une application, entrez la commande suivante :

    $ oc new-app quay.io/openshiftroadshow/parksmap:latest --name=parksmap -l 'app=national-parks-app,component=parksmap,role=frontend,app.kubernetes.io/part-of=national-parks-app'

    Exemple de sortie

    --> Found container image 0c2f55f (12 months old) from quay.io for "quay.io/openshiftroadshow/parksmap:latest"
    
        * An image stream tag will be created as "parksmap:latest" that will track this image
    
    --> Creating resources with label app=national-parks-app,app.kubernetes.io/part-of=national-parks-app,component=parksmap,role=frontend ...
        imagestream.image.openshift.io "parksmap" created
        deployment.apps "parksmap" created
        service "parksmap" created
    --> Success

Ressources complémentaires

4.5.1. Création d'un itinéraire

Les clients externes peuvent accéder aux applications fonctionnant sur OpenShift Container Platform via la couche de routage et l'objet de données derrière cela est un route. Le routeur par défaut d'OpenShift Container Platform (HAProxy) utilise l'en-tête HTTP de la requête entrante pour déterminer où proxyer la connexion.

En option, vous pouvez définir la sécurité, telle que TLS, pour l'itinéraire.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Vous devez avoir installé l'OpenShift CLI (oc).
  • Vous avez une image déployée.
  • Vous devez avoir les privilèges cluster-admin ou project-admin.

Procédure

  1. Pour récupérer le service d'application créé, entrez la commande suivante :

    $ oc get service

    Exemple de sortie

    NAME      TYPE       CLUSTER-IP         EXTERNAL-IP    PORT(S)   AGE
    parksmap  ClusterIP  <your-cluster-IP>  <123.456.789>  8080/TCP  8m29s

  2. Pour créer une route, entrez la commande suivante :

    $ oc create route edge parksmap --service=parksmap

    Exemple de sortie

    route.route.openshift.io/parksmap created

  3. Pour récupérer la route d'application créée, entrez la commande suivante :

    $ oc get route

    Exemple de sortie

    NAME        HOST/PORT                                                   PATH   SERVICES   PORT       TERMINATION   WILDCARD
    parksmap    parksmap-user-getting-started.apps.cluster.example.com             parksmap   8080-tcp   edge          None

Ressources complémentaires

4.5.2. Examen de la nacelle

OpenShift Container Platform s'appuie sur le concept Kubernetes de pod, qui est un ou plusieurs conteneurs déployés ensemble sur un hôte, et la plus petite unité de calcul qui peut être définie, déployée et gérée. Les pods sont l'équivalent approximatif d'une instance de machine, physique ou virtuelle, pour un conteneur.

Vous pouvez visualiser les pods de votre cluster et déterminer l'état de santé de ces pods et du cluster dans son ensemble.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Vous devez avoir installé l'OpenShift CLI (oc).
  • Vous avez une image déployée.

Procédure

  1. Pour dresser la liste de tous les pods avec les noms de nœuds, entrez la commande suivante :

    $ oc get pods

    Exemple de sortie

    NAME                       READY   STATUS    RESTARTS   AGE
    parksmap-5f9579955-6sng8   1/1     Running   0          77s

  2. Pour répertorier tous les détails d'un pod, entrez la commande suivante :

    $ oc describe pods

    Exemple de sortie

    Name:         parksmap-848bd4954b-5pvcc
    Namespace:    user-getting-started
    Priority:     0
    Node:         ci-ln-fr1rt92-72292-4fzf9-worker-a-g9g7c/10.0.128.4
    Start Time:   Sun, 13 Feb 2022 14:14:14 -0500
    Labels:       app=national-parks-app
                  app.kubernetes.io/part-of=national-parks-app
                  component=parksmap
                  deployment=parksmap
                  pod-template-hash=848bd4954b
                  role=frontend
    Annotations:  k8s.v1.cni.cncf.io/network-status:
                    [{
                        "name": "openshift-sdn",
                        "interface": "eth0",
                        "ips": [
                            "10.131.0.14"
                        ],
                        "default": true,
                        "dns": {}
                    }]
                  k8s.v1.cni.cncf.io/networks-status:
                    [{
                        "name": "openshift-sdn",
                        "interface": "eth0",
                        "ips": [
                            "10.131.0.14"
                        ],
                        "default": true,
                        "dns": {}
                    }]
                  openshift.io/generated-by: OpenShiftNewApp
                  openshift.io/scc: restricted
    Status:       Running
    IP:           10.131.0.14
    IPs:
      IP:           10.131.0.14
    Controlled By:  ReplicaSet/parksmap-848bd4954b
    Containers:
      parksmap:
        Container ID:   cri-o://4b2625d4f61861e33cc95ad6d455915ea8ff6b75e17650538cc33c1e3e26aeb8
        Image:          quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b
        Image ID:       quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b
        Port:           8080/TCP
        Host Port:      0/TCP
        State:          Running
          Started:      Sun, 13 Feb 2022 14:14:25 -0500
        Ready:          True
        Restart Count:  0
        Environment:    <none>
        Mounts:
          /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-6f844 (ro)
    Conditions:
      Type              Status
      Initialized       True
      Ready             True
      ContainersReady   True
      PodScheduled      True
    Volumes:
      kube-api-access-6f844:
        Type:                    Projected (a volume that contains injected data from multiple sources)
        TokenExpirationSeconds:  3607
        ConfigMapName:           kube-root-ca.crt
        ConfigMapOptional:       <nil>
        DownwardAPI:             true
        ConfigMapName:           openshift-service-ca.crt
        ConfigMapOptional:       <nil>
    QoS Class:                   BestEffort
    Node-Selectors:              <none>
    Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                                 node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
    Events:
      Type    Reason          Age   From               Message
      ----    ------          ----  ----               -------
      Normal  Scheduled       46s   default-scheduler  Successfully assigned user-getting-started/parksmap-848bd4954b-5pvcc to ci-ln-fr1rt92-72292-4fzf9-worker-a-g9g7c
      Normal  AddedInterface  44s   multus             Add eth0 [10.131.0.14/23] from openshift-sdn
      Normal  Pulling         44s   kubelet            Pulling image "quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b"
      Normal  Pulled          35s   kubelet            Successfully pulled image "quay.io/openshiftroadshow/parksmap@sha256:89d1e324846cb431df9039e1a7fd0ed2ba0c51aafbae73f2abd70a83d5fa173b" in 9.49243308s
      Normal  Created         35s   kubelet            Created container parksmap
      Normal  Started         35s   kubelet            Started container parksmap

4.5.3. Mise à l'échelle de l'application

Dans Kubernetes, un objet Deployment définit la manière dont une application est déployée. Dans la plupart des cas, les utilisateurs utilisent les ressources Pod, Service, ReplicaSets, et Deployment ensemble. Dans la plupart des cas, OpenShift Container Platform crée les ressources pour vous.

Lorsque vous déployez l'image national-parks-app, une ressource de déploiement est créée. Dans cet exemple, un seul Pod est déployé.

La procédure suivante permet de mettre à l'échelle le site national-parks-image pour utiliser deux instances.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Vous devez avoir installé l'OpenShift CLI (oc).
  • Vous avez une image déployée.

Procédure

  • Pour faire passer votre application d'une instance de pod à deux instances de pod, entrez la commande suivante :

    $ oc scale --current-replicas=1 --replicas=2 deployment/parksmap

    Exemple de sortie

    deployment.apps/parksmap scaled

Vérification

  1. Pour vous assurer que votre application a été correctement mise à l'échelle, entrez la commande suivante :

    $ oc get pods

    Exemple de sortie

    NAME                       READY   STATUS    RESTARTS   AGE
    parksmap-5f9579955-6sng8   1/1     Running   0          7m39s
    parksmap-5f9579955-8tgft   1/1     Running   0          24s

  2. Pour ramener votre application à une seule instance de pod, entrez la commande suivante :

    $ oc scale --current-replicas=2 --replicas=1 deployment/parksmap

Ressources complémentaires

4.6. Déployer une application Python

La procédure suivante permet de déployer un service back-end pour l'application parksmap. L'application Python effectue des requêtes géospatiales en 2D sur une base de données MongoDB afin de localiser et de renvoyer les coordonnées cartographiques de tous les parcs nationaux du monde.

Le service dorsal déployé est nationalparks.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Vous devez avoir installé l'OpenShift CLI (oc).
  • Vous avez une image déployée.

Procédure

  1. Pour créer une nouvelle application Python, entrez la commande suivante :

    $ oc new-app python~https://github.com/openshift-roadshow/nationalparks-py.git --name nationalparks -l 'app=national-parks-app,component=nationalparks,role=backend,app.kubernetes.io/part-of=national-parks-app,app.kubernetes.io/name=python' --allow-missing-images=true

    Exemple de sortie

    --> Found image 0406f6c (13 days old) in image stream "openshift/python" under tag "3.9-ubi8" for "python"
    
        Python 3.9
        ----------
        Python 3.9 available as container is a base platform for building and running various Python 3.9 applications and frameworks. Python is an easy to learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python's elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.
    
        Tags: builder, python, python39, python-39, rh-python39
    
        * A source build using source code from https://github.com/openshift-roadshow/nationalparks-py.git will be created
          * The resulting image will be pushed to image stream tag "nationalparks:latest"
          * Use 'oc start-build' to trigger a new build
    
    --> Creating resources with label app=national-parks-app,app.kubernetes.io/name=python,app.kubernetes.io/part-of=national-parks-app,component=nationalparks,role=backend ...
        imagestream.image.openshift.io "nationalparks" created
        buildconfig.build.openshift.io "nationalparks" created
        deployment.apps "nationalparks" created
        service "nationalparks" created
    --> Success

  2. Pour créer une route afin d'exposer votre application, nationalparks, entrez la commande suivante :

    $ oc create route edge nationalparks --service=nationalparks

    Exemple de sortie

    route.route.openshift.io/parksmap created

  3. Pour récupérer la route d'application créée, entrez la commande suivante :

    $ oc get route

    Exemple de sortie

    NAME             HOST/PORT                                                           PATH   SERVICES        PORT       TERMINATION   WILDCARD
    nationalparks    nationalparks-user-getting-started.apps.cluster.example.com                nationalparks   8080-tcp   edge          None
    parksmap         parksmap-user-getting-started.apps.cluster.example.com                     parksmap        8080-tcp   edge          None

Ressources complémentaires

4.7. Connexion à une base de données

Déployez et connectez une base de données MongoDB dans laquelle l'application national-parks-app stocke les informations de localisation. Une fois que vous avez marqué l'application national-parks-app comme backend pour l'outil de visualisation de cartes, le déploiement de parksmap utilise le mécanisme de découverte d'OpenShift Container Platform pour afficher automatiquement la carte.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Vous devez avoir installé l'OpenShift CLI (oc).
  • Vous avez une image déployée.

Procédure

  • Pour vous connecter à une base de données, entrez la commande suivante :

    $ oc new-app quay.io/centos7/mongodb-36-centos7 --name mongodb-nationalparks -e MONGODB_USER=mongodb -e MONGODB_PASSWORD=mongodb -e MONGODB_DATABASE=mongodb -e MONGODB_ADMIN_PASSWORD=mongodb -l 'app.kubernetes.io/part-of=national-parks-app,app.kubernetes.io/name=mongodb'

    Exemple de sortie

    --> Found container image dc18f52 (8 months old) from quay.io for "quay.io/centos7/mongodb-36-centos7"
    
        MongoDB 3.6
        -----------
        MongoDB (from humongous) is a free and open-source cross-platform document-oriented database program. Classified as a NoSQL database program, MongoDB uses JSON-like documents with schemas. This container image contains programs to run mongod server.
    
        Tags: database, mongodb, rh-mongodb36
    
        * An image stream tag will be created as "mongodb-nationalparks:latest" that will track this image
    
    --> Creating resources with label app.kubernetes.io/name=mongodb,app.kubernetes.io/part-of=national-parks-app ...
        imagestream.image.openshift.io "mongodb-nationalparks" created
        deployment.apps "mongodb-nationalparks" created
        service "mongodb-nationalparks" created
    --> Success

Ressources complémentaires

4.7.1. Création d'un secret

L'objet Secret fournit un mécanisme pour contenir des informations sensibles telles que les mots de passe, les fichiers de configuration du client OpenShift Container Platform, les informations d'identification du référentiel source privé, etc. Les secrets découplent le contenu sensible des pods. Vous pouvez monter des secrets dans des conteneurs à l'aide d'un plugin de volume ou le système peut utiliser des secrets pour effectuer des actions au nom d'un pod. La procédure suivante ajoute le secret nationalparks-mongodb-parameters et le monte dans la charge de travail nationalparks.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Vous devez avoir installé l'OpenShift CLI (oc).
  • Vous avez une image déployée.

Procédure

  1. Pour créer un secret, entrez la commande suivante :

    $ oc create secret generic nationalparks-mongodb-parameters --from-literal=DATABASE_SERVICE_NAME=mongodb-nationalparks --from-literal=MONGODB_USER=mongodb --from-literal=MONGODB_PASSWORD=mongodb --from-literal=MONGODB_DATABASE=mongodb --from-literal=MONGODB_ADMIN_PASSWORD=mongodb

    Exemple de sortie

    secret/nationalparks-mongodb-parameters created

  2. Pour mettre à jour la variable d'environnement afin d'attacher le secret mongodb à la charge de travail nationalpartks, entrez la commande suivante :

    $ oc set env --from=secret/nationalparks-mongodb-parameters deploy/nationalparks

    Exemple de sortie

    deployment.apps/nationalparks updated

  3. Pour afficher l'état du déploiement de nationalparks, entrez la commande suivante :

    $ oc rollout status deployment nationalparks

    Exemple de sortie

    deployment "nationalparks" successfully rolled out

  4. Pour afficher l'état du déploiement de mongodb-nationalparks, entrez la commande suivante :

    $ oc rollout status deployment mongodb-nationalparks

    Exemple de sortie

    deployment "nationalparks" successfully rolled out
    deployment "mongodb-nationalparks" successfully rolled out

4.7.2. Chargement des données et affichage de la carte des parcs nationaux

Vous avez déployé les applications parksmap et nationalparks, puis la base de données mongodb-nationalparks. Cependant, aucune donnée n'a été chargée sur into.

Conditions préalables

  • Vous devez avoir accès à un cluster OpenShift Container Platform.
  • Vous devez avoir installé l'OpenShift CLI (oc).
  • Vous avez une image déployée.

Procédure

  1. Pour charger les données des parcs nationaux, entrez la commande suivante :

    $ oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s http://localhost:8080/ws/data/load

    Exemple de sortie

    "Items inserted in database: 2893"

  2. Pour vérifier que vos données sont correctement chargées, entrez la commande suivante :

    $ oc exec $(oc get pods -l component=nationalparks | tail -n 1 | awk '{print $1;}') -- curl -s http://localhost:8080/ws/data/all

    Exemple de sortie (trimmée)

    , {"id": "Great Zimbabwe", "latitude": "-20.2674635", "longitude": "30.9337986", "name": "Great Zimbabwe"}]

  3. Pour ajouter des étiquettes à l'itinéraire, entrez la commande suivante :

    $ oc label route nationalparks type=parksmap-backend

    Exemple de sortie

    route.route.openshift.io/nationalparks labeled

  4. Pour récupérer vos itinéraires et afficher votre carte, entrez la commande suivante :

    $ oc get routes

    Exemple de sortie

    NAME            HOST/PORT                                                      PATH   SERVICES        PORT       TERMINATION   WILDCARD
    nationalparks   nationalparks-user-getting-started.apps.cluster.example.com           nationalparks   8080-tcp   edge          None
    parksmap        parksmap-user-getting-started.apps.cluster.example.com                parksmap        8080-tcp   edge          None

  5. Copiez et collez le chemin d'accès HOST/PORT que vous avez récupéré ci-dessus dans votre navigateur web. Votre navigateur devrait afficher une carte des parcs nationaux du monde entier.

    Figure 4.1. Les parcs nationaux dans le monde

    A map of the national parks across the world is displayed with location tracking.

Ressources complémentaires

Note légale

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.