# Using a custom database * Administrators can use a custom database instead of the default PostgreSQL database installed by the Operator. You can use your custom database with `db-migration`, `api`, and `ui` interfaces provided by {tekton-hub}. * In this case, default database provided by Tekton Hub won't be installed and and other services like `db-migration`, `api`, and `ui` will be connected to the custom database which is managed by the user * . Create a secret named `tekton-hub-db` in the target namespace with the following keys: * `POSTGRES_HOST` * `POSTGRES_DB` * `POSTGRES_USER` * `POSTGRES_PASSWORD` * `POSTGRES_PORT` * Example: Custom database secrets ```yaml= ---- 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: <The name of user account> POSTGRES_PASSWORD: <The password of user account> POSTGRES_PORT: <The port that the database is listening on> ``` In the `TektonHub` CR, set the value of the database secret attribute to `tekton-hub-db` Example: Adding custom database secret ```yaml= ---- apiVersion: operator.tekton.dev/v1alpha1 kind: TektonHub metadata: name: hub spec: targetNamespace: openshift-pipelines db: # 👈 external database to be used secret: tekton-hub-db # 👈 Name of db secret should be `tekton-hub-db` api: hubConfigUrl: https://raw.githubusercontent.com/tektoncd/hub/main/config.yaml catalogRefreshInterval: 30m ``` #### For fresh installation of Tekton Hub using Custom Database Apply the updated `TektonHub` CR. ```bash= $ oc apply -f <tekton-hub-cr>.yaml ``` #### If Tekton Hub is already installed and user now wants to use Custom Database Replace the updated `TektonHub` CR. ```bash= $ oc replace -f <tekton-hub-cr>.yaml ``` * Check the status of the installation. The `TektonHub` CR might take some time to attain steady state. ```bash= $ oc get tektonhub.operator.tekton.dev NAME VERSION READY REASON APIURL UIURL hub v1.8.0 True https://api.route.url/ https://ui.route.url/ ```