1.2. 可选:在 Tekton Hub 中使用自定义数据库
集群管理员可以将自定义数据库用于 Tekton Hub,而不是 Operator 安装的默认 PostgreSQL 数据库。您可以在安装时关联自定义数据库,并将其与 Tekton Hub 提供的 db-migration
、api
和 ui
接口一起使用。或者,即使安装了默认数据库,也可以将自定义数据库与 Tekton Hub 关联。
流程
在目标命名空间中创建名为
tekton-hub-db
的 secret,其键如下:-
POSTGRES_HOST
-
POSTGRES_DB
-
POSTGRES_USER
-
POSTGRES_PASSWORD
POSTGRES_PORT
示例:自定义数据库 secret
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> ...
注意默认目标命名空间是
openshift-pipelines
。
-
在
TektonHub
CR 中,将 database secret 属性的值设置为tekton-hub-db
。示例:添加自定义数据库 secret
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 可能需要一些时间才能获得 steady 状态。$ 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。
- 创建一个 Postgres 实例,用于启动 Crunchy 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 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 主机的 secret 值。
示例:对 Crunchy Postgres 主机的 secret 值进行编码
$ echo 'aGlwcG8tcHJpbWFyeS5vcGVuc2hpZnQtb3BlcmF0b3JzLnN2YyA=' | base64 --decode test-primary.openshift-operators.svc
在目标命名空间中创建名为
tekton-hub-db
的 secret,其键如下:-
POSTGRES_HOST
-
POSTGRES_DB
-
POSTGRES_USER
-
POSTGRES_PASSWORD
POSTGRES_PORT
示例:自定义数据库 secret
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' ...
注意默认目标命名空间是
openshift-pipelines
。-
在
TektonHub
CR 中,将 database secret 属性的值设置为tekton-hub-db
。示例:添加自定义数据库 secret
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 可能需要一些时间才能获得 steady 状态。$ 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>
Example
$ 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>
Example
$ 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>
Example
$ 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 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)
- 退出数据库。
验证目标命名空间中名为
tekton-hub-db
的 secret 具有以下键:-
POSTGRES_HOST
-
POSTGRES_DB
-
POSTGRES_USER
-
POSTGRES_PASSWORD
POSTGRES_PORT
示例:自定义数据库 secret
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
字段的值编码为 secret。您可以使用以下示例解码 Crunchy Postgres 主机的值。示例:对 Crunchy Postgres 主机的 secret 值进行编码
$ echo 'aGlwcG8tcHJpbWFyeS5vcGVuc2hpZnQtb3BlcmF0b3JzLnN2YyA=' | base64 --decode test-primary.openshift-operators.svc
-
验证在
TektonHub
CR 中,数据库 secret 属性的值是否为tekton-hub-db
。示例: TektonHub CR,带有数据库 secret 的名称
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 可能需要一些时间才能获得 steady 状态。$ 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/