diff --git a/lib/db/index.js b/lib/db/index.js index c1cd3087..6a16d6dd 100644 --- a/lib/db/index.js +++ b/lib/db/index.js @@ -1,15 +1,20 @@ 'use strict'; +const serviceBindings = require('kube-service-bindings'); const { Pool } = require('pg'); -const serviceHost = process.env.MY_DATABASE_SERVICE_HOST || process.env.POSTGRESQL_SERVICE_HOST || 'localhost'; -const user = process.env.DB_USERNAME || process.env.POSTGRESQL_USER || 'luke'; -const password = process.env.DB_PASSWORD || process.env.POSTGRESQL_PASSWORD || 'secret'; -const databaseName = process.env.POSTGRESQL_DATABASE || 'my_data'; -const connectionString = `postgresql://${user}:${password}@${serviceHost}:5432/${databaseName}`; +let connectionOptions; +try { + connectionOptions = serviceBindings.getBinding('POSTGRESQL', 'pg'); +} catch (err) { + const serviceHost = process.env.MY_DATABASE_SERVICE_HOST || process.env.POSTGRESQL_SERVICE_HOST || 'localhost'; + const user = process.env.DB_USERNAME || process.env.POSTGRESQL_USER || 'luke'; + const password = process.env.DB_PASSWORD || process.env.POSTGRESQL_PASSWORD || 'secret'; + const databaseName = process.env.POSTGRESQL_DATABASE || 'my_data'; + const connectionString = `postgresql://${user}:${password}@${serviceHost}:5432/${databaseName}`; + connectionOptions = { connectionString }; +} -const pool = new Pool({ - connectionString -}); +const pool = new Pool(connectionOptions); async function didInitHappen () { const query = 'select * from products'; diff --git a/package-lock.json b/package-lock.json index 844c20a5..ab3873a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,7 @@ "body-parser": "~1.19.0", "debug": "^4.3.3", "express": "~4.17.1", + "kube-service-bindings": "^0.0.4-0", "pg": "^8.7.1", "pino": "^7.5.1", "pino-debug": "^2.0.0", @@ -4700,6 +4701,14 @@ "node": ">=0.10.0" } }, + "node_modules/kube-service-bindings": { + "version": "0.0.4-0", + "resolved": "https://registry.npmjs.org/kube-service-bindings/-/kube-service-bindings-0.0.4-0.tgz", + "integrity": "sha512-OORltjzvRWB6tg5iQqaFbsumAlCCqM+TE54+R2f5mrJF2NRNumw+1tS+/ha77XrlSV9G+V7PGHjeCr8NKfa7Aw==", + "engines": { + "node": ">=10" + } + }, "node_modules/kubernetes-client": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/kubernetes-client/-/kubernetes-client-9.0.0.tgz", @@ -11898,6 +11907,11 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "kube-service-bindings": { + "version": "0.0.4-0", + "resolved": "https://registry.npmjs.org/kube-service-bindings/-/kube-service-bindings-0.0.4-0.tgz", + "integrity": "sha512-OORltjzvRWB6tg5iQqaFbsumAlCCqM+TE54+R2f5mrJF2NRNumw+1tS+/ha77XrlSV9G+V7PGHjeCr8NKfa7Aw==" + }, "kubernetes-client": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/kubernetes-client/-/kubernetes-client-9.0.0.tgz", diff --git a/package.json b/package.json index 8aed1f98..c26d358d 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "body-parser": "~1.19.0", "debug": "^4.3.3", "express": "~4.17.1", + "kube-service-bindings": "^0.0.4-0", "pg": "^8.7.1", "pino": "^7.5.1", "pino-debug": "^2.0.0",