EDB's private container registries v1

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

Important

Access to the private registries requires an account with EDB and is reserved for EDB customers with a valid subscription plan. Credentials are run through your EDB account. For trials, see Trials.

Which repository to choose?

EDB Postgres Distributed for Kubernetes is available as part of the Extreme High Availability Add-On on top of either the EDB Enterprise Plan or EDB Standard Plan.

Depending on your subscription plan, EDB Postgres Distributed for Kubernetes is in one of the following repositories.

PlanRepository
EDB Standard Plan (standard)k8s_standard_pgd
EDB EnterpriseDB Plan (enterprise)k8s_enterprise_pgd

The name of the repository shall be used as the Username when you try to login to the EDB container registry, for example through docker login or a kubernetes.io/dockerconfigjson pull secret.

Important

Each repository contains all the images you can access with your plan. You don't need to connect to different repositories to access different images, such as operator or operand images.

How to retrieve the token

In the repositories page in EDB, you'll find an EDB Repos 2.0 section where a Repo Token is shown, obscured. The same token is also available in your Account profile, labeled as Repos 2.0 token.

Next to the token you'll find a button to copy the token, and an eye icon in case you want to view the content of the token as clear text. The token shall be used as the Password when you try to access the EDB container registry.

Example with docker login

You can log in using Docker from your terminal. We suggest that you copy the repo token using Copy Token. The docker command prompts you for a username and a password.

The username is the repo you're trying to access, and the password is the token you just copied:

$ docker login docker.enterprisedb.com
Username: k8s_enterprise_pgd
Password:
Login Succeeded

Trials

If you're a trialist or a preview user, use k8s_enterprise_pgd as the name of the repository, and follow the instructions in How to retrieve the token for the token.

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 nameRepositories
PostgreSQL13 - 17postgresql-pgdk8s_standard_pgd, k8s_enterprise_pgd
EDB Postgres Extended13 - 17edb-postgres-extended-pgdk8s_standard_pgd, k8s_enterprise_pgd
EDB Postgres Advanced13 - 17edb-postgres-advanced-pgdk8s_enterprise_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 key word, their version numbers, and the build version.

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.

Build version: The value reflects the current build, for example, 1. EDB creates new builds to include security patches.

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

Postgres versionEDB Postgres Distributed versionBuildOperand image name
EDB Postgres Advanced 16.6.0PGD 5.6.11edb-postgres-advanced-pgd:16.6.0-5.6.1-1
EDB Postgres Extended 15.10PGD 5.6.11edb-postgres-extended-pgd:15.10-5.6.1-1
PostgreSQL 16.6PGD 5.6.11postgresql-pgd:16.6-5.6.1-1
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.6.0edb-pgd-proxy:5.6.0
ubi-9 operand image

By default, all operand and proxy image are ubi-8 based, if you want to have ubi-9 based image, append the -ubi9 suffix to the operand image name and proxy image name.

Customize Operand Distribution or Version

Customize During Operator Deployment

When deploying the EDB Postgres Distributed for Kubernetes operator, you can specify the distribution and version of the operand and proxy images. This configuration will be applied to all subsequent PGDGroup creations.

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_${EDB_SUBSCRIPTION_PLAN}_pgd \
  --set global.pgdImageName=${EDB_PGD_IMAGE_NAME} \
  --set global.proxyImageName=${EDB_PROXY_IMAGE_NAME} \
  --set image.imageCredentials.username=k8s_${EDB_SUBSCRIPTION_PLAN}_pgd \
  --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 enterprise subscription plan and pull images from the k8s_enterprise_pgd repository.
  • Use EDB Postgres Advanced Server 15.10.0 as the Postgres option.
  • Use PGD 5.6.1 as the Postgres Distributed version.
  • Use 5.6.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_enterprise_pgd \
    --set global.pgdImageName=edb-postgres-advanced-pgd:15.10.0-5.6.1-1 \
    --set global.proxyImageName=edb-pgd-proxy:5.6.0 \
    --set image.imageCredentials.username=k8s_enterprise_pgd \
    --set image.imageCredentials.password=<my_registry_token>

Customize for single PGDGroup

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=<REGISTRY-NAME> \
  --docker-password=<TOKEN>

As mentioned earlier, the docker-username corresponds to your registry name, such as k8s_standard_pgd or k8s_enterprise_pgd, 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_enterprise_pgd 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_enterprise_pgd/edb-postgres-extended-pgd:15.10-5.6.1-1
  imagePullSecrets:
  - name: registry-pullsecret
  pgdProxy:
    imageName: docker.enterprisedb.com/k8s_enterprise_pgd/edb-pgd-proxy:5.6.0
  pgd:
    parentGroup:
      name: world
      create: true
  cnp:
    storage:
      size: 1Gi