EDB private container registries#

EDB Postgres for Kubernetes オペレーターのイメージおよびさまざまなオペランドは、docker.enterprisedb.com の下のプライベートコンテナイメージレジストリに保持されます。

重要

プライベートレジストリへのアクセスには、EDBのアカウントが必要で、有効な subscription plan を持つEDB顧客に予約されています。資格情報は、EDBアカウントを介して収集されます。

重要

レジストリごとに10GB/月の帯域幅クォータがあります。

注釈

プライベートレジストリからオペレーターとオペランドをインストールする場合、 License and License keys は必要ありません。

どのリポジトリを選択しますか?#

EDB Postgres for Kubernetesは、「EDB Enterpriseプラン」または「EDB Standardプラン」のいずれかで利用できます。

サブスクリプションプランに応じて、KubernetesのEDB Postgresは、以下の表で説明しているように、次のリポジトリのいずれかにあります。

Plan

Repository

EDB Standard Plan

k8s_standard

EDB EnterpriseDB Plan

k8s_enterprise

リポジトリの名前は、たとえば docker login または kubernetes.io/dockerconfigjson を介してEDBコンテナレジストリにログインしようとするときに ユーザー名 として使用されます。

重要

各リポジトリには、プランでアクセスできるすべてのイメージが含まれています。演算子やオペランドイメージなどのさまざまなイメージにアクセスするために別のリポジトリに接続する必要はありません。

トークンの取得方法#

repositories page in EDB には、 Repo Token が隠れて表示されている EDB Repos 2.0 セクションがあります。同じトークンは、 Repos 2.0 token というラベルの付いた Account profile でも使用できます。

トークンの横には、トークンをコピーするボタンと、トークンのコンテンツをクリアテキストとして表示する場合の目のアイコンがあります。トークンは、EDBコンテナレジストリにアクセスしようとするときに パスワード として使用されます。

docker login を使用した例#

ターミナルからDockerを介してログインできるはずです。 Copy Token ボタンを使用してリポトークンをコピーすることをお勧めします。次のdocker コマンドは、ユーザー名とパスワードの入力を求めます。

上記で説明したように、ユーザー名はアクセスしようとしているリポジトリであり、パスワードはコピーしたばかりのトークンである必要があります。

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

オペランドイメージ#

KubernetesのEDB Postgresは、同じプライベートレジストリから利用可能なイメージを含むさまざまなPostgreSQLディストリビューションをサポートしています。

  • EDB Postgres Advanced EPAS

  • EDB Postgres Extended PGE

注釈

PostgreSQLイメージはプライベートレジストリでは利用できませんが、 quay.io/enterprisedb/postgresql または`ghcr.io/enterprisedb/postgresql` ですぐに利用できます。

これらのイメージは、 Container Image Requirements で説明されている要件と規則に従います。

EDB Postgres for Kubernetesドキュメントのページ

以下の表では、各Postgresディストリビューションのイメージ名前の接頭辞を見つけることができます。

Postgres distribution

Image name

Repositories

EDB Postgres Extended (PGE)

edb-postgres-extended

k8s_standard, k8s_enterprise

EDB Postgres Advanced (EPAS)

edb-postgres-advanced

k8s_enterprise

EPASまたはPGEオペランドを使用してクラスターを展開する方法#

プライベートレジストリからEDB Postgres for Kubernetesオペレーターを既にインストールしている場合、イメージプルシークレットを既に設定している必要があります。まだの方は、次のセクションに興味があるかもしれません。

オペレーターの既存のインストールがある場合、プライベートレジストリからEPASまたはPGEのイメージをプルするには、 kubernetes.io/dockerconfigjson を作成する必要があります。

create a pull secret from credentials ができます。

kubectl create secret docker-registry registry-pullsecret \
  -n <CLUSTER-NAMESPACE> --docker-server=docker.enterprisedb.com \
  --docker-username=<REGISTRY-NAME> \
  --docker-password=<TOKEN>

前述のように、docker-username はレジストリの名前です。つまり、k8s_standard またはk8s_enterprise です。 docker-password は、 トークンの取得方法 から取得したトークンです。

プルシークレットが作成されたら、クラスターマニフェストのimageName に加えてimagePullSecrets フィールドを忘れずに設定します。以下のマニフェストは、 k8s_enterprise リポジトリからPG Extendedを実行するクラスターを作成します。

apiVersion: postgresql.k8s.enterprisedb.io/v1
kind: Cluster
metadata:
  name: postgresql-extended-cluster
spec:
  instances: 3
  imageName: docker.enterprisedb.com/k8s_enterprise/edb-postgres-extended:16.2
  imagePullSecrets:
  - name: registry-pullsecret

  storage:
    storageClass: standard
    size: 1Gi

EDBプライベートレジストリを使用してオペレーターをインストールする方法#

前述のように、dockerの ユーザー名 はリポジトリの名前であり、トークンは パスワード です。 kubernetesは、 kubernetes.io/dockerconfigjson を設定することにより、同じ資格情報を使用してレジストリにアクセスできます。

installation document で述べたように、オペレーターをインストールするにはいくつかの異なる方法があります。

プライベートレジストリからのイメージを使用してインストールする場合は、前述のようにプルシークレットを作成し、展開マニフェストのOPERATOR_IMAGE_NAME パラメーターをカスタマイズする必要があります。

インストールにはHelmチャートを使用することをお勧めします。これにより、プルシークレットの作成とオペレーターイメージリポジトリのカスタマイズが行われます。

詳細については、 Helm chart ページをご覧ください。

例として、次のコマンドトークンを提供すると、EDB EnterpriseDBプランのリポジトリを使用する場合、PG4Kオペレーターをインストールします。

helm upgrade --install edb-pg4k \
  --namespace postgresql-operator-system \
  --create-namespace \
  --set image.repository=docker.enterprisedb.com/k8s_enterprise/edb-postgres-for-kubernetes \
  --set image.imageCredentials.username=k8s_enterprise \
  --set image.imageCredentials.password=<ENTITLEMENT_TOKEN> \
  --set image.imageCredentials.create=true \
  --set "imagePullSecrets[0].name"=postgresql-operator-pull-secret \
  --set config.data.PULL_SECRET_NAME=postgresql-operator-pull-secret \
  edb/edb-postgres-for-kubernetes