Pour commencer
Démarrer avec OpenShift Container Platform
Résumé
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
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
Composant | Objectif |
---|---|
| S'exécute sur chaque nœud du cluster et maintient le trafic réseau entre les ressources Kubernetes. |
| Régit l'état de la grappe. |
| Attribue des modules aux nœuds. |
| Stocke les données de la grappe. |
| Valide et configure les données pour les objets API. |
| 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. |
|
Permet de définir la manière dont vous souhaitez exécuter les charges de travail. Utilisez la commande |
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. |
| 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
Tableau 1.2. Ressources Kubernetes
Ressources | Objectif |
---|---|
Service | Kubernetes utilise des services pour exposer une application en cours d'exécution sur un ensemble de pods. |
|
Kubernetes utilise le site |
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
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 PlatformDeploymentConfigs
. 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 objetsDeployment
et des diverses stratégies de déploiement pour gérer la disponibilité acceptable de l'application. Les objetsDeploymentConfig
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 objetsDeployment
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.
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 :
- Understand OpenShift Container Platform development: Apprendre les différents types d'applications conteneurisées, des simples conteneurs aux déploiements Kubernetes avancés et aux opérateurs.
-
Work with projects: Créez des projets à partir de la console web d'OpenShift Container Platform ou d'OpenShift CLI (
oc
) pour organiser et partager les logiciels que vous développez. - Work with applications:
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 CLIodo
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
etDeploymentConfig
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
- Understand OpenShift Container Platform management: Découvrez les composants du plan de contrôle d'OpenShift Container Platform 4.12. Découvrez comment le plan de contrôle d'OpenShift Container Platform et les nœuds de travail sont gérés et mis à jour par le biais de l'API Machine et des opérateurs.
- Manage users and groups: Ajouter des utilisateurs et des groupes avec différents niveaux d'autorisation pour utiliser ou modifier les clusters.
- Manage authentication: Découvrez comment fonctionne l'authentification des utilisateurs, des groupes et des API dans OpenShift Container Platform. OpenShift Container Platform prend en charge plusieurs fournisseurs d'identité.
- Manage networking: Le réseau de cluster dans OpenShift Container Platform est géré par le Cluster Network Operator (CNO). Le CNO utilise des règles iptables dans kube-proxy pour diriger le trafic entre les nœuds et les pods s'exécutant sur ces nœuds. L'interface réseau du conteneur Multus permet d'attacher plusieurs interfaces réseau à un pod. En utilisant les fonctions de stratégie de réseau, vous pouvez isoler vos modules ou autoriser le trafic sélectionné.
- Manage storage: OpenShift Container Platform permet aux administrateurs de clusters de configurer le stockage persistant.
- Manage Operators: Les listes d'opérateurs Red Hat, ISV et communautaires peuvent être examinées par les administrateurs de clusters et installées sur leurs clusters. Après les avoir installés, vous pouvez exécuter, mettre à niveau, sauvegarder ou gérer l'opérateur sur votre cluster.
- Use custom resource definitions (CRDs) to modify the cluster: Les fonctionnalités des clusters mises en œuvre avec les opérateurs peuvent être modifiées avec les CRD. Apprenez à créer un CRD et à gérer des ressources à partir de CRD.
- Set resource quotas: Choisissez parmi l'unité centrale, la mémoire et d'autres ressources du système pour fixer des quotas.
- Prune and reclaim resources: Récupérez de l'espace en élaguant les opérateurs, groupes, déploiements, constructions, images, registres et tâches cron inutiles.
- Scale and tune clusters: Définissez les limites de la grappe, réglez les nœuds, augmentez la surveillance de la grappe et optimisez le réseau, le stockage et les itinéraires pour votre environnement.
- Understanding the OpenShift Update Service: Apprenez à installer et à gérer un service local de mise à jour d'OpenShift pour recommander les mises à jour d'OpenShift Container Platform dans des environnements déconnectés.
- Monitor clusters: Apprenez à configurer la pile de surveillance. Après avoir configuré la surveillance, utilisez la console web pour accéder aux tableaux de bord de surveillance. En plus des métriques de l'infrastructure, vous pouvez également récupérer et afficher les métriques de vos propres services.
- Remote health monitoring: OpenShift Container Platform recueille des informations agrégées anonymes sur votre cluster. Grâce à la télémétrie et à l'opérateur Insights, ces données sont reçues par Red Hat et utilisées pour améliorer OpenShift Container Platform. Vous pouvez consulter les données collectées par la surveillance de la santé à distance.
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
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
- Dans la vue Add, sélectionnez Project → Create Project.
-
Dans le champ Name, entrez
user-getting-started
. Facultatif : dans le champ Display name, saisissez
Getting Started with OpenShift
.NoteDisplay name et Description sont facultatifs.
- 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
- À partir du site Administrator perspective, naviguez jusqu'à User Management et cliquez sur RoleBindings.
- Cliquez sur Create binding.
-
Sélectionnez
Namespace role binding (RoleBinding)
. -
Dans le champ Name, entrez
sa-user-account
. -
Dans le champ Namespace, recherchez et sélectionnez
user-getting-started
. -
Dans le champ Role name, recherchez
view
et sélectionnezview
. -
Dans le champ Subject, sélectionnez
ServiceAccount
. -
Dans le champ Subject namespace, recherchez et sélectionnez
user-getting-started
. -
Dans le champ Subject name, entrez
default
. - Cliquez sur Create.
Ressources complémentaires
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
- Dans la vue Add de la perspective Developer, cliquez sur Container images pour ouvrir une boîte de dialogue.
-
Dans le champ Image Name, entrez ce qui suit :
quay.io/openshiftroadshow/parksmap:latest
Assurez-vous que vous disposez des valeurs actuelles pour les éléments suivants :
-
Application :
national-parks-app
-
Nom :
parksmap
-
Application :
- Sélectionnez Deployment comme Resource.
- Sélectionnez Create route to the application.
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
-
- 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
.
Ressources complémentaires
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
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
Onglet Dé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
-
Dans la vue Topology, cliquez sur l'application
national-parks-app
. - Cliquez sur l'onglet Details.
Utilisez la flèche vers le haut pour faire passer le module à deux instances.
Figure 3.3. Application de mise à l'échelle
NoteLa mise à l'échelle des applications peut se faire rapidement car OpenShift Container Platform lance une nouvelle instance d'une image existante.
- 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
- Dans la vue Add de la perspective Developer, cliquez sur Import from Git pour ouvrir une boîte de dialogue.
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.
NoteSi l'image de construction détectée est Dockerfile, sélectionnez Edit Import Strategy. Sélectionnez Builder Image puis cliquez sur Python.
- Faites défiler jusqu'à la section General.
Assurez-vous que vous disposez des valeurs actuelles pour les éléments suivants :
-
Application :
national-parks-app
-
Nom :
nationalparks
-
Application :
- Sélectionnez Deployment comme Resource.
- Sélectionnez Create route to the application.
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=nationalparks
-
role=backend
-
type=parksmap-backend
-
- Cliquez sur Create.
Dans la vue Topology, sélectionnez l'application
nationalparks
.NoteCliquez sur l'onglet Resources. Dans la section Builds, vous pouvez voir votre version en cours d'exécution.
Ressources complémentaires
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
- Dans la vue Add de la perspective Developer, cliquez sur Container images pour ouvrir une boîte de dialogue.
-
Dans le champ Image Name, entrez
quay.io/centos7/mongodb-36-centos7
. -
Dans le champ Runtime icon, recherchez
mongodb
. - Faites défiler la page jusqu'à la section General.
Assurez-vous que vous disposez des valeurs actuelles pour les éléments suivants :
-
Application :
national-parks-app
-
Nom :
mongodb-nationalparks
-
Application :
- Sélectionnez Deployment comme Resource.
- Décochez la case située à côté de Create route to the application.
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
Nom Valeur MONGODB_USER
mongodb
MONGODB_PASSWORD
mongodb
MONGODB_DATABASE
mongodb
MONGODB_ADMIN_PASSWORD
mongodb
- Cliquez sur Create.
Ressources complémentaires
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
- Dans la perspective de Developer, naviguez vers Secrets sur la gauche de la navigation et cliquez sur Secrets.
Cliquez sur Create → Key/value secret.
-
Dans le champ Secret name, entrez
nationalparks-mongodb-parameters
. 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
- Cliquez sur Create.
-
Dans le champ Secret name, entrez
Cliquez sur Add Secret to workload.
-
Dans le menu déroulant, sélectionnez
nationalparks
comme charge de travail à ajouter. - Cliquez sur Save.
-
Dans le menu déroulant, sélectionnez
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
-
À partir de la vue Topology, naviguez jusqu'à
nationalparks
deployment et cliquez sur Resources pour récupérer les informations relatives à votre itinéraire. 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
-
À partir de la vue Topology, naviguez jusqu'à
parksmap
deployment et cliquez sur Resources pour récupérer les informations relatives à votre itinéraire. - 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
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.
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
ouproject-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
Ressources complémentaires
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
ouproject-admin
.
Procédure
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
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
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
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
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
Ressources complémentaires
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
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
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
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
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
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
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
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
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
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
Ressources complémentaires
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
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"
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"}]
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
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
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
Ressources complémentaires