Chapitre 5. Des plugins dynamiques


5.1. Aperçu des plugins dynamiques

5.1.1. À propos des plugins dynamiques

Les plugins dynamiques sont chargés et interprétés à partir de sources distantes à l’exécution. L’un des moyens de fournir et d’exposer des plugins dynamiques à la console est via OLM Operators. L’opérateur crée un déploiement sur la plate-forme avec un serveur HTTP pour héberger le plugin et l’expose à l’aide d’un service Kubernetes.

Les plugins dynamiques vous permettent d’ajouter des pages personnalisées et d’autres extensions à l’interface utilisateur de votre console au moment de l’exécution. La ressource personnalisée ConsolePlugin enregistre les plugins avec la console, et un administrateur de cluster active les plugins dans la configuration de l’opérateur de la console.

5.1.2. Caractéristiques clés

Le plugin dynamique vous permet d’effectuer les personnalisations suivantes au Red Hat OpenShift Service sur l’expérience AWS:

  • Ajoutez des pages personnalisées.
  • Ajoutez des perspectives au-delà de l’administrateur et du développeur.
  • Ajoutez des éléments de navigation.
  • Ajoutez des onglets et des actions aux pages de ressources.

5.1.3. Lignes directrices générales

Lors de la création de votre plugin, suivez ces directives générales:

  • Les node.js et fils sont nécessaires pour construire et exécuter votre plugin.
  • Le préfixe de vos noms de classe CSS avec le nom de votre plugin pour éviter les collisions. A titre d’exemple, my-plugin__heading et my-plugin_\_icon.
  • Gardez un look, une sensation et un comportement cohérents avec d’autres pages de console.
  • Suivez les directives de localisation responsive-i18next lors de la création de votre plugin. Il est possible d’utiliser le crochet useTranslation comme celui de l’exemple suivant:

    conster Header: React.FC = () => {
      const { t } = useTranslation('plugin__console-demo-plugin');
      return <h1>{t('Hello, World!')}</h1>;
    };
    Copy to Clipboard
  • Évitez les sélecteurs qui pourraient affecter le balisage en dehors des composants de vos plugins, tels que les sélecteurs d’éléments. Ce ne sont pas des API et sont sujets à changement. Les utiliser pourrait casser votre plugin. Évitez les sélecteurs comme les sélecteurs d’éléments qui pourraient affecter le balisage en dehors des composants de vos plugins.
  • Fournissez le type d’extension de courrier Internet multifonction JavaScript valide (MIME) en utilisant l’en-tête de réponse de type de contenu pour tous les actifs desservis par votre serveur Web plugin. Chaque déploiement de plugin doit inclure un serveur Web qui héberge les actifs générés du plugin donné.
  • Créez votre plugin avec Webpack en utilisant la version 5 et ultérieure de Webpack.
  • Il faut préfixer les noms de classes CSS avec le nom de votre plugin pour éviter les collisions. A titre d’exemple, my-plugin__heading et my-plugin_\_icon.
  • Gardez un look, une sensation et un comportement cohérents avec d’autres pages de console.
  • Évitez les sélecteurs qui pourraient affecter le balisage en dehors des composants de votre plugin, tels que les sélecteurs d’éléments. Ce ne sont pas des API et sont sujets à changement.
  • Il faut fournir un type d’extension de courrier Internet polyvalent (MIME) valide à l’aide de l’en-tête de réponse de type de contenu pour tous les actifs desservis par votre serveur Web plugin. Chaque déploiement de plugin doit inclure un serveur Web qui héberge les actifs générés du plugin donné.

Lignes directrices de PatternFly

Lors de la création de votre plugin, suivez ces directives pour l’utilisation de PatternFly:

  • Les composants PatternFly et les variables CSS de PatternFly. Les composants Core PatternFly sont disponibles via le SDK. En utilisant des composants et des variables PatternFly, votre plugin semble cohérent dans les versions futures de la console.

    • Utilisez Patternfly 4.x si vous utilisez Red Hat OpenShift Service sur les versions 4.14 et antérieures d’AWS.
    • Utilisez Patternfly 5.x si vous utilisez Red Hat OpenShift Service sur AWS 4.15 ou version ultérieure.
  • Accédez à votre plugin en suivant les principes d’accessibilité de PatternFly.
  • Évitez d’utiliser d’autres bibliothèques CSS telles que Bootstrap ou Tailwind. Ils pourraient entrer en conflit avec PatternFly et ne pas correspondre au reste de la console. Les plugins ne doivent inclure que des styles spécifiques à leurs interfaces utilisateur à évaluer en plus des styles PatternFly de base. Évitez d’importer des styles tels que @patternfly/react-styles/*/.css ou n’importe quel style du paquet @patternfly/patternfly dans votre plugin.
  • L’application console est responsable du chargement des styles de base pour toutes les versions (s) prises en charge de PatternFly.

5.1.3.1. La traduction de messages avec responsive-i18next

Le modèle de plugin montre comment vous pouvez traduire des messages avec responsive-i18next.

Conditions préalables

  • Le modèle de plugin doit être cloné localement.
  • Facultatif: Pour tester votre plugin localement, exécutez le Red Hat OpenShift Service sur la console web AWS dans un conteneur. Il est possible d’utiliser Docker ou Podman 3.2.0 ou plus tard.

Procédure

  1. Le préfixe du nom avec plugin__ pour éviter tout conflit de nom. Le modèle de plugin utilise l’espace de noms plugin__console-plugin-template par défaut, et vous devez mettre à jour lorsque vous renommez votre plugin par exemple, plugin__my-plugin. Il est possible d’utiliser le crochet useTranslation, par exemple:

    conster Header: React.FC = () => {
      const { t } = useTranslation('plugin__console-demo-plugin');
      return <h1>{t('Hello, World!')}</h1>;
    };
    Copy to Clipboard
    Important

    Il faut faire correspondre l’espace de noms i18n au nom de la ressource ConsolePlugin.

  2. Définissez le champ spec.i18n.loadType en fonction du comportement nécessaire.

    Exemple 5.1. plugin__console-demo-plugin

    spec:
      backend:
        service:
          basePath: /
          name: console-demo-plugin
          namespace: console-demo-plugin
          port: 9001
        type: Service
      displayName: OpenShift Console Demo Plugin
      i18n:
        loadType: Preload 
    1
    Copy to Clipboard
    1
    Charge toutes les ressources de localisation du plugin à partir de l’espace de noms i18n après le plugin dynamique pendant le chargement.
  3. Employez le format %plugin__console-plugin-template~My Label% pour les étiquettes dans console-extensions.json. La console remplace la valeur par le message de la langue courante à partir de l’espace de noms plugin__console-plugin-template. À titre d’exemple:

      {
        "type": "console.navigation/section",
        "properties": {
          "id": "admin-demo-section",
          "perspective": "admin",
          "name": "%plugin__console-plugin-template~Plugin Template%"
        }
      }
    Copy to Clipboard
  4. Inclure un commentaire dans un fichier TypeScript pour i18next-parser pour ajouter le message de console-extensions.json à votre catalogue de messages. À titre d’exemple:

    // t('plugin__console-demo-plugin~Demo Plugin')
    Copy to Clipboard
  5. Afin de mettre à jour les fichiers JSON dans le dossier local du modèle de plugin lors de l’ajout ou de la modification d’un message, exécutez la commande suivante:

    $ yarn i18n
    Copy to Clipboard
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat