第4章 外部 PostgreSQL データベースの設定
Red Hat Developer Hub Operator と Helm チャートはデフォルトでローカルの PostgreSQL データベースを作成しますが、実稼働環境をサポートするには外部データベースが必要です。
この章で外部 PostgreSQL データベースを設定する際、ローカルデータベースの作成を無効にします。
DateStyle 設定を使用して、データベースを国際標準化機構 (ISO) の日付形式を使用するように設定してください。他のフォーマットはソフトウェアカタログの内部追跡機能と互換性がないため、スケジューリングされたタスクが失敗し、カタログアイテムの更新が妨げられます。
4.1. Operator を使用した外部 PostgreSQL インスタンスの設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Developer Hub Operator を使用して外部 PostgreSQL インスタンスを設定できます。デフォルトでは、Operator は RHDH インスタンスのデプロイ先と同じ namespace に PostgreSQL のローカルインスタンスを作成して管理します。ただし、このデフォルト設定を変更して、Amazon Web Services (AWS) Relational Database Service (RDS) や Azure データベースなどの外部 PostgreSQL データベースサーバーを設定することもできます。
前提条件
- 外部 PostgreSQL デプロイメントのサイジング要件を 満たしています。
- サポートされているバージョンの PostgreSQL を使用している。詳細は、製品ライフサイクルのページ を参照してください。
次の情報がある。
-
db-host: PostgreSQL インスタンスの Domain Name System (DNS) または IP アドレスを示します。 -
db-port: PostgreSQL インスタンスのポート番号 (5432など) を示します。 -
username: PostgreSQL インスタンスに接続するためのユーザー名を示します。 -
password: PostgreSQL インスタンスに接続するためのパスワードを示します。
-
- Red Hat Developer Hub Operator がインストールされている。
- オプション: TLS プロトコルを使用してデータベース接続を保護できるように、CA 証明書、Transport Layer Security (TLS) 秘密鍵、および TLS 証明書がある。詳細は、PostgreSQL ベンダーのドキュメントを参照してください。
デフォルトでは、Developer Hub は各プラグインのデータベースを使用します。見つからない場合は、自動的にデータベースを作成します。外部 PostgreSQL インスタンスを設定するには、PSQL Database 権限に加えて、Create Database 権限が必要になる場合があります。
手順
オプション: TLS 接続を使用して PostgreSQL インスタンスを設定するための証明書シークレットを作成します。
$ cat <<EOF | oc -n my-rhdh-project create -f - apiVersion: v1 kind: Secret metadata: name: my-rhdh-database-certificates-secrets1 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 # ... EOFPostgreSQL インスタンスに接続するための認証情報シークレットを作成します。
$ cat <<EOF | oc -n my-rhdh-project create -f - apiVersion: v1 kind: Secret metadata: name: my-rhdh-database-secrets1 type: Opaque stringData:2 POSTGRES_PASSWORD: <password> POSTGRES_PORT: "<db-port>" POSTGRES_USER: <username> POSTGRES_HOST: <db-host> PGSSLMODE: <ssl-mode> # for TLS connection3 NODE_EXTRA_CA_CERTS: <abs-path-to-pem-file> # for TLS connection, e.g. /opt/app-root/src/postgres-crt.pem4 EOF- 1
- 認証情報シークレットの名前を指定します。
- 2
- PostgreSQL インスタンスに接続するための認証情報データを指定します。
- 3
- オプション: 必要な Secure Sockets Layer (SSL) モード に応じて値を指定します。
- 4
- オプション: PostgreSQL インスタンスに TLS 接続が必要な場合にのみ値を指定します。
Backstageカスタムリソース (CR) を作成します。cat <<EOF | oc -n my-rhdh-project create -f - apiVersion: rhdh.redhat.com/v1alpha5 kind: Backstage metadata: name: <backstage-instance-name> spec: database: enableLocalDb: false1 application: extraFiles: mountPath: <path> # e g /opt/app-root/src secrets: - name: my-rhdh-database-certificates-secrets2 key: postgres-crt.pem, postgres-ca.pem, postgres-key.key # key name as in my-rhdh-database-certificates-secrets Secret extraEnvs: secrets: - name: my-rhdh-database-secrets3 # ...-
BackstageCR を Developer Hub インスタンスをデプロイした namespace に適用します。