{"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><!--more--><\/p>\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\/sites\/2\/2022\/04\/Selection_016.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/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\/sites\/2\/2022\/04\/Selection_001-10.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/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\/sites\/2\/2022\/04\/Selection_002-7.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/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\/sites\/2\/2022\/04\/Selection_003-6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/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\/sites\/2\/2022\/04\/Selection_004-7.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/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\/sites\/2\/2022\/04\/Selection_005-6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/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\/sites\/2\/2022\/04\/Selection_011-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/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\/sites\/2\/2022\/04\/Selection_012-2.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/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\/sites\/2\/2022\/04\/Selection_013-3.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/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\/sites\/2\/2022\/04\/Selection_014-4.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/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;]<\/p>\n","protected":false},"author":29,"featured_media":11701,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[],"type_dbi":[],"class_list":["post-11700","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>EDB containers for OpenShift 2.3 - PEM integration - dbi 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;]\" \/>\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 Blog\" \/>\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\/sites\/2\/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=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\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\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"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,\"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\/sites\/2\/2022\/04\/Selection_016.jpg\",\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"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 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\/sites\/2\/2022\/04\/Selection_016.jpg\",\"datePublished\":\"2018-09-17T14:19:51+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"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\/sites\/2\/2022\/04\/Selection_016.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/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 Blog\",\"description\":\"\",\"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\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"EDB containers for OpenShift 2.3 - PEM integration - dbi 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;]","og_url":"https:\/\/www.dbi-services.com\/blog\/edb-containers-for-openshift-2-3-pem-integration\/","og_site_name":"dbi Blog","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\/sites\/2\/2022\/04\/Selection_016.jpg","type":"image\/jpeg"}],"author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","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":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"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,"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\/sites\/2\/2022\/04\/Selection_016.jpg","articleSection":["Database Administration &amp; Monitoring"],"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 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\/sites\/2\/2022\/04\/Selection_016.jpg","datePublished":"2018-09-17T14:19:51+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"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\/sites\/2\/2022\/04\/Selection_016.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/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 Blog","description":"","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":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_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\/29"}],"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"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=11700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}