1.2. オプション: Tekton Hub でのカスタムデータベースの使用
クラスター管理者は、Operator によってインストールされたデフォルトの PostgreSQL データベースの代わりに、カスタムデータベースを Tekton Hub で使用できます。インストール時にカスタムデータベースを関連付けて、Tekton Hub が提供する db-migration
、api
、および ui
インターフェイスで使用できます。または、デフォルトデータベースでのインストールが完了した後でも、カスタムデータベースを Tekton Hub に関連付けることができます。
手順
次のキーを使用して、ターゲット namespace に
tekton-hub-db
という名前のシークレットを作成します。-
POSTGRES_HOST
-
POSTGRES_DB
-
POSTGRES_USER
-
POSTGRES_PASSWORD
POSTGRES_PORT
例: カスタムデータベースシークレット
apiVersion: v1 kind: Secret metadata: name: tekton-hub-db labels: app: tekton-hub-db type: Opaque stringData: POSTGRES_HOST: <The name of the host of the database> POSTGRES_DB: <Name of the database> POSTGRES_USER: <username> POSTGRES_PASSWORD: <password> POSTGRES_PORT: <The port that the database is listening on> ...
注記デフォルトのターゲット namespace は
openshift-pipelines
です。
-
TektonHub
CR で、データベースのシークレット属性の値をtekton-hub-db
に設定します。例: カスタムデータベースシークレットの追加
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines db: secret: tekton-hub-db api: hubConfigUrl: https://raw.githubusercontent.com/tektoncd/hub/main/config.yaml catalogRefreshInterval: 30m ...
更新された
TektonHub
CR を使用して、カスタムデータベースを Tekton Hub に関連付けます。クラスターに Tekton Hub をインストールするときにカスタムデータベースを関連付ける場合は、更新された
TektonHub
CR を適用します。$ oc apply -f <tekton-hub-cr>.yaml
または、Tekton Hub のインストールが完了した後にカスタムデータベースを関連付ける場合は、既存の
TektonHub
CR を更新されたTektonHub
CR に置き換えます。$ oc replace -f <tekton-hub-cr>.yaml
インストールのステータスを確認します。
TektonHub
CR が安定状態になるまでに時間がかかる場合があります。$ oc get tektonhub.operator.tekton.dev
出力例
NAME VERSION READY REASON APIURL UIURL hub v1.9.0 True https://api.route.url/ https://ui.route.url/
1.2.1. オプション: Crunchy Postgres データベースと Tekton Hub のインストール
クラスター管理者は、Crunchy Postgres データベースをインストールし、デフォルトデータベースの代わりにそれを使用するように、Tekton Hub を設定できます。
前提条件
- Operator Hub から Crunchy Postgres Operator をインストールする。
- Crunchy Postgres データベースを起動する Postgres インスタンスを作成する。
手順
Crunchy Postgres Pod に入ります。
たとえば、
test-instance1-m7hh-0
Pod に入ります$ oc exec -it -n openshift-operators test-instance1-m7hh-0 -- /bin/sh Defaulting container name to database. Use 'oc describe pod/test-instance1-m7hh-0 -n openshift-operators' to see all of the containers in this pod. sh-4.4$ psql -U postgres psql (14.4) Type "help" for help.
pg_hba.conf
ファイルを見つけます。postgres=# SHOW hba_file; hba_file -------------------------- /pgdata/pg14/pg_hba.conf (1 row) postgres=#
- データベースを終了します。
pg_hba.conf
ファイルに、すべての受信接続にアクセスするために必要なエントリーhost all all 0.0.0.0/0 md5
があるかどうかを確認します。さらに、pg_hba.conf
ファイルの末尾にエントリーを追加します。例:
pg_hba.conf
ファイルsh-4.4$ cat /pgdata/pg14/pg_hba.conf # Do not edit this file manually! # It will be overwritten by Patroni! local all "postgres" peer hostssl replication "_crunchyrepl" all cert hostssl "postgres" "_crunchyrepl" all cert host all "_crunchyrepl" all reject hostssl all all all md5 host all all 0.0.0.0/0 md5
pg_hba.conf
ファイルを保存し、データベースをリロードします。sh-4.4$ psql -U postgres psql (14.4) Type "help" for help. postgres=# SHOW hba_file; hba_file -------------------------- /pgdata/pg14/pg_hba.conf (1 row) postgres=# SELECT pg_reload_conf(); pg_reload_conf ---------------- t (1 row)
- データベースを終了します。
Crunchy Postgres ホストのシークレット値をデコードします。
例: Crunchy Postgres ホストのシークレット値をデコードする
$ echo 'aGlwcG8tcHJpbWFyeS5vcGVuc2hpZnQtb3BlcmF0b3JzLnN2YyA=' | base64 --decode test-primary.openshift-operators.svc
次のキーを使用して、ターゲット namespace に
tekton-hub-db
という名前のシークレットを作成します。-
POSTGRES_HOST
-
POSTGRES_DB
-
POSTGRES_USER
-
POSTGRES_PASSWORD
POSTGRES_PORT
例: カスタムデータベースシークレット
apiVersion: v1 kind: Secret metadata: name: tekton-hub-db labels: app: tekton-hub-db type: Opaque stringData: POSTGRES_HOST: test-primary.openshift-operators.svc POSTGRES_DB: test POSTGRES_USER: <username> POSTGRES_PASSWORD: <password> POSTGRES_PORT: '5432' ...
注記デフォルトのターゲット namespace は
openshift-pipelines
です。-
TektonHub
CR で、データベースのシークレット属性の値をtekton-hub-db
に設定します。例: カスタムデータベースシークレットの追加
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines db: secret: tekton-hub-db ...
更新された
TektonHub
CR を使用して、カスタムデータベースを Tekton Hub に関連付けます。$ oc apply -f <tekton-hub-cr>.yaml
インストールのステータスを確認します。
TektonHub
CR が安定状態になるまでは、時間がかかる場合があります。$ oc get tektonhub.operator.tekton.dev
出力例
NAME VERSION READY REASON APIURL UIURL hub v1.9.0 True https://api.route.url/ https://ui.route.url/
1.2.2. オプション: Tekton Hub データを既存の Crunchy Postgres データベースに移行する
Tekton Hub は、カスタムデータベースとして Crunchy Postgres の使用をサポートしています。デフォルトデータベースを備えたプリインストールされた Tekton Hub の場合、クラスター管理者は、Tekton Hub データを内部またはデフォルトのデータベースから外部の Crunchy Postgres データベースに移行した後、Crunchy Postgres をカスタムデータベースとして使用できます。
手順
内部またはデフォルトのデータベースから Pod 内のファイルに既存のデータをダンプします。
例: データのダンプ
$ pg_dump -Ft -h localhost -U postgres hub -f /tmp/hub.dump
データダンプを含むファイルをローカルシステムにコピーします。
コマンドの形式
$ oc cp -n <namespace> <podName>:<path-to-hub.dump> <path-to-local-system>
例
$ oc cp -n openshift-pipelines tekton-hub-db-7d6d888c67-p7mdr:/tmp/hub.dump /home/test_user/Downloads/hub.dump
データダンプを含むファイルをローカルシステムから外部の Crunchy Postgres データベースを実行している Pod にコピーします。
コマンドの形式
$ oc cp -n <namespace> <path-to-local-system> <podName>:<path-to-hub.dump>
例
$ oc cp -n openshift-operators /home/test_user/Downloads/hub.dump test-instance1-spnz-0:/tmp/hub.dump
Crunchy Postgres データベース内のデータを復元します。
コマンドの形式
$ pg_restore -d <database-name> -h localhost -U postgres <path-where-file-is-copied>
例
$ pg_restore -d test -h localhost -U postgres /tmp/hub.dump
Crunchy Postgres Pod に入ります。例:
test-instance1-m7hh-0
Pod に入ります$ oc exec -it -n openshift-operators test-instance1-m7hh-0 -- /bin/sh Defaulting container name to database. Use 'oc describe pod/test-instance1-m7hh-0 -n openshift-operators' to see all of the containers in this pod. sh-4.4$ psql -U postgres psql (14.4) Type "help" for help.
pg_hba.conf
ファイルを見つけます。postgres=# SHOW hba_file; hba_file -------------------------- /pgdata/pg14/pg_hba.conf (1 row) postgres=#
- データベースを終了します。
pg_hba.conf
ファイルに、すべての受信接続にアクセスするために必要なエントリーhost all all 0.0.0.0/0 md5
があるか確認します。必要に応じて、pg_hba.conf
ファイルの末尾にエントリーを追加します。例:
pg_hba.conf
ファイルsh-4.4$ cat /pgdata/pg14/pg_hba.conf # Do not edit this file manually! # It will be overwritten by Patroni! local all "postgres" peer hostssl replication "_crunchyrepl" all cert hostssl "postgres" "_crunchyrepl" all cert host all "_crunchyrepl" all reject hostssl all all all md5 host all all 0.0.0.0/0 md5
pg_hba.conf
ファイルを保存し、データベースをリロードします。sh-4.4$ psql -U postgres psql (14.4) Type "help" for help. postgres=# SHOW hba_file; hba_file -------------------------- /pgdata/pg14/pg_hba.conf (1 row) postgres=# SELECT pg_reload_conf(); pg_reload_conf ---------------- t (1 row)
- データベースを終了します。
ターゲット namespace の
tekton-hub-db
という名前のシークレットに次のキーがあることを確認します。-
POSTGRES_HOST
-
POSTGRES_DB
-
POSTGRES_USER
-
POSTGRES_PASSWORD
POSTGRES_PORT
例: カスタムデータベースシークレット
apiVersion: v1 kind: Secret metadata: name: tekton-hub-db labels: app: tekton-hub-db type: Opaque stringData: POSTGRES_HOST: test-primary.openshift-operators.svc POSTGRES_DB: test POSTGRES_USER: test POSTGRES_PASSWORD: woXOisU5>ocJiTF7y{{;1[Q( POSTGRES_PORT: '5432' ...
注記POSTGRES_HOST
フィールドの値はシークレットとしてエンコードされます。次の例を使用して、Crunchy Postgres ホストの値をデコードできます。例: Crunchy Postgres ホストのシークレット値をデコードする
$ echo 'aGlwcG8tcHJpbWFyeS5vcGVuc2hpZnQtb3BlcmF0b3JzLnN2YyA=' | base64 --decode test-primary.openshift-operators.svc
-
TektonHub
CR で、データベースのシークレット属性の値がtekton-hub-db
であることを確認します。例: データベースシークレットの名前を含む TektonHub CR
apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines db: secret: tekton-hub-db ...
外部の Crunchy Postgres データベースを Tekton Hub に関連付けるには、既存の
TektonHub
CR を更新されたTektonHub
CR に置き換えます。$ oc replace -f <updated-tekton-hub-cr>.yaml
Tekton Hub のステータスを確認します。更新された
TektonHub
CR が安定状態になるまでに時間がかかる場合があります。$ oc get tektonhub.operator.tekton.dev
出力例
NAME VERSION READY REASON APIURL UIURL hub v1.9.0 True https://api.route.url/ https://ui.route.url/