EDB's private container registry v1.1.3

The images for the EDB Postgres Distributed for Kubernetes and EDB Postgres for Kubernetes operators, as well as various operands, are kept in a private container image registry under docker.enterprisedb.com.

Important

Access to the private registry requires an account with EDB and is reserved for EDB customers with a valid subscription plan. Credentials are run through your EDB account. These instructions are the same for trial subscriptions.

Repository information

Collect the following information:

  1. Your EDB account token
  2. The name of the repository, which will be k8s
  3. The repository server, which will be docker.enterprisedb.com

For clarity, the following examples assume your token is in an environment variable named EDB_SUBSCRIPTION_TOKEN.

Example with docker login

You can log in via Docker from your terminal. In this context,

  • The server is docker.enterprisedb.com
  • The username is the repository, k8s
  • The password is your EDB account token (stored in $EDB_SUBSCRIPTION_TOKEN)
docker login docker.enterprisedb.com  \
  --username k8s \
  --password "$EDB_SUBSCRIPTION_TOKEN"  
Output
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded

Operand images

Operand distributions

EDB Postgres Distributed for Kubernetes is an operator that supports running EDB Postgres Distributed (PGD) version 5 on three PostgreSQL distributions:

  • PostgreSQL
  • EDB Postgres Advanced Server (EPAS)
  • EDB Postgres Extended (PGE)
Important

See Choosing a Postgres distribution in the PGD documentation for details and a comparison of PGD on the different supported PostgreSQL distributions.

Due to the immutable application container adoption in EDB operators, the operator expects the container images to include all the binaries required to run the requested version of PGD on top of the required distribution and version of Postgres.

These images follow the requirements and the conventions described in Container image requirements in the EDB Postgres for Kubernetes documentation, adding the bdr5 extension.

The table shows the image name prefix for each Postgres distribution.

Postgres distributionVersionsImage name
PostgreSQL13 - 17postgresql-pgd
EDB Postgres Extended13 - 17edb-postgres-extended-pgd
EDB Postgres Advanced13 - 17edb-postgres-advanced-pgd

Identifying image names

You can select a specific operand and proxy image version that's appropriate for your Postgres distribution.

Operand image name

The operand image name is composed of the Postgres distribution, EDB Postgres Distributed keyword, and their version numbers.

Postgres type: The first part of the image name is the Postgres distribution you're using. The table shows how Postgres types correspond to this part of the image name.

Postgres distributionImage name
EDB Postgres Advanced Serveredb-postgres-advanced
EDB Postgres Extended Serveredb-postgres-extended
PostgreSQLpostgresql

EDB Postgres Distributed: For all environment configurations, pgd is the next part of the image name.

Version numbers: The versions of the Postgres distribution and PGD extension, separated by a dash, are next in the image name.

Base image version: The Universal Base Image (UBI) version on which the operand is based.

These identifiers, together with their versions, form the operand image name. The table shows some examples.

Postgres versionEDB Postgres Distributed versionUBIOperand image name
EDB Postgres Advanced 17.6.0PGD 5.9.08edb-postgres-advanced-pgd:17.6-pgd590-ubi8
EDB Postgres Extended 15.14PGD 5.9.09edb-postgres-extended-pgd:15.14-pgd590-ubi9
PostgreSQL 16.10PGD 5.9.09postgresql-pgd:16.10-pgd590-ubi9
Postgres version format

For PostgreSQL and EDB Extended Server images, the Postgres version is in x.y format, for example, 15.6. For EDB Postgres Advanced Server, the Postgres version is in x.y.z format, for example, 15.6.2.

For an overview of Postgres compatibility, see Platform compatibility.

Proxy image name

The proxy image name and version derive from EDB Postgres Distributed. See the EDB Postgres Distributed release notes for an overview of PGD versions and corresponding PGD proxy versions. The table shows an example.

Proxy versionProxy image name
PGD Proxy 5.9.0edb-pgd-proxy:5.9.0-ubi9
Base image version

As with the operand images, specify the UBI version via the -ubi8 or -ubi9 prefixes.

Customize Operand images

You can customize the default operand images for the EDB Postgres Distributed for Kubernetes operator, and these changes will apply to all future PGDGroup creations. Additionally, you have the option to customize the operand for each individual PGDGroup deployment.

Customize Default Operand Images in Helm Chart Deployment

Use the following Helm chart command to deploy the EDB Postgres Distributed for Kubernetes operator with customized operand and proxy names. Please note that all operand and operator images will be pulled from the same private repository defined by global.repository. For more information, visit the Helm chart page.

helm upgrade --dependency-update \
  --install edb-pg4k-pgd \
  --namespace pgd-operator-system \
  --create-namespace \
  edb/edb-postgres-distributed-for-kubernetes \
  --set global.repository=docker.enterprisedb.com/k8s \
  --set global.pgdImageName=${EDB_PGD_IMAGE_NAME} \
  --set global.proxyImageName=${EDB_PROXY_IMAGE_NAME} \
  --set image.imageCredentials.username=k8s \
  --set image.imageCredentials.password=${EDB_SUBSCRIPTION_TOKEN}
Note

With the above installation, the default operand and proxy image are configured in the operator's ConfigMap pgd-operator-controller-manager-config. For more information, please refer to the Operator Configuration.

Here’s an example of the customization for:

  • Using EDB Postgres Advanced Server 15.14.0 as the Postgres option.
  • Using PGD 5.9.0 as the Postgres Distributed version.
  • Using 5.9.0 as the PGD Proxy version.
helm upgrade --dependency-update \
    --install edb-pg4k-pgd \
    --namespace pgd-operator-system \
    --create-namespace \
    edb/edb-postgres-distributed-for-kubernetes \
    --set global.repository=docker.enterprisedb.com/k8s \
    --set global.pgdImageName=edb-postgres-advanced-pgd:15.14-pgd590-ubi8 \
    --set global.proxyImageName=edb-pgd-proxy:5.9.0-ubi8 \
    --set image.imageCredentials.username=k8s \
    --set image.imageCredentials.password=${EDB_SUBSCRIPTION_TOKEN}

Update Default Operand Images for an Existing Operator

You can modify the default operand images by updating the pgd-operator-controller-manager-config ConfigMap or Secret. For further details, please refer to the Operator Configuration documentation.

Customize Operand Images for Single PGDGroup Deployment

You can also customize operand and proxy image for a single PGDGroup deployment. In this case, it's necessary to create the image pull secrets in the target namespace. If you've already installed the EDB Postgres Distributed for Kubernetes operator from the private registry, you should have set up an image pull secret.

kubectl create secret docker-registry registry-pullsecret \
  -n <CLUSTER-NAMESPACE> \
  --docker-server=docker.enterprisedb.com \
  --docker-username=k8s \
  --docker-password=${EDB_SUBSCRIPTION_TOKEN}

As mentioned earlier, the docker-username corresponds to the private registry name, k8s, while the docker-password is the token obtained from the EDB portal.

After creating your pull secret, ensure you set the imagePullSecrets field in the PGD group manifest, along with the imageName. The manifest below will create a PGD group running PG Extended from the k8s repository.

apiVersion: pgd.k8s.enterprisedb.io/v1beta1
kind: PGDGroup
metadata:
  name: group-example-pge
spec:
  instances: 2
  proxyInstances: 2
  witnessInstances: 1
  imageName: docker.enterprisedb.com/k8s/edb-postgres-extended-pgd:17.6-pgd590-ubi9
  imagePullSecrets:
  - name: registry-pullsecret
  pgdProxy:
    imageName: docker.enterprisedb.com/k8s/edb-pgd-proxy:5.9.0-ubi9
  pgd:
    parentGroup:
      name: world
      create: true
  cnp:
    storage:
      size: 1Gi