> For the complete documentation index, see [llms.txt](https://developer.harness.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.harness.io/database-devops/new-to-database-devops/overview.md).

# Harness Database DevOps (DB DevOps) Overview

Harness Database DevOps helps you integrate database changes into application deployment pipelines. It provides a centralized way to manage database schemas and enforce governance policies. It also helps developers and database administrators (DBAs) collaborate on database changes.

Harness Database DevOps connects application delivery and database management. It helps you deliver software reliably.

Harness DB DevOps provides these benefits:

* **Facilitate scalability:** Automating provisioning and configuration management helps databases scale with increasing loads.
* **Improve collaboration and efficiency:** Integrating database changes into the DevOps pipeline helps teams collaborate. It reduces silos and improves communication.
* **Increase reliability and stability:** The automation of testing and deployment processes ensures that changes are consistent and less prone to human error.
* **Streamline change management:** Version control and automated deployments improve database schema change management.
* **Enhance security and compliance:** Automated processes apply security policies across environments. You can integrate compliance checks into the CI/CD pipeline.
* **Orchestrate database changes:** Harness Database DevOps manages database changes through controlled, automated pipelines.

### Harness DB DevOps architecture <a href="#harness-db-devops-architecture" id="harness-db-devops-architecture"></a>

{% hint style="info" %}
**Access requirement**

You need the Database DevOps module enabled. Contact [Harness Support](mailto:support@harness.io) to enable the module.
{% endhint %}

![Harness DB DevOps architecture diagram](/files/BwO2cOww7UlzZWgJd3y7)

{% hint style="info" %}
**Runtime data flow**

Harness now streams large, transient, runtime-only payloads (such as logs, test results, and database schema diffs) directly from short-lived plugin pods to the SaaS platform over outbound TLS. This enhancement avoids Delegate resource bottlenecks and improves scalability. All secrets and sensitive data continue to remain strictly within customer infrastructure, with the Delegate enforcing all orchestration and authentication.
{% endhint %}

The Harness Database DevOps architecture is built around the Harness Delegate, which plays a crucial role in managing database change operations. This delegate operates within your environment whether that is a local network, virtual private cloud, or Kubernetes cluster, ensuring seamless integration with your existing infrastructure.

The [Harness Delegate](/harness-ai/use-harness-platform/delegates/delegate/delegate-concepts/delegate-overview.md) serves as the bridge between the Harness Manager in your SaaS instance and your database instances, code repositories, and cloud providers. It facilitates the orchestration of database changes by connecting to your version control systems and artifact repositories, allowing for efficient management of database migrations and updates.

You have the flexibility to store your database scripts and artifacts either internally or on public platforms like GitHub. The delegate is responsible for spinning up pods on a Kubernetes cluster to executing database change jobs and applying migrations as specified in your deployment pipelines. This Kubernetes cluster must have network access to your databases, and the delegate must have access to the cluster. By leveraging the harness delegate neither the database server, nor the Kubernetes cluster, needs to be internet accessible. It also collects and transmits data back to the Harness Manager, which can be utilized for orchestration, monitoring, debugging, and analytics.

Upon successful completion of a database deployment pipeline, the system can apply changes to the designated database instances, based on your pipeline configuration. Harness Database DevOps captures detailed logs and outputs from each deployment, enabling you to review and analyze the results both during and after the execution of your database operations.

This comprehensive approach ensures that your database changes are managed efficiently and effectively, aligning with best practices in Database DevOps.

### Harness DB DevOps image list <a href="#harness-db-devops-images-list" id="harness-db-devops-images-list"></a>

Harness publishes `plugins/drone-liquibase` with `x.y.z-{liquibaseVersion}`, where `x.y.z` follows Harness semantic versioning. These Harness DB DevOps images serve the following purposes:

* `plugins/download-artifactory`: Used for downloading artifacts from Artifactory.
* `plugins/drone-liquibase:x.y.z-{liquibaseVersion}`: Default Liquibase plugin for database operations.
* `harness/drone-git`: Used to clone Git repositories.
* `plugins/drone-liquibase:x.y.z-{liquibaseVersion}-mongo`: Liquibase plugin for MongoDB.
* `plugins/drone-liquibase:x.y.z-{liquibaseVersion}-spanner`: Liquibase plugin for Google Spanner.
* `plugins/drone-flyway:x.y.z-{flywayVersion}`: Flyway plugin for database operations.
* `plugins/drone-flyway-mongo:x.y.z-{flywayVersion}-mongo`: Flyway plugin for MongoDB.
* `plugins/drone-flyway-spanner:x.y.z-{flywayVersion}-spanner`: Flyway plugin for Google Spanner. Go to [Release Notes](/release-notes/database-devops.md) to view the complete and latest list of images and their tags.

### Configure Harness DB DevOps image versions <a href="#configure-harness-db-devops-image-versions" id="configure-harness-db-devops-image-versions"></a>

By default, Harness uses predefined images. Customers can override these defaults using API endpoints.

#### Get default configurations <a href="#get-default-configurations" id="get-default-configurations"></a>

Retrieve the default Harness DB DevOps image versions:

```sh
curl -i -X GET \
  https://app.harness.io/v1/dbops/execution-config/get-default-config \
  -H 'Harness-Account: $YOUR_HARNESS_ACCOUNT_ID' \
  -H 'X-API-KEY: $API_KEY'
```

Response:

```json
{
  "artifactoryTag": "plugins/download-artifactory:1.0.0",
  "defaultTag": "plugins/drone-liquibase:1.18.0-4.33",
  "gitCloneTag": "harness/drone-git:1.6.4-rootless",
  "mongoTag": "plugins/drone-liquibase:1.18.0-4.33-mongo",
  "spannerTag": "plugins/drone-liquibase:1.18.0-4.33-spanner"
}
```

#### Get customer-specific overrides <a href="#get-customer-specific-overrides" id="get-customer-specific-overrides"></a>

Send a get-customer-config request to get the build images that your DB DevOps pipelines currently use. When overridesOnly is true, which is the default value, this endpoint returns the non-default images that your pipeline uses.

```sh
curl -i -X GET \
https://app.harness.io/v1/dbops/execution-config/get-customer-config \
-H "Harness-Account: $YOUR_HARNESS_ACCOUNT_ID" \
-H "X-API-KEY: $API_KEY"
```

#### Update image configuration <a href="#update-image-configuration" id="update-image-configuration"></a>

Override the default image versions with a new tag:

```sh
curl -i -X POST \
https://app.harness.io/v1/dbops/execution-config/update-config \
--header "Harness-Account: $YOUR_HARNESS_ACCOUNT_ID" \
--header "X-API-KEY: $API_KEY" \
--header 'Content-Type: application/json' \
--data-raw '[
  {
    "field": "gitCloneTag",
    "value": "harness/drone-git:1.5.6-rootless"
  },
  {
    "field": "mongoTag",
    "value": "plugins/drone-liquibase:1.18.0-4.33-mongo"
  },
  {
    "field": "spannerTag",
    "value": "plugins/drone-liquibase:1.18.0-4.33-spanner"
  }
]'
```

#### Reset image configuration to defaults <a href="#reset-image-configuration-to-defaults" id="reset-image-configuration-to-defaults"></a>

Reset specific images to their default versions:

```sh
curl -i -X POST \
https://app.harness.io/v1/dbops/execution-config/reset-config \
--header "Harness-Account: $YOUR_HARNESS_ACCOUNT_ID" \
--header "X-API-KEY: $API_KEY" \
--header 'Content-Type: application/json' \
--data-raw '[
    {
    "artifactoryTag",
    "defaultTag",
    "gitCloneTag",
    "mongoTag",
    "spannerTag"
    }
]'
```

#### Delete overrides <a href="#delete-overrides" id="delete-overrides"></a>

Delete all custom overrides for your account:

```sh
curl -i -X DELETE \
"https://app.harness.io/v1/dbops/execution-config" \
--header "Harness-Account: $YOUR_HARNESS_ACCOUNT_ID" \
--header "X-API-KEY: $API_KEY"
```

### Harness Database DevOps compared to Liquibase and Flyway <a href="#harness-database-devops-vs-liquibase-and-flyway" id="harness-database-devops-vs-liquibase-and-flyway"></a>

Harness Database DevOps is a pipeline-native orchestration layer built on top of migration tools like Liquibase and Flyway that is not a replacement for them. It adds governance, approval gates, drift detection, and full CI/CD integration that standalone tools do not provide.

Go to [Harness Database DevOps vs Liquibase vs Flyway](https://www.harness.io/blog/harness-database-devops-vs-liquibase-vs-flyway) to understand how Harness extends these tools with enterprise-grade delivery capabilities.

### Frequently asked questions <a href="#frequently-asked-questions" id="frequently-asked-questions"></a>

#### What are Harness DBOps image pulls? <a href="#what-is-harness-dbops-image-pulls" id="what-is-harness-dbops-image-pulls"></a>

By default, when a DBOps pipeline runs, the Harness Delegate uses a [Docker connector](/harness-ai/use-harness-platform/connectors/cloud-providers/ref-cloud-providers/docker-registry-connector-settings-reference.md) to make an anonymous outbound connection to pull the Harness DBOps images from the public container registry where they are stored.

#### What if I do not want to pull images anonymously? <a href="#what-if-i-do-not-want-to-pull-images-anonymously" id="what-if-i-do-not-want-to-pull-images-anonymously"></a>

You can use credentialed access if you do not want the Harness Delegate to pull images anonymously. Go to [Connect to the Harness container image registry](/harness-ai/use-harness-platform/connectors/artifact-repositories/connect-to-harness-container-image-registry-using-docker-connector.md) to set up credentialed access.

#### I do not want to pull images from a public registry <a href="#i-do-not-want-to-pull-images-from-a-public-registry" id="i-do-not-want-to-pull-images-from-a-public-registry"></a>

Harness DBOps images are stored in a public container registry. If you do not want to pull the images directly from the public registry, you can pull Harness images from your own private registry. Go to [Connect to the Harness container image registry](/harness-ai/use-harness-platform/connectors/artifact-repositories/connect-to-harness-container-image-registry-using-docker-connector.md) to configure each of these options.

#### How to override LiteEngine or CIAddOn image in DBOps? <a href="#how-to-override-liteengine-or-ciaddon-image-in-dbops" id="how-to-override-liteengine-or-ciaddon-image-in-dbops"></a>

Go to [Harness CI image updates](/continuous-integration/use-harness-ci/use-harness-ci/set-up-build-infrastructure/harness-ci.md#harness-ci-image-updates) to override using CI APIs. To use a private registry for the above images, override the default harnessImage connector at the account level. Go to [Configure Harness to always use credentials to pull Harness images](/harness-ai/use-harness-platform/connectors/artifact-repositories/connect-to-harness-container-image-registry-using-docker-connector.md#configure-harness-to-always-use-credentials-to-pull-harness-images) to set this up.

#### Can Harness Database DevOps be used to migrate databases from Azure SQL to Google Cloud SQL (or across any cloud providers)? <a href="#can-harness-database-devops-be-used-to-migrate-databases-from-azure-sql-to-google-cloud-sql-or-acros" id="can-harness-database-devops-be-used-to-migrate-databases-from-azure-sql-to-google-cloud-sql-or-acros"></a>

Harness Database DevOps is an orchestration layer, not a data migration or replication tool, and it does not move data between databases or cloud providers. For a cross-cloud move, use a dedicated data migration service (such as Azure Database Migration Service or `pg_dump/pg_restore`) to transfer the existing data to the target. Harness DB DevOps then orchestrates the schema migration portion: it applies your Liquibase or Flyway changelogs to the target database, manages approval gates, sequences the rollout across environments, and records the deployment audit trail. The two tools are complementary: the migration service handles data transfer, and Harness handles the controlled schema deployment on the target.

### Reference <a href="#reference" id="reference"></a>

Go to [Docker Hub](https://hub.docker.com/r/plugins/drone-liquibase/tags) to view all available images and tags directly.

### Next steps <a href="#next-steps" id="next-steps"></a>

* Go to [Harness DB DevOps](https://app.harness.io/) to try it yourself.
* Go to [Contact Sales](https://www.harness.io/company/contact-sales?utm_source=harness_io\&utm_medium=cta\&utm_campaign=platform\&utm_content=main_nav) to request a demo.
