Promote Deployment
const url = 'https://api.mengi.cloud/deployments/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/promote';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"target_cluster_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","new_name":"example","delete_source":false,"overrides":{"name":"example","config":{},"cpu_request":1,"memory_request_mb":1,"replicas":1,"container_port":1,"storage_size_gb":1,"environment_variables":[{"name":"example","value":"example","secret_ref":"example"}],"docker_image":"example","volumes":[{"path":"example","sizeGb":10,"purpose":"example"}],"helm_chart_version":"example","custom_values_yaml":"example","image_update_strategy":"example","image_update_constraint":"example","image_allow_tags":"example","image_ignore_tags":"example","custom_domain":"example","failover_health_route":true,"health_checks":{"liveness":{"enabled":true,"type":"http","path":"example","initial_delay_seconds":1,"period_seconds":1,"timeout_seconds":1,"failure_threshold":1},"readiness":{"enabled":true,"type":"http","path":"example","initial_delay_seconds":1,"period_seconds":1,"timeout_seconds":1,"failure_threshold":1},"startup":{"enabled":true,"type":"http","path":"example","initial_delay_seconds":1,"period_seconds":1,"timeout_seconds":1,"failure_threshold":1}},"additional_ports":[{"port":1,"name":"example","protocol":"TCP"}],"backups":{"enabled":false,"schedule":"hourly","retention_days":7},"command":["example"],"args":["example"]}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.mengi.cloud/deployments/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/promote \ --header 'Content-Type: application/json' \ --data '{ "target_cluster_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "new_name": "example", "delete_source": false, "overrides": { "name": "example", "config": {}, "cpu_request": 1, "memory_request_mb": 1, "replicas": 1, "container_port": 1, "storage_size_gb": 1, "environment_variables": [ { "name": "example", "value": "example", "secret_ref": "example" } ], "docker_image": "example", "volumes": [ { "path": "example", "sizeGb": 10, "purpose": "example" } ], "helm_chart_version": "example", "custom_values_yaml": "example", "image_update_strategy": "example", "image_update_constraint": "example", "image_allow_tags": "example", "image_ignore_tags": "example", "custom_domain": "example", "failover_health_route": true, "health_checks": { "liveness": { "enabled": true, "type": "http", "path": "example", "initial_delay_seconds": 1, "period_seconds": 1, "timeout_seconds": 1, "failure_threshold": 1 }, "readiness": { "enabled": true, "type": "http", "path": "example", "initial_delay_seconds": 1, "period_seconds": 1, "timeout_seconds": 1, "failure_threshold": 1 }, "startup": { "enabled": true, "type": "http", "path": "example", "initial_delay_seconds": 1, "period_seconds": 1, "timeout_seconds": 1, "failure_threshold": 1 } }, "additional_ports": [ { "port": 1, "name": "example", "protocol": "TCP" } ], "backups": { "enabled": false, "schedule": "hourly", "retention_days": 7 }, "command": [ "example" ], "args": [ "example" ] } }'Promote/migrate a deployment to another cluster.
This copies the deployment configuration to a new cluster without migrating any state or persistent data. The new deployment will start fresh on the target cluster.
The promotion is performed asynchronously by the worker. The new deployment is created with PROMOTING status and will transition to RUNNING when complete.
Use cases:
- Shared vCluster → Dedicated cluster (scaling up)
- Dedicated cluster → Dedicated cluster (region/provider change)
- Dedicated cluster → Shared vCluster (scaling down for cost savings)
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”Request to promote/migrate a deployment to another cluster.
object
object
Volume configuration for persistent storage.
Container health check configuration (stored in the deployment config).
On update, an empty object clears any overrides and restores automatic detection.
object
One container health check (liveness or readiness probe).
All fields except enabled are optional: an unset type keeps the
auto-detected HTTP/TCP choice, an unset path keeps the detected
endpoint, and unset timings keep the platform defaults.
One container health check (liveness or readiness probe).
All fields except enabled are optional: an unset type keeps the
auto-detected HTTP/TCP choice, an unset path keeps the detected
endpoint, and unset timings keep the platform defaults.
One container health check (liveness or readiness probe).
All fields except enabled are optional: an unset type keeps the
auto-detected HTTP/TCP choice, an unset path keeps the detected
endpoint, and unset timings keep the platform defaults.
An extra container port, exposed on the pod and the deployment’s in-cluster Service (the ingress keeps routing to the main container port).
name must be a valid Kubernetes port name (lowercase alphanumerics and
‘-’, at most 15 chars, at least one letter); it defaults to port-protocol means TCP.
Scheduled backup configuration (stored in the deployment config).
Backups capture the deployment’s namespace: workload configuration, in-namespace secrets, and all persistent volume data. Managed databases are excluded — they have their own backup mechanism. Requires a dedicated cluster and the “backups” feature flag.
object
Responses
Section titled “Responses”Successful Response
Response after promoting a deployment.
object
Examplegenerated
{ "source_deployment_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "new_deployment_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "target_cluster_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "source_deleted": true, "message": "example"}Validation Error
object
object
Examplegenerated
{ "detail": [ { "loc": [ "example" ], "msg": "example", "type": "example" } ]}