Aller au contenu principal

IBM Cloud Databases : PostgreSQL sur IBM Cloud

Introduction​

Pour déployer l'application GitGuardian, une instance PostgreSQL est requise. Cette page est dédiée à vous aider à configurer PostgreSQL sur IBM Cloud en utilisant IBM Cloud Databases for PostgreSQL.

Haute disponibilité​

IBM Cloud Databases for PostgreSQL déploie deux membres dans une configuration primaire et réplique avec basculement automatique. L'application se connecte à un point de terminaison unique ; le basculement peut provoquer une brève interruption.

Installation​

Depuis la console IBM Cloud​

Pour créer une instance PostgreSQL depuis la console IBM Cloud, nous recommandons de suivre la documentation officielle.

Vous devez définir les champs suivants :

  • Définissez la Version sur une version PostgreSQL prise en charge. Nous recommandons PostgreSQL 17.
  • Définissez les Service endpoints sur Private. Le cluster GitGuardian atteint la base de données via le réseau privé IBM Cloud.
  • Allouez au moins 4 Go de RAM par membre. La capacité de connexion en dépend, voir Connexions ci-dessous.
  • Définissez le mot de passe admin après le provisionnement. Vous devez enregistrer cette valeur pour créer l'utilisateur de l'application.

En utilisant la CLI​

ibmcloud resource service-instance-create <instance-name> databases-for-postgresql standard <region> \
--service-endpoints private \
-p '{"version":"17","members_host_flavor":"multitenant","members_memory_allocation_mb":"8192","members_disk_allocation_mb":"20480"}'

Les valeurs de mémoire et de disque sont des totaux partagés par les deux membres.

En utilisant Terraform​

Pour créer une instance PostgreSQL en utilisant Terraform, vous avez besoin de la ressource suivante :

En plus des champs requis par Terraform, nous exigeons que les champs suivants soient définis :

  • service = "databases-for-postgresql"
  • version = "17" : une version PostgreSQL prise en charge.
  • service_endpoints = "private" : gardez la base de données hors de l'internet public.

Base de données et utilisateur​

L'utilisateur admin d'IBM Cloud n'est pas un superutilisateur et ne peut pas transférer la propriété d'une base de données à un autre utilisateur. Créez l'utilisateur de l'application avec la CLI, puis connectez-vous en tant que cet utilisateur pour créer la base de données :

ibmcloud cdb deployment-user-create <instance-name> gim <password>
-- connected as gim
CREATE DATABASE prm;

La base de données appartient au rôle de groupe ibm-cloud-base-user d'IBM Cloud, dont gim est membre, ce qui accorde les permissions dont GitGuardian a besoin.

Les extensions pg_trgm, btree_gin et pgvector requises par GitGuardian sont disponibles sur IBM Cloud Databases for PostgreSQL 15 et versions ultérieures. GitGuardian les crée lors de l'installation.

Connexions​

La valeur par défaut de max_connections est 115, dont 100 sont utilisables. Augmentez-la avant la première installation. IBM Cloud requiert au moins 2 Go de RAM par membre pour 215 connexions :

ibmcloud cdb deployment-configuration <instance-name> '{"configuration":{"max_connections":215}}'

TLS​

TLS est obligatoire sur IBM Cloud Databases. Le certificat CA est intégré dans les détails de connexion :

ibmcloud cdb deployment-connections <instance-name> --user gim --endpoint-type private --output json

Décodez la valeur connection.postgres.certificate.certificate_base64 et passez-la comme CA PostgreSQL, puis définissez le mode TLS sur verify-full. Voir Configurer TLS.

postgresql:
host: '<instance-id>.<deployment-id>.private.databases.appdomain.cloud'
port: <port>
username: 'gim'
database: 'prm'
existingSecret: 'gitguardian-postgresql-secret'
existingSecretKeys:
password: 'POSTGRES_PASSWORD'
tls:
mode: 'verify-full'
existingSecret: 'gitguardian-postgresql-tls-secret'
existingSecretKeys:
caCrt: 'ca.crt'