---
name: devsecops-devsecops-custom-deployment
title: Deploying your application on a target
description: 'You can deploy your application on one of three targets: Push-based deployment, Pull-based deployment, or a custom target.'
last-updated: 2025-07-29
---

> ## Documentation Index
> The table of contents for this documentation set is at https://cloud.ibm.com/docs/devsecops?format=markdown
> The index for all IBM Cloud docs is at: https://cloud.ibm.com/docs/llms.txt
> Use these files to discover more information as needed.

# Deploying your application on a target
{: #custom-deployment-target}

You can deploy your application on one of three targets: Push-based deployment, Pull-based deployment, or a custom target.
{: shortdesc}

## Deploying using Push-based deployment
{: #custom-deployment-push-based-deployment}

You can select `Push based deployment` as the deployment target when you want to deploy your application on Red Hat&reg; OpenShift&reg; on IBM Cloud. [DevSecOps](#x9892260){: term} provides scripts to deploy your application on the cluster. You might need to customize these scripts according to your application and cluster requirements.

These scripts are located in the deployment repo and are specified in the `pipeline-config.yml` file.

```bash
deploy:
  image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.12@sha256:ff4053b0bca784d6d105fee1d008cfb20db206011453071e86b69ca3fde706a4
  script: |
    #!/usr/bin/env bash

    if [[ "$PIPELINE_DEBUG" == 1 ]]; then
      trap env EXIT
      env
      set -x
    fi

    source scripts/deploy_setup.sh
    source scripts/deploy.sh
    export DEPLOY_EXIT=$?
    source scripts/doi-publish-deploy.sh
```
{: codeblock}

## Deploying using Pull-based deployment
{: #custom-deployment-target-pull-based-deployment}

DevSecOps provides an option to deploy your application using Pull-based deployment using IBM Cloud Satellite Config.

[IBM Cloud Satellite](https://www.ibm.com/products/satellite){: external} is an extension of the IBM Cloud Public that can run inside the customer's data center or out at the edge. Each IBM Cloud Satellite location is connected by using IBM Cloud Satellite Link, which provides the connection to the IBM Cloud&reg; control plane. It provides audit, packet capture, and visibility to the security team, while a configuration utility provides a global view of applications and services. IBM Cloud Satellite Link provides a simple way to manage the connection between IBM Cloud and the Satellite location with visibility into all the traffic that goes back and forth with control of the endpoints on both sides of the link.

Users can have groups of Red Hat&reg; OpenShift&reg; clusters in a [Satellite cluster group](https://cloud.ibm.com/docs/satellite?topic=satellite-setup-clusters-satconfig&format=markdown). You can use [Satellite Config](https://cloud.ibm.com/docs/satellite?topic=satellite-cluster-config&format=markdown) to deploy the application into a [Satellite cluster group](https://cloud.ibm.com/docs/satellite?topic=satellite-setup-clusters-satconfig&format=markdown).

Follow a two-step process to enable your Red Hat&reg; OpenShift&reg; clusters to leverage Satellite Config to perform simultaneous deployments.

1. [Create a cluster group](https://cloud.ibm.com/docs/satellite?topic=satellite-setup-clusters-satconfig-groups&format=markdown), which is a logical grouping of clusters that run on a Satellite location.

2. [Attach a cluster to a cluster group](https://cloud.ibm.com/docs/satellite?topic=satellite-setup-clusters-satconfig&format=markdown#auto-setup-clusters-satconfig), which grants Satellite Config access to manage the resources within the cluster.

As an advanced configuration, you can also deploy the application to the compute infrastructure in your on-premises data center or other cloud providers by using [IBM Cloud Satellite](https://cloud.ibm.com/docs/satellite?topic=satellite-getting-started&format=markdown).

1. [Create a Satellite location](https://cloud.ibm.com/satellite/locations/create){: external} for the compute infrastructure in your on-premises data center or other cloud providers by using predefined templates.

2. [Deploy a Red Hat&reg; OpenShift&reg; cluster](https://cloud.ibm.com/containers/cluster-management/catalog/create?platformType=openshift){: external} to the Satellite location by using setup.

3. [Create a cluster group](https://cloud.ibm.com/docs/satellite?topic=satellite-setup-clusters-satconfig-groups&format=markdown), which is a logical grouping of clusters that run on a Satellite location.

4. [Attach a cluster to a cluster group](https://cloud.ibm.com/docs/satellite?topic=satellite-setup-clusters-satconfig&format=markdown#auto-setup-clusters-satconfig), which grants Satellite Config access to manage the resources within the cluster.

### Prerequisites
{: #custom-deployment-target-prereqs}

* This toolchain uses [Satellite Config](https://cloud.ibm.com/docs/satellite?topic=satellite-cluster-config&format=markdown) to deploy an application to a group of clusters.
* This toolchain assumes that you have a [Satellite cluster group](https://cloud.ibm.com/docs/satellite?topic=satellite-setup-clusters-satconfig&format=markdown) with the required clusters.
* This toolchain supports a Satellite cluster group that contains only one type of cluster (Red Hat&reg; OpenShift&reg;).

### Deployment
{: #custom-deployment-target-scripts}

DevSecOps provides out of the box scripts to deploy your application on the group of clusters. You might need to customize these scripts according to your application and cluster group requirements.

These scripts are located in the deployment repository and are specified in the `pipeline-config.yml` file.

```bash
deploy:
  image: icr.io/continuous-delivery/pipeline/pipeline-base-image:2.12@sha256:ff4053b0bca784d6d105fee1d008cfb20db206011453071e86b69ca3fde706a4
  script: |
    #!/usr/bin/env bash

    if [[ "$PIPELINE_DEBUG" == 1 ]]; then
      trap env EXIT
      env
      set -x
    fi

    source scripts/deploy_setup.sh
    source scripts/deploy.sh
    export DEPLOY_EXIT=$?
    source scripts/doi-publish-deploy.sh
```
{: codeblock}

## Deploying to a custom target
{: #custom-deployment-target-custom}

Deploy to a custom target if you want to:

* Deploy your application on your own choice of infrastructure, such as Virtual Server Instances (VSI).
* Perform custom tasks, such as updating some configurations in a Red Hat&reg; OpenShift&reg; cluster.

In these cases, select "custom" as a deployment target.

### Performing a custom deployment
{: #custom-deployment-target-how}

* DevSecOps templates are fully customizable. You can provide your own stages and steps in the `pipeline-config.yml` file of the deployment repository.
* You can provide your custom scripts in the `setup`, `deploy`, and `acceptance-test` stages in the `pipeline-config.yml` file.
* These scripts are run during the continuous deployment (CD) pipeline run.