Start, stop and restart
Datastrato Enterprise runs as a set of Kubernetes workloads installed by one Helm release. There is
no service to start or stop: you stop a workload by scaling it to zero replicas and start it by
scaling it back up. The commands on this page assume the shell variables from
Install with Helm (RELEASE, NAMESPACE).
What is running
| Workload | Kind | What it is |
|---|---|---|
{release}-gravitino | Deployment | The server, with the Iceberg REST, Lance REST and SCIM services |
{release}-ui | Deployment | The Enterprise UI |
{release}-metrics | Deployment | The dashboard metrics service |
{release}-mcp | Deployment | The MCP server |
{release}-marquez, {release}-marquez-web | Deployment | The lineage service and its web view |
{release}-gravitino-postgresql | StatefulSet | The in-cluster metadata database; {release}-gravitino-mysql with MySQL |
opensearch-cluster-master | StatefulSet | The search index |
Components turned off in the values file are not deployed. When the release name contains
gravitino, the chart drops the extra -gravitino from the names.
Check status
kubectl -n "$NAMESPACE" get deploy,statefulset,pods
Every pod should be Running with all containers ready. The server's readiness also covers its
database; see Health and readiness. For a pod that is not ready, its
events and log say why:
kubectl -n "$NAMESPACE" describe pod {pod_name}
kubectl -n "$NAMESPACE" logs {pod_name} --all-containers --tail 100
Restart a component
kubectl -n "$NAMESPACE" rollout restart "deploy/$RELEASE-gravitino"
kubectl -n "$NAMESPACE" rollout status "deploy/$RELEASE-gravitino"
Use the same commands with another Deployment's name to restart it. What a restart interrupts:
- The server. Requests fail until the new pod is ready. With the default logs volume, which is
ReadWriteOnce, the old pod stops before the new one starts, so there is a short outage. Running jobs are lost. - The UI. Every user is signed out.
- The others. Their own function pauses; the server keeps serving.
A change to the values file does not need a restart. Running the install command again applies it, and the chart restarts the pods whose configuration changed.
Stop everything
Stop the components that use the databases first, then the databases:
kubectl -n "$NAMESPACE" scale deploy \
"$RELEASE-ui" "$RELEASE-mcp" "$RELEASE-metrics" "$RELEASE-marquez" "$RELEASE-marquez-web" \
"$RELEASE-gravitino" --replicas=0
kubectl -n "$NAMESPACE" scale statefulset \
"$RELEASE-gravitino-postgresql" opensearch-cluster-master --replicas=0
With the in-cluster MySQL, stop $RELEASE-gravitino-mysql instead of the PostgreSQL StatefulSet.
Stopping keeps everything on the volumes: the metadata, lineage history, search index and logs. It does not remove the release; for that, see Uninstall.
Start everything
Run the install command from Install with Helm again, with the same values and license. It sets every workload back to the replica count in the values, starting the databases before the server, which waits for them.
Scaling the workloads back up one by one also works, in the reverse order of stopping them. The install command is simpler and leaves nothing at the wrong count.