PostgreSQL est requis pour le service hôte du tableau de bord, le service de moniteur de test et le service de champs de formulaire dynamiques.

Exigences communes

Remarque Pour une sécurité renforcée, créez des utilisateurs de base de données distincts pour chaque service SystemLink. Cette approche de moindre privilège garantit que chaque service ne peut accéder qu'à sa propre base de données et ses propres tables.

Avant de configurer un service pour qu'il utilise un serveur PostgreSQL, assurez-vous d'avoir :

  • Un serveur PostgreSQL provisionné. Pour optimiser les performances et la sécurité, nous vous recommandons de dédier l'instance PostgreSQL à SystemLink plutôt que de la partager avec d'autres applications.
  • Le nom d'hôte du serveur PostgreSQL.
  • Les informations d'identification d'au moins un utilisateur de base de données.
  • Autorisations d'administration PostgreSQL pour créer des bases de données et des utilisateurs.
  • Un certificat TLS pour des connexions sécurisées. (Recommandé)

Au lancement initial et pour certains scénarios de mise à niveau, chaque service crée le schéma et les tables requis. Après la configuration, vous pouvez révoquer les privilèges CREATE de l'utilisateur. Le tableau suivant montre les privilèges minimaux requis pour un fonctionnement normal :

Tableau 32. Privilèges d'opération
Emplacement Privilèges
Base de données CONNECT
Schéma de service CRÉER, UTILISER
Tables du schéma SÉLECTIONNER, INSÉRER, METTRE À JOUR, SUPPRIMER
Remarque Les données du schéma doivent être accessibles via l'application Web SystemLink ou l'API de service correspondante. Le schéma est considéré comme une implémentation interne et peut changer sans préavis.

Stockage des données du service d'hébergement du tableau de bord sur un serveur PostgreSQL externe

Créez une base de données et un utilisateur, en vous assurant que l'utilisateur a des privilèges CREATE sur la base de données. Le nom de base de données par défaut est grafana.

Si vous gérez des secrets avec Helm, ajoutez vos informations d'identification de base de données à systemlink-secrets.yaml :

dashboardhost:
  secrets:
    database:
      host: "<postgresql-hostname>:<port>"
      user: "systemlink"
      password: "<database-password>"

Dans systemlink-values.yaml, assurez-vous que les configurations par défaut dashboardhost.grafana.extraSecretMounts et dashboardhost.grafana.extraConfigmapMounts sont activées :

dashboardhost:
  grafana:
    extraSecretMounts:
      - name: *dashboardhostdbSecret
        secretName: *dashboardhostdbSecret
        defaultMode: 0440
        mountPath: "/etc/secrets/dashboardhost"
        readOnly: true
    extraConfigmapMounts:
      - name: *postgresCertificateConfigMap
        mountPath: "/etc/ssl/certs/dashboardhost/"
        subPath: *postgresCertificateFileName
        configMap: *postgresCertificateConfigMap
        readOnly: true

Stockage des données de Test Monitor Service sur un serveur PostgreSQL externe

Créez une base de données et un utilisateur, en vous assurant que l'utilisateur a des privilèges CREATE sur la base de données.

Les prochaines mises à jour du chart Test Monitor Service peuvent nécessiter des modifications du schéma et de la table. Pour effectuer ces modifications, le chart Test Monitoring Service doit agir en tant que propriétaire du schéma et des tables. Outre l'utilisateur qui gère les opérations quotidiennes, vous pouvez spécifier un autre utilisateur doté d'autorisations plus élevées pour effectuer des migrations de bases de données.

Vous pouvez configurer la connexion PostgreSQL en utilisant une chaîne de connexion (recommandée) ou des paramètres de connexion individuels.

Utilisation d'une chaîne de connexion (recommandé) :
  • Ajoutez vos informations d'identification à systemlink-secrets.yaml :
    testmonitorservice:
      secrets:
        database:
          connectionString: "Host=<postgresql-hostname>;Database=<database-name>;Username=<database-user>;Password=<database-password>;SslMode=Require"
          migrationConnectionString: "Host=<postgresql-hostname>;Database=<database-name>;Username=<migration-user>;Password=<migration-password>;SslMode=Require"
  • Puis configurez la connexion dans systemlink-values.yaml :
    testmonitorservice:
      database:
        connectionString:
          secretName: "testmonitorservicedb-connection"
          connectionStringKey: "connection-string"
          migrationConnectionStringKey: "migration-connection-string"
        tls:
          enabled: true
          existingConfigMap: *postgresCertificateConfigMap
          certificateSubPath: *postgresCertificateFileName

Utilisation de paramètres de connexion individuels :

  • Vous pouvez aussi spécifier des paramètres de connexion individuellement. Ajoutez vos informations d'identification à systemlink-secrets.yaml :
    testmonitorservice:
      secrets:
        database:
          connectionPassword: "<database-password>"
          migrationConnectionPassword: "<migration-password>"
  • Puis configurez la connexion dans systemlink-values.yaml. Le nom de base de données par défaut est nisystemlink et l'utilisateur par défaut est nisystemlink :
    testmonitorservice:
      database:
        connectionInfo:
          host: "<postgresql-hostname>"
          port: "5432"
          dbName: "nisystemlink"
          user: "nisystemlink"
          migrationUser: "<migration-user>"
          secretName: "testmonitorservicedb-connection"
          passwordKey: "password"
          migrationPasswordKey: "migration-password"
        tls:
          enabled: true
          existingConfigMap: *postgresCertificateConfigMap
          certificateSubPath: *postgresCertificateFileName

Stockage des données du service de champs de formulaire dynamique sur un serveur PostgreSQL externe

Créez une base de données et un utilisateur, en vous assurant que l'utilisateur a des privilèges CREATE sur la base de données.

Les prochaines mises à jour du chart Dynamic form fields Service peuvent nécessiter des modifications du schéma et de la table. Pour effectuer ces modifications, le chart Dynamic form fields service doit agir en tant que propriétaire du schéma et des tables. Outre l'utilisateur qui gère les opérations quotidiennes, vous pouvez spécifier un autre utilisateur doté d'autorisations plus élevées pour effectuer des migrations de bases de données.

Vous pouvez configurer la connexion PostgreSQL en utilisant une chaîne de connexion (recommandée) ou des paramètres de connexion individuels.

Utilisation d'une chaîne de création (recommandée) :

  • Ajoutez vos informations d'identification à systemlink-secrets.yaml :
    dynamicformfields:
      secrets:
        database:
          connectionString: "Host=<postgresql-hostname>;Database=<database-name>;Username=<database-user>;Password=<database-password>;SslMode=Require"
          migrationConnectionString: "Host=<postgresql-hostname>;Database=<database-name>;Username=<migration-user>;Password=<migration-password>;SslMode=Require"
  • Puis configurez la connexion dans systemlink-values.yaml :
    dynamicformfields:
      database:
        connectionString:
          secretName: "dynamicformfields-db-connection"
          connectionStringKey: "connection-string"
          migrationConnectionStringKey: "migration-connection-string"
        tls:
          enabled: true
          existingConfigMap: *postgresCertificateConfigMap
          certificateSubPath: *postgresCertificateFileName

Vous pouvez aussi spécifier des paramètres de connexion individuellement :

  • Ajoutez vos informations d'identification à systemlink-secrets.yaml :
    dynamicformfields:
      secrets:
        database:
          connectionPassword: "<database-password>"
          migrationConnectionPassword: "<migration-password>"
  • Puis configurez la connexion dans systemlink-values.yaml. Le nom de base de données par défaut est nisystemlink et l'utilisateur par défaut est nisystemlink :
    dynamicformfields:
      database:
        connectionInfo:
          host: "<postgresql-hostname>"
          port: "5432"
          dbName: "nisystemlink"
          user: "nisystemlink"
          migrationUser: "<migration-user>"
          secretName: "dynamicformfields-db-connection"
          passwordKey: "password"
          migrationPasswordKey: "migration-password"
        tls:
          enabled: true
          existingConfigMap: *postgresCertificateConfigMap
          certificateSubPath: *postgresCertificateFileName"