Google Cloud Marketplace (Click to Deploy)
This guide walks you through deploying QMigrator on Google Cloud using Marketplace and command-line tools.
Marketplace Deployment Overview
Google Cloud Marketplace offers a streamlined way to launch applications on Kubernetes.
To deploy QMigrator, visit the Marketplace page and follow the prompts to install on your GKE cluster.
Manual Deployment Using Command-Line
Required Tools
Ensure your environment has the following utilities installed.
If you use Google Cloud Shell, these are pre-installed:
Set up Docker authentication for Google Container Registry:
Provision a GKE Cluster
Set environment variables for your cluster:
Create the cluster with the necessary add-ons:
gcloud container clusters create "$CLUSTER_NAME" \
--location "$REGION" \
--addons GcsFuseCsiDriver \
--workload-pool "$PROJECT_ID.svc.id.goog"
Configure kubectl to use the new cluster:
Clone the QMigrator Repository
Enable Application CRD
Register the Application resource definition in your cluster:
kubectl apply -f "https://raw.githubusercontent.com/GoogleCloudPlatform/marketplace-k8s-app-tools/master/crd/app-crd.yaml"
Configure Deployment Variables
Choose an instance name and
namespace
for the app. In most cases, you can use the default namespace.
Tip
Get information of QMigrator from License & Project and use them to set variables
Set project-name and project-id :
Set user password for postgres, redis and airflow:
export POSTGRES_PASSWORD="pg-password"
export AIRFLOW_PASSWORD="airflow-password"
export REDIS_PASSWORD="redis-password"
Create Storage bucket
Note
Create bucket and assign the readwrite permission on workload identity more info
Set bucket name:
Set up the image tag:
Prepare Container Images
Set image references for the deployment:
export IMAGE_QUI=us-docker.pkg.dev/quadranttechnologies-public/qmig-orcl-pg/qui
export IMAGE_QAPI=us-docker.pkg.dev/quadranttechnologies-public/qmig-orcl-pg/qapi
export IMAGE_PG=us-docker.pkg.dev/quadranttechnologies-public/qmig-orcl-pg/postgres
export IMAGE_QDB=us-docker.pkg.dev/quadranttechnologies-public/qmig-orcl-pg/qpdb
export IMAGE_BUSYBOX=us-docker.pkg.dev/quadranttechnologies-public/qmig-orcl-pg/busybox
export IMAGE_KEY=us-docker.pkg.dev/quadranttechnologies-public/qmig-orcl-pg/eqalpha/keydb
export IMAGE_QASMT=us-docker.pkg.dev/quadranttechnologies-public/qmig-orcl-pg/qasmt
export IMAGE_QCONV=us-docker.pkg.dev/quadranttechnologies-public/qmig-orcl-pg/qconv
export IMAGE_QDMGR=us-docker.pkg.dev/quadranttechnologies-public/qmig-orcl-pg/qdmgr
export IMAGE_QAIR=us-docker.pkg.dev/quadranttechnologies-public/qmig-orcl-pg/qair
Generate and Apply the Manifest
Render the Helm chart to a manifest file:
helm template "$APP_INSTANCE_NAME" chart/qmigrator \
--namespace "$NAMESPACE" \
--set images.app.repository="$IMAGE_QUI" \
--set images.app.tag="$QMIGRATOR_VERSION" \
--set images.eng.repository="$IMAGE_QAPI" \
--set images.eng.tag="$QMIGRATOR_VERSION" \
--set images.db.repository="$IMAGE_PG" \
--set images.db.tag="$QMIGRATOR_VERSION" \
--set images.dbJob.repository="$IMAGE_QDB" \
--set images.dbJob.tag="$QMIGRATOR_VERSION" \
--set images.waitForProjectDB.repository="$IMAGE_BUSYBOX" \
--set images.waitForProjectDB.tag="$QMIGRATOR_VERSION" \
--set images.msg.repository="$IMAGE_KEY" \
--set images.msg.tag="$QMIGRATOR_VERSION" \
--set images.asses.repository="$IMAGE_QASMT" \
--set images.asses.tag="$QMIGRATOR_VERSION" \
--set images.convs.repository="$IMAGE_QCONV" \
--set images.convs.tag="$QMIGRATOR_VERSION" \
--set images.migrt.repository="$IMAGE_QDMGR" \
--set images.migrt.tag="$QMIGRATOR_VERSION" \
--set images.airflow.repository="$IMAGE_QAIR" \
--set images.airflow.tag="$QMIGRATOR_VERSION" \
--set secret.data.PROJECT_NAME="${PROJECT_NAME}" \
--set secret.data.PROJECT_ID="${PROJECT_ID}" \
--set secret.data.POSTGRES_PASSWORD="${POSTGRES_PASSWORD}" \
--set airflow.secret.data.airflow_password="${AIRFLOW_PASSWORD}" \
--set secret.data.REDIS_PASSWORD="${REDIS_PASSWORD}" \
--set global.gcs.bucket="$BUCKET" \
> "${APP_INSTANCE_NAME}_manifest.yaml"
Apply the manifest to your cluster:
Expose QMigrator
To make QMigrator accessible externally, follow the Gateway Controller for gateway setup.
Uninstalling QMigrator
To remove the deployment, delete the resources using your manifest:
Remove persistent volumes and claims:
for pv in $(kubectl get pvc --namespace $NAMESPACE \
--selector app.kubernetes.io/name=$APP_INSTANCE_NAME \
--output jsonpath='{.items[*].spec.volumeName}'); do
kubectl delete pv/$pv --namespace $NAMESPACE
done
kubectl delete persistentvolumeclaims \
--namespace $NAMESPACE \
--selector app.kubernetes.io/name=$APP_INSTANCE_NAME
Delete the GKE cluster if no longer needed: