{"id":11700,"date":"2018-09-17T16:19:51","date_gmt":"2018-09-17T14:19:51","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/"},"modified":"2018-09-17T16:19:51","modified_gmt":"2018-09-17T14:19:51","slug":"edb-containers-for-openshift-2-3-pem-integration","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/","title":{"rendered":"EDB containers for OpenShift 2.3 &#8211; PEM integration"},"content":{"rendered":"<p><b>This blog refers to an older version of EDB&#8217;s Postgres on Kubernetes offering that is no longer available.<\/b><\/p>\n<p>A few days ago EnterpriseDB announced the availability of version 2.3 of the EDB containers for OpenShift. The main new feature in this release is the integration of <a href=\"https:\/\/www.enterprisedb.com\/products\/edb-postgres-platform\/postgres-enterprise-manager-pem\" target=\"_blank\" rel=\"noopener noreferrer\">PEM (Postgres Enterprise Manager)<\/a>, so in this post we&#8217;ll look at how we can bring up a PEM server in OpenShift. If you did not follow the lats posts about EDB containers in OpenShift here is the summary: <\/p>\n<ul>\n<li><a href=\"https:\/\/www.dbi-services.com\/blog\/deploying-edb-containers-in-minishiftopenshift\/\" target=\"_blank\" rel=\"noopener noreferrer\">Deploying EDB containers in MiniShift\/OpenShift<\/a><\/li>\n<li><a href=\"https:\/\/www.dbi-services.com\/blog\/scaling-the-edb-containers-in-minishiftopenshift\/\" target=\"_blank\" rel=\"noopener noreferrer\">Scaling the EDB containers in MiniShift\/OpenShift<\/a><\/li>\n<li><a href=\"https:\/\/www.dbi-services.com\/blog\/customizing-postgresql-parameters-in-edb-containers-in-minishiftopenshift\/\" target=\"_blank\" rel=\"noopener noreferrer\">Customizing PostgreSQL parameters in EDB containers in MiniShift\/OpenShift<\/a><\/li>\n<li><a href=\"https:\/\/www.dbi-services.com\/blog\/edb-failover-manager-in-ebd-containers-in-minishiftopenshift\/\" target=\"_blank\" rel=\"noopener noreferrer\">EDB Failover Manager in EDB containers in Minishift\/OpenShift<\/a><\/li>\n<li><a href=\"https:\/\/www.dbi-services.com\/blog\/edb-failover-manager-in-edb-containers-in-minishiftopenshift-failovers\/\" target=\"_blank\" rel=\"noopener noreferrer\">EDB Failover Manager in EDB containers in Minishift\/OpenShift \u2013 Failovers<\/a><\/li>\n<li><a href=\"https:\/\/www.dbi-services.com\/blog\/backing-up-and-restoring-edb-containers-in-minishiftopenshift\/\" target=\"_blank\" rel=\"noopener noreferrer\">Backing up and restoring EDB containers in MiniShift\/OpenShift<\/a><\/li>\n<\/ul>\n<p>The first step you need to do is to download the updated container images. You&#8217;ll notice that there are two new containers which have not been available before the 2.3 release:<\/p>\n<ul>\n<li>edb-pemserver: Obviously this is the PEM server<\/li>\n<li>admintool: a utility container for supporting database upgrades and launching PEM agents on the database containers<\/li>\n<\/ul>\n<p>For downloading the latest release of the EDB container images for OpenShift, the procedure is the following:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\ndocker run -d -p 5000:5000 --restart=always --name registry registry:2\ndocker login containers.enterprisedb.com\n\ndocker pull containers.enterprisedb.com\/edb\/edb-as:v10\ndocker tag containers.enterprisedb.com\/edb\/edb-as:v10 localhost:5000\/edb\/edb-as:v10\ndocker push localhost:5000\/edb\/edb-as:v10\n\ndocker pull containers.enterprisedb.com\/edb\/edb-pgpool:v3.6\ndocker tag containers.enterprisedb.com\/edb\/edb-pgpool:v3.6 localhost:5000\/edb\/edb-pgpool:v3.6\ndocker push localhost:5000\/edb\/edb-pgpool:v3.6\n\ndocker pull containers.enterprisedb.com\/edb\/edb-pemserver:v7.3\ndocker tag containers.enterprisedb.com\/edb\/edb-pemserver:v7.3 localhost:5000\/edb\/edb-pemserver:v7.3\ndocker push localhost:5000\/edb\/edb-pemserver:v7.3\n\ndocker pull containers.enterprisedb.com\/edb\/edb-admintool\ndocker tag containers.enterprisedb.com\/edb\/edb-admintool localhost:5000\/edb\/edb-admintool\ndocker push localhost:5000\/edb\/edb-admintool\n\ndocker pull containers.enterprisedb.com\/edb\/edb-bart:v2.1\ndocker tag containers.enterprisedb.com\/edb\/edb-bart:v2.1 localhost:5000\/edb\/edb-bart:v2.1\ndocker push localhost:5000\/edb\/edb-bart:v2.1\n<\/pre>\n<p>In my case I have quite a few EDB containers available now (&#8230;and I could go ahead and delete the old ones, of course):<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\ndocker@minishift:~$ docker images | grep edb\ncontainers.enterprisedb.com\/edb\/edb-as          v10                 1d118c96529b        45 hours ago        1.804 GB\nlocalhost:5000\/edb\/edb-as                       v10                 1d118c96529b        45 hours ago        1.804 GB\ncontainers.enterprisedb.com\/edb\/edb-admintool   latest              07fda249cf5c        10 days ago         531.6 MB\nlocalhost:5000\/edb\/edb-admintool                latest              07fda249cf5c        10 days ago         531.6 MB\ncontainers.enterprisedb.com\/edb\/edb-pemserver   v7.3                78954c316ca9        10 days ago         1.592 GB\nlocalhost:5000\/edb\/edb-pemserver                v7.3                78954c316ca9        10 days ago         1.592 GB\ncontainers.enterprisedb.com\/edb\/edb-bart        v2.1                e2410ed4cf9b        10 days ago         571 MB\nlocalhost:5000\/edb\/edb-bart                     v2.1                e2410ed4cf9b        10 days ago         571 MB\ncontainers.enterprisedb.com\/edb\/edb-pgpool      v3.6                e8c600ab993a        10 days ago         561.1 MB\nlocalhost:5000\/edb\/edb-pgpool                   v3.6                e8c600ab993a        10 days ago         561.1 MB\ncontainers.enterprisedb.com\/edb\/edb-as                              00adaa0d4063        3 months ago        979.3 MB\nlocalhost:5000\/edb\/edb-as                                           00adaa0d4063        3 months ago        979.3 MB\nlocalhost:5000\/edb\/edb-pgpool                   v3.5                e7efdb0ae1be        4 months ago        564.1 MB\ncontainers.enterprisedb.com\/edb\/edb-pgpool      v3.5                e7efdb0ae1be        4 months ago        564.1 MB\nlocalhost:5000\/edb\/edb-as                       v10.3               90b79757b2f7        4 months ago        842.7 MB\ncontainers.enterprisedb.com\/edb\/edb-bart        v2.0                48ee2c01db92        4 months ago        590.6 MB\nlocalhost:5000\/edb\/edb-bart                     2.0                 48ee2c01db92        4 months ago        590.6 MB\nlocalhost:5000\/edb\/edb-bart                     v2.0                48ee2c01db92        4 months ago        590.6 MB\n<\/pre>\n<p>The only bits I changed in the yaml file that describes my EDB AS deployment compared to the previous posts are these (check the high-lightened lines, there are only two): <\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1; highlight: [65,140]\">\napiVersion: v1\nkind: Template\nmetadata:\n   name: edb-as10-custom\n   annotations:\n    description: &quot;Custom EDB Postgres Advanced Server 10.0 Deployment Config&quot;\n    tags: &quot;database,epas,postgres,postgresql&quot;\n    iconClass: &quot;icon-postgresql&quot;\nobjects:\n- apiVersion: v1 \n  kind: Service\n  metadata:\n    name: ${DATABASE_NAME}-service \n    labels:\n      role: loadbalancer\n      cluster: ${DATABASE_NAME}\n  spec:\n    selector:                  \n      lb: ${DATABASE_NAME}-pgpool\n    ports:\n    - name: lb \n      port: ${PGPORT}\n      targetPort: 9999\n    sessionAffinity: None\n    type: LoadBalancer\n- apiVersion: v1 \n  kind: DeploymentConfig\n  metadata:\n    name: ${DATABASE_NAME}-pgpool\n  spec:\n    replicas: 2\n    selector:\n      lb: ${DATABASE_NAME}-pgpool\n    strategy:\n      resources: {}\n      rollingParams:\n        intervalSeconds: 1\n        maxSurge: 25%\n        maxUnavailable: 25%\n        timeoutSeconds: 600\n        updatePeriodSeconds: 1\n      type: Rolling\n    template:\n      metadata:\n        labels:\n          lb: ${DATABASE_NAME}-pgpool\n          role: queryrouter\n          cluster: ${DATABASE_NAME}\n      spec:\n        containers:\n        - name: edb-pgpool\n          env:\n          - name: DATABASE_NAME\n            value: ${DATABASE_NAME} \n          - name: PGPORT\n            value: ${PGPORT} \n          - name: REPL_USER\n            value: ${REPL_USER} \n          - name: ENTERPRISEDB_PASSWORD\n            value: &#039;postgres&#039;\n          - name: REPL_PASSWORD\n            value: &#039;postgres&#039;\n          - name: ACCEPT_EULA\n            value: ${ACCEPT_EULA}\n          image: localhost:5000\/edb\/edb-pgpool:v3.6\n          imagePullPolicy: IfNotPresent\n          readinessProbe:\n            exec:\n              command:\n              - \/var\/lib\/edb\/testIsReady.sh\n            initialDelaySeconds: 60\n            timeoutSeconds: 5\n    triggers:\n    - type: ConfigChange\n- apiVersion: v1\n  kind: DeploymentConfig\n  metadata:\n    name: ${DATABASE_NAME}-as10-0\n  spec:\n    replicas: 1\n    selector:\n      db: ${DATABASE_NAME}-as10-0 \n    strategy:\n      resources: {}\n      rollingParams:\n        intervalSeconds: 1\n        maxSurge: 25%\n        maxUnavailable: 25%\n        timeoutSeconds: 600\n        updatePeriodSeconds: 1\n      type: Rolling\n    template:\n      metadata:\n        creationTimestamp: null\n        labels:\n          db: ${DATABASE_NAME}-as10-0 \n          cluster: ${DATABASE_NAME}\n      spec:\n        containers:\n        - name: edb-as10 \n          env:\n          - name: DATABASE_NAME \n            value: ${DATABASE_NAME} \n          - name: DATABASE_USER \n            value: ${DATABASE_USER} \n          - name: DATABASE_USER_PASSWORD\n            value: &#039;postgres&#039;\n          - name: ENTERPRISEDB_PASSWORD\n            value: &#039;postgres&#039;\n          - name: REPL_USER\n            value: ${REPL_USER} \n          - name: REPL_PASSWORD\n            value: &#039;postgres&#039;\n          - name: PGPORT\n            value: ${PGPORT} \n          - name: RESTORE_FILE\n            value: ${RESTORE_FILE} \n          - name: LOCALEPARAMETER\n            value: ${LOCALEPARAMETER}\n          - name: CLEANUP_SCHEDULE\n            value: ${CLEANUP_SCHEDULE}\n          - name: EFM_EMAIL\n            value: ${EFM_EMAIL}\n          - name: NAMESERVER\n            value: ${NAMESERVER}\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n          - name: POD_NODE\n            valueFrom:\n              fieldRef:\n                fieldPath: spec.nodeName \n          - name: POD_IP\n            valueFrom:\n              fieldRef:\n                fieldPath: status.podIP \n          - name: ACCEPT_EULA\n            value: ${ACCEPT_EULA}\n          image: localhost:5000\/edb\/edb-as:v10\n          imagePullPolicy: IfNotPresent \n          readinessProbe:\n            exec:\n              command:\n              - \/var\/lib\/edb\/testIsReady.sh\n            initialDelaySeconds: 60\n            timeoutSeconds: 5 \n          livenessProbe:\n            exec:\n              command:\n              - \/var\/lib\/edb\/testIsHealthy.sh\n            initialDelaySeconds: 600 \n            timeoutSeconds: 60 \n          ports:\n          - containerPort: ${PGPORT} \n          volumeMounts:\n          - name: ${PERSISTENT_VOLUME}\n            mountPath: \/edbvolume\n          - name: ${BACKUP_PERSISTENT_VOLUME}\n            mountPath: \/edbbackup\n          - name: pg-initconf\n            mountPath: \/initconf\n        dnsPolicy: ClusterFirst\n        restartPolicy: Always\n        volumes:\n        - name: ${PERSISTENT_VOLUME}\n          persistentVolumeClaim:\n            claimName: ${PERSISTENT_VOLUME_CLAIM}\n        - name: ${BACKUP_PERSISTENT_VOLUME}\n          persistentVolumeClaim:\n            claimName: ${BACKUP_PERSISTENT_VOLUME_CLAIM}\n        - name: pg-initconf\n          configMap:\n            name: postgres-map\n    triggers:\n    - type: ConfigChange\nparameters:\n- name: DATABASE_NAME\n  displayName: Database Name\n  description: Name of Postgres database (leave edb for default)\n  value: &#039;edb&#039;\n- name: DATABASE_USER\n  displayName: Default database user (leave enterprisedb for default)\n  description: Default database user\n  value: &#039;enterprisedb&#039;\n- name: REPL_USER\n  displayName: Repl user\n  description: repl database user\n  value: &#039;repl&#039;\n- name: PGPORT\n  displayName: Database Port\n  description: Database Port (leave 5444 for default)\n  value: &quot;5444&quot;\n- name: LOCALEPARAMETER\n  displayName: Locale\n  description: Locale of database\n  value: &#039;&#039;\n- name: CLEANUP_SCHEDULE\n  displayName: Host Cleanup Schedule\n  description: Standard cron schedule - min (0 - 59), hour (0 - 23), day of month (1 - 31), month (1 - 12), day of week (0 - 6) (0 to 6 are Sunday to Saturday, or use names; 7 is Sunday, the same as 0). Leave it empty if you dont want to cleanup.\n  value: &#039;0:0:*:*:*&#039;\n- name: EFM_EMAIL\n  displayName: Email\n  description: Email for EFM\n  value: &#039;none@none.com&#039;\n- name: NAMESERVER\n  displayName: Name Server for Email\n  description: Name Server for Email\n  value: &#039;8.8.8.8&#039;\n- name: PERSISTENT_VOLUME\n  displayName: Persistent Volume\n  description: Persistent volume name\n  value: &#039;&#039;\n  required: true\n- name: PERSISTENT_VOLUME_CLAIM \n  displayName: Persistent Volume Claim\n  description: Persistent volume claim name\n  value: &#039;&#039;\n  required: true\n- name: BACKUP_PERSISTENT_VOLUME\n  displayName: Backup Persistent Volume\n  description: Backup Persistent volume name\n  value: &#039;&#039;\n  required: false\n- name: BACKUP_PERSISTENT_VOLUME_CLAIM\n  displayName: Backup Persistent Volume Claim\n  description: Backup Persistent volume claim name\n  value: &#039;&#039;\n  required: false\n- name: RESTORE_FILE\n  displayName: Restore File\n  description: Restore file location\n  value: &#039;&#039;\n- name: ACCEPT_EULA\n  displayName: Accept end-user license agreement (leave &#039;Yes&#039; for default)\n  description: Indicates whether user accepts the end-user license agreement\n  value: &#039;Yes&#039;\n  required: true\n<\/pre>\n<p>As the template starts with one replica I scaled that to three so finally the setup we start with for PEM is this (one master and two replicas, which is the minimum you need for automated failover anyway):<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\ndwe@dwe:~$ oc get pods -o wide -L role\nedb-as10-0-1-4ptdr   1\/1       Running   0          7m        172.17.0.5   localhost   standbydb\nedb-as10-0-1-8mw7m   1\/1       Running   0          5m        172.17.0.6   localhost   standbydb\nedb-as10-0-1-krzpp   1\/1       Running   0          8m        172.17.0.9   localhost   masterdb\nedb-pgpool-1-665mp   1\/1       Running   0          8m        172.17.0.8   localhost   queryrouter\nedb-pgpool-1-mhgnq   1\/1       Running   0          8m        172.17.0.7   localhost   queryrouter\n<\/pre>\n<p>Nothing special happened so far except that we downloaded the new container images, pushed that to the local registry and adjusted the deployment yaml to reference the latest version of the containers. What we want to do now is to create the PEM repository container so that we can add the database to PEM which will give us monitoring and alerting. As PEM requires persistent storage as well we need a new storage definition:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_016.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_016.jpg\" alt=\"Selection_016\" width=\"666\" height=\"260\" class=\"aligncenter size-full wp-image-27879\" \/><\/a><\/p>\n<p>You can of course also get the storage definition using the &#8220;oc&#8221; command:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\ndwe@dwe:~$ oc get pvc\nNAME                STATUS    VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   AGE\nedb-bart-claim      Bound     pv0091    100Gi      RWO,ROX,RWX                   16h\nedb-pem-claim       Bound     pv0056    100Gi      RWO,ROX,RWX                   50s\nedb-storage-claim   Bound     pv0037    100Gi      RWO,ROX,RWX                   16h\n<\/pre>\n<p>The yaml file for the PEM server is this one (notice that the container image referenced is coming from the local registry):<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\napiVersion: v1\nkind: Template\nmetadata:\n   name: edb-pemserver\n   annotations:\n    description: \"Standard EDB Postgres Enterprise Manager Server 7.3 Deployment Config\"\n    tags: \"pemserver\"\n    iconClass: \"icon-postgresql\"\nobjects:\n- apiVersion: v1\n  kind: Service\n  metadata:\n    name: ${DATABASE_NAME}-webservice \n    labels:\n      name: ${DATABASE_NAME}-webservice\n  spec:\n    selector:\n      role: pemserver \n    ports:\n    - name: https\n      port: 30443\n      nodePort: 30443\n      protocol: TCP\n      targetPort: 8443\n    - name: http\n      port: 30080\n      nodePort: 30080\n      protocol: TCP\n      targetPort: 8080\n    type: NodePort\n- apiVersion: v1\n  kind: DeploymentConfig\n  metadata:\n    name: edb-pemserver\n  spec:\n    replicas: 1\n    selector:\n      app: pemserver \n    strategy:\n      resources: {}\n      rollingParams:\n        intervalSeconds: 1\n        maxSurge: 25%\n        maxUnavailable: 25%\n        timeoutSeconds: 600\n        updatePeriodSeconds: 1\n      type: Rolling\n    template:\n      metadata:\n        creationTimestamp: null\n        labels:\n          app: pemserver \n          cluster: ${DATABASE_NAME} \n      spec:\n        containers:\n        - name: pem-db\n          env:\n          - name: DATABASE_NAME\n            value: ${DATABASE_NAME} \n          - name: DATABASE_USER\n            value: ${DATABASE_USER}\n          - name: ENTERPRISEDB_PASSWORD\n            value: \"postgres\"\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n          - name: POD_NODE\n            valueFrom:\n              fieldRef:\n                fieldPath: spec.nodeName\n          - name: POD_IP\n            valueFrom:\n              fieldRef:\n                fieldPath: status.podIP\n          - name: PGPORT\n            value: ${PGPORT}\n          - name: RESTORE_FILE\n            value: ${RESTORE_FILE}\n          - name: ENABLE_HA_MODE\n            value: \"No\"\n          - name: ACCEPT_EULA\n            value: ${ACCEPT_EULA}\n            image: localhost:5000\/edb\/edb-as:v10\n          imagePullPolicy: Always \n          volumeMounts:\n          - name: ${PERSISTENT_VOLUME}\n            mountPath: \/edbvolume\n        - name: pem-webclient \n          image: localhost:5000\/edb\/edb-pemserver:v7.3\n          imagePullPolicy: Always \n          env:\n          - name: DATABASE_NAME \n            value: ${DATABASE_NAME} \n          - name: DATABASE_USER \n            value: ${DATABASE_USER} \n          - name: ENTERPRISEDB_PASSWORD\n            value: \"postgres\"\n          - name: POD_NAMESPACE\n            valueFrom:\n              fieldRef:\n                fieldPath: metadata.namespace\n          - name: POD_NODE\n            valueFrom:\n              fieldRef:\n                fieldPath: spec.nodeName \n          - name: POD_IP\n            valueFrom:\n              fieldRef:\n                fieldPath: status.podIP \n          - name: PGPORT\n            value: ${PGPORT}\n          - name: CIDR_ADDR\n            value: ${CIDR_ADDR}\n          - name: ACCEPT_EULA\n            value: ${ACCEPT_EULA}\n          - name: DEBUG_MODE\n            value: ${DEBUG_MODE}\n          ports:\n          - containerPort: ${PGPORT} \n          volumeMounts:\n          - name: ${PERSISTENT_VOLUME}\n            mountPath: \/edbvolume\n          - name: httpd-shm\n            mountPath: \/run\/httpd\n        volumes:\n        - name: ${PERSISTENT_VOLUME}\n          persistentVolumeClaim:\n            claimName: ${PERSISTENT_VOLUME_CLAIM}\n        - name: httpd-shm \n          emptyDir:\n            medium: Memory \n        dnsPolicy: ClusterFirst\n        restartPolicy: Always\n    triggers:\n    - type: ConfigChange\nparameters:\n- name: DATABASE_NAME\n  displayName: Database Name\n  description: Name of Postgres database (leave edb for default)\n  value: 'pem'\n  required: true\n- name: DATABASE_USER\n  displayName: Default database user (leave enterprisedb for default)\n  description: Default database user\n  value: 'enterprisedb'\n- name: PGPORT\n  displayName: Database Port\n  description: Database Port (leave 5444 for default)\n  value: '5444'\n  required: true\n- name: PERSISTENT_VOLUME\n  displayName: Persistent Volume\n  description: Persistent volume name\n  value: 'edb-data-pv'\n  required: true\n- name: PERSISTENT_VOLUME_CLAIM \n  displayName: Persistent Volume Claim\n  description: Persistent volume claim name\n  value: 'edb-data-pvc'\n  required: true\n- name: RESTORE_FILE\n  displayName: Restore File\n  description: Restore file location\n  value: ''\n- name: CIDR_ADDR \n  displayName: CIDR address block for PEM \n  description: CIDR address block for PEM (leave '0.0.0.0\/0' for default) \n  value: '0.0.0.0\/0' \n- name: ACCEPT_EULA\n  displayName: Accept end-user license agreement (leave 'Yes' for default)\n  description: Indicates whether user accepts the end-user license agreement\n  value: 'Yes'\n  required: true\n<\/pre>\n<p>Again, don&#8217;t process the template right now, just save it as a template:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_001-10.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_001-10.png\" alt=\"Selection_001\" width=\"992\" height=\"780\" class=\"aligncenter size-full wp-image-27902\" \/><\/a><\/p>\n<p>Once we have that available we can start to deploy the PEM server from the catalog:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_002-7.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_002-7.png\" alt=\"Selection_002\" width=\"1634\" height=\"502\" class=\"aligncenter size-full wp-image-27903\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_003-6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_003-6.png\" alt=\"Selection_003\" width=\"979\" height=\"734\" class=\"aligncenter size-full wp-image-27905\" \/><\/a><\/p>\n<p>Of course we need to reference the storage definition we created above:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_004-7.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_004-7.png\" alt=\"Selection_004\" width=\"983\" height=\"736\" class=\"aligncenter size-full wp-image-27907\" \/><\/a><\/p>\n<p>Leave everything else at its defaults and create the deployment:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_005-6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_005-6.png\" alt=\"Selection_005\" width=\"983\" height=\"734\" class=\"aligncenter size-full wp-image-27908\" \/><\/a><\/p>\n<p>A few minutes later you should have PEM ready:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_011-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_011-2.png\" alt=\"Selection_011\" width=\"1901\" height=\"865\" class=\"aligncenter size-full wp-image-27910\" \/><\/a><\/p>\n<p>For connecting to PEM with your browser have a look at the service definition to get the port:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_012-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_012-2.png\" alt=\"Selection_012\" width=\"1661\" height=\"731\" class=\"aligncenter size-full wp-image-27911\" \/><\/a><\/p>\n<p>Once you have that you can connect to PEM:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_013-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_013-3.png\" alt=\"Selection_013\" width=\"1903\" height=\"991\" class=\"aligncenter size-full wp-image-27912\" \/><\/a><br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_014-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_014-4.png\" alt=\"Selection_014\" width=\"1906\" height=\"962\" class=\"aligncenter size-full wp-image-27913\" \/><\/a><\/p>\n<p>In the next post we&#8217;ll look at how we can add our existing database deployment to our just created PEM server so we can monitor the instances and configure alerting.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog refers to an older version of EDB&#8217;s Postgres on Kubernetes offering that is no longer available. A few days ago EnterpriseDB announced the availability of version 2.3 of the EDB containers for OpenShift. The main new feature in this release is the integration of PEM (Postgres Enterprise Manager), so in this post we&#8217;ll&hellip;&nbsp;<\/p>\n","protected":false},"author":28,"featured_media":11701,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[4133],"tags":[],"class_list":["post-11700","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.8 (Yoast SEO v28.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>EDB containers for OpenShift 2.3 - PEM integration - dbi services | Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"EDB containers for OpenShift 2.3 - PEM integration\" \/>\n<meta property=\"og:description\" content=\"This blog refers to an older version of EDB&#8217;s Postgres on Kubernetes offering that is no longer available. A few days ago EnterpriseDB announced the availability of version 2.3 of the EDB containers for OpenShift. The main new feature in this release is the integration of PEM (Postgres Enterprise Manager), so in this post we&#8217;ll&hellip;&nbsp;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi services | Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/dbiservices\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-09-17T14:19:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_016.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"666\" \/>\n\t<meta property=\"og:image:height\" content=\"260\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Open source Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dbiservices\" \/>\n<meta name=\"twitter:site\" content=\"@dbiservices\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Open source Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-containers-for-openshift-2-3-pem-integration\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-containers-for-openshift-2-3-pem-integration\\\/\"},\"author\":{\"name\":\"Open source Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0b4548362cac3eeff8b3eaf329e3530a\"},\"headline\":\"EDB containers for OpenShift 2.3 &#8211; PEM integration\",\"datePublished\":\"2018-09-17T14:19:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-containers-for-openshift-2-3-pem-integration\\\/\"},\"wordCount\":533,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-containers-for-openshift-2-3-pem-integration\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/Selection_016.jpg\",\"articleSection\":[\"Database\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-containers-for-openshift-2-3-pem-integration\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-containers-for-openshift-2-3-pem-integration\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-containers-for-openshift-2-3-pem-integration\\\/\",\"name\":\"EDB containers for OpenShift 2.3 - PEM integration - dbi services | Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-containers-for-openshift-2-3-pem-integration\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-containers-for-openshift-2-3-pem-integration\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/Selection_016.jpg\",\"datePublished\":\"2018-09-17T14:19:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-containers-for-openshift-2-3-pem-integration\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-containers-for-openshift-2-3-pem-integration\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-containers-for-openshift-2-3-pem-integration\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/Selection_016.jpg\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/04\\\/Selection_016.jpg\",\"width\":666,\"height\":260},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/edb-containers-for-openshift-2-3-pem-integration\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"EDB containers for OpenShift 2.3 &#8211; PEM integration\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi services Blog\",\"description\":\"#BeSharing\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"alternateName\":\"dbi Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\",\"name\":\"dbi services\",\"alternateName\":\"dbi\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dbi-services-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dbi-services-logo.png\",\"width\":512,\"height\":512,\"caption\":\"dbi services\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/dbiservices\\\/\",\"https:\\\/\\\/x.com\\\/dbiservices\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/dbi-services\\\/\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/dbiservices\"],\"description\":\"Swiss IT consulting and services company specialised in efficient data infrastructures and platforms: databases, application servers, cloud, DevOps, digitalization, analytics, data quality and monitoring. Headquartered in Del\u00e9mont with offices in Nyon, Basel, Bern and Zurich.\",\"email\":\"info@dbi-services.com\",\"telephone\":\"+41 32 422 96 00\",\"legalName\":\"dbi services SA\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/0b4548362cac3eeff8b3eaf329e3530a\",\"name\":\"Open source Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/05\\\/open-source-author.png\",\"caption\":\"Open source Team\"},\"description\":\"Posts published under the Open source Team account are collective contributions by the dbi services open infrastructure consultants. The practice covers open-source databases and platforms, PostgreSQL first of all, along with MySQL, MariaDB, and Linux, from architecture, replication, and high availability to performance tuning and operations under service level agreements, and contributes actively to the PostgreSQL community.\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/open-source-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"EDB containers for OpenShift 2.3 - PEM integration - dbi services | Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/","og_locale":"en_US","og_type":"article","og_title":"EDB containers for OpenShift 2.3 - PEM integration","og_description":"This blog refers to an older version of EDB&#8217;s Postgres on Kubernetes offering that is no longer available. A few days ago EnterpriseDB announced the availability of version 2.3 of the EDB containers for OpenShift. The main new feature in this release is the integration of PEM (Postgres Enterprise Manager), so in this post we&#8217;ll&hellip;&nbsp;","og_url":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/","og_site_name":"dbi services | Blog","article_publisher":"https:\/\/www.facebook.com\/dbiservices\/","article_published_time":"2018-09-17T14:19:51+00:00","og_image":[{"width":666,"height":260,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_016.jpg","type":"image\/jpeg"}],"author":"Open source Team","twitter_card":"summary_large_image","twitter_creator":"@dbiservices","twitter_site":"@dbiservices","twitter_misc":{"Written by":"Open source Team","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/"},"author":{"name":"Open source Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0b4548362cac3eeff8b3eaf329e3530a"},"headline":"EDB containers for OpenShift 2.3 &#8211; PEM integration","datePublished":"2018-09-17T14:19:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/"},"wordCount":533,"commentCount":0,"publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_016.jpg","articleSection":["Database"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/","url":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/","name":"EDB containers for OpenShift 2.3 - PEM integration - dbi services | Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_016.jpg","datePublished":"2018-09-17T14:19:51+00:00","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_016.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/04\/Selection_016.jpg","width":666,"height":260},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"EDB containers for OpenShift 2.3 &#8211; PEM integration"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi services Blog","description":"#BeSharing","publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"alternateName":"dbi Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.dbi-services.com\/blog\/#organization","name":"dbi services","alternateName":"dbi","url":"https:\/\/www.dbi-services.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2026\/09\/dbi-services-logo.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2026\/09\/dbi-services-logo.png","width":512,"height":512,"caption":"dbi services"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/dbiservices\/","https:\/\/x.com\/dbiservices","https:\/\/www.linkedin.com\/company\/dbi-services\/","https:\/\/www.youtube.com\/user\/dbiservices"],"description":"Swiss IT consulting and services company specialised in efficient data infrastructures and platforms: databases, application servers, cloud, DevOps, digitalization, analytics, data quality and monitoring. Headquartered in Del\u00e9mont with offices in Nyon, Basel, Bern and Zurich.","email":"info@dbi-services.com","telephone":"+41 32 422 96 00","legalName":"dbi services SA"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/0b4548362cac3eeff8b3eaf329e3530a","name":"Open source Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/05\/open-source-author.png","caption":"Open source Team"},"description":"Posts published under the Open source Team account are collective contributions by the dbi services open infrastructure consultants. The practice covers open-source databases and platforms, PostgreSQL first of all, along with MySQL, MariaDB, and Linux, from architecture, replication, and high availability to performance tuning and operations under service level agreements, and contributes actively to the PostgreSQL community.","url":"https:\/\/www.dbi-services.com\/blog\/author\/open-source-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=11700"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11700\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/11701"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=11700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=11700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=11700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}