2.2. Helm チャートを使用した外部 PostgreSQL インスタンスの設定
Helm チャートを使用して外部 PostgreSQL インスタンスを設定できます。デフォルトでは、Helm チャートは RHDH インスタンスのデプロイ先と同じ namespace に PostgreSQL のローカルインスタンスを作成して管理します。ただし、このデフォルト設定を変更して、Amazon Web Services (AWS) Relational Database Service (RDS) や Azure データベースなどの外部 PostgreSQL データベースサーバーを設定することもできます。
前提条件
- サポートされているバージョンの PostgreSQL を使用している。詳細は、製品ライフサイクルのページ を参照してください。
次の情報がある。
-
db-host
: PostgreSQL インスタンスの Domain Name System (DNS) または IP アドレスを示します。 -
db-port
: PostgreSQL インスタンスのポート番号 (5432
など) を示します。 -
username
: PostgreSQL インスタンスに接続するためのユーザー名を示します。 -
password
: PostgreSQL インスタンスに接続するためのパスワードを示します。
-
- Helm チャートを使用して RHDH アプリケーションをインストールした。
- オプション: TLS プロトコルを使用してデータベース接続を保護できるように、CA 証明書、Transport Layer Security (TLS) 秘密鍵、および TLS 証明書がある。詳細は、PostgreSQL ベンダーのドキュメントを参照してください。
デフォルトでは、Developer Hub は各プラグインのデータベースを使用します。見つからない場合は、自動的にデータベースを作成します。外部 PostgreSQL インスタンスを設定するには、PSQL Database
権限に加えて、Create Database
権限が必要になる場合があります。
手順
オプション: TLS 接続を使用して PostgreSQL インスタンスを設定するための証明書シークレットを作成します。
cat <<EOF | oc -n <your-namespace> create -f - apiVersion: v1 kind: Secret metadata: name: {my-product-database-certificates-secrets} 1 type: Opaque stringData: postgres-ca.pem: |- -----BEGIN CERTIFICATE----- <ca-certificate-key> 2 postgres-key.key: |- -----BEGIN CERTIFICATE----- <tls-private-key> 3 postgres-crt.pem: |- -----BEGIN CERTIFICATE----- <tls-certificate-key> 4 # ... EOF
PostgreSQL インスタンスに接続するための認証情報シークレットを作成します。
cat <<EOF | oc -n <your-namespace> create -f - apiVersion: v1 kind: Secret metadata: name: {my-product-database-secrets} 1 type: Opaque stringData: 2 POSTGRES_PASSWORD: <password> POSTGRES_PORT: "<db-port>" POSTGRES_USER: <username> POSTGRES_HOST: <db-host> PGSSLMODE: <ssl-mode> # for TLS connection 3 NODE_EXTRA_CA_CERTS: <abs-path-to-pem-file> # for TLS connection, e.g. /opt/app-root/src/postgres-crt.pem 4 EOF
- 1
- 認証情報シークレットの名前を指定します。
- 2
- PostgreSQL インスタンスに接続するための認証情報データを指定します。
- 3
- オプション: 必要な Secure Sockets Layer (SSL) モード に応じて値を指定します。
- 4
- オプション: PostgreSQL インスタンスに TLS 接続が必要な場合にのみ値を指定します。
values.yaml
という名前の Helm 設定ファイルで PostgreSQL インスタンスを設定します。# ... upstream: postgresql: enabled: false # disable PostgreSQL instance creation 1 auth: existingSecret: {my-product-database-secrets} # inject credentials secret to Backstage 2 backstage: appConfig: backend: database: connection: # configure Backstage DB connection parameters host: ${POSTGRES_HOST} port: ${POSTGRES_PORT} user: ${POSTGRES_USER} password: ${POSTGRES_PASSWORD} ssl: rejectUnauthorized: true, ca: $file: /opt/app-root/src/postgres-ca.pem key: $file: /opt/app-root/src/postgres-key.key cert: $file: /opt/app-root/src/postgres-crt.pem extraEnvVarsSecrets: - {my-product-database-secrets} # inject credentials secret to Backstage 3 extraEnvVars: - name: BACKEND_SECRET valueFrom: secretKeyRef: key: backend-secret name: '{{ include "janus-idp.backend-secret-name" $ }}' extraVolumeMounts: - mountPath: /opt/app-root/src/dynamic-plugins-root name: dynamic-plugins-root - mountPath: /opt/app-root/src/postgres-crt.pem name: postgres-crt # inject TLS certificate to Backstage cont. 4 subPath: postgres-crt.pem - mountPath: /opt/app-root/src/postgres-ca.pem name: postgres-ca # inject CA certificate to Backstage cont. 5 subPath: postgres-ca.pem - mountPath: /opt/app-root/src/postgres-key.key name: postgres-key # inject TLS private key to Backstage cont. 6 subPath: postgres-key.key extraVolumes: - ephemeral: volumeClaimTemplate: spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi name: dynamic-plugins-root - configMap: defaultMode: 420 name: dynamic-plugins optional: true name: dynamic-plugins - name: dynamic-plugins-npmrc secret: defaultMode: 420 optional: true secretName: dynamic-plugins-npmrc - name: postgres-crt secret: secretName: {my-product-database-certificates-secrets} 7 # ...
values.yaml
という名前の Helm 設定ファイルに設定の変更を適用します。helm upgrade -n <your-namespace> <your-deploy-name> openshift-helm-charts/redhat-developer-hub -f values.yaml --version 1.4.1