Skip to main content

Install with Helm

Datastrato Enterprise deploys from a Helm chart served alongside its images in an OCI registry. Confirm your cluster meets Requirements and have a key ready from Licensing before starting.

Quick Start

1. Authenticate to the registry. One credential covers the chart and the images.

helm registry login {registry_host} --username {username} --password {password}

2. Install.

helm upgrade --install gravitino \
oci://{registry_host}/charts/datastrato-enterprise \
--namespace gravitino --create-namespace \
--set-string license.key="{license_key}"

3. Wait for readiness.

kubectl -n gravitino rollout status deployment/gravitino

Inspecting the Chart

Show the default values before overriding them.

helm show values oci://{registry_host}/charts/datastrato-enterprise

Pull the chart without installing, to review or to relocate into an internal registry.

helm pull oci://{registry_host}/charts/datastrato-enterprise --version {version}

Configuring

Use --set for one or two values and a values file for anything more, since a values file is reviewable and belongs in version control while a long command line does not.

helm upgrade --install gravitino \
oci://{registry_host}/charts/datastrato-enterprise \
--namespace gravitino --create-namespace \
-f values.yaml

Gravitino server settings in gravitino.conf are set through the chart values rather than by mounting a configuration file. See Server configuration for what the settings mean.

Storage Backend

The chart can deploy a MySQL instance for the entity store. That is appropriate for evaluation and not for production, where a database you operate and back up is the right choice.

--set mysql.enabled=true

To use an existing database, initialize the schema first, then point the chart at it.

mysql -h {host} -P 3306 -u {user} -p {password} {database} < schema-{version}-mysql.sql
entity:
jdbcUrl: jdbc:mysql://{host}:3306/{database}
jdbcDriver: com.mysql.cj.jdbc.Driver
jdbcUser: {user}
jdbcPassword: {password}

Put the credentials in a secret rather than in the values file for anything beyond a trial.

If your cluster has no dynamic provisioning, set the storage class to - and create the PersistentVolume yourself.

--set mysql.enabled=true --set global.defaultStorageClass="-"

Health Probes

Point the probes at the health endpoints rather than at the root path, so that a pod whose entity store has failed is taken out of rotation instead of continuing to receive traffic.

livenessProbe:
httpGet:
path: /api/health/live
port: http
initialDelaySeconds: 20
timeoutSeconds: 5

readinessProbe:
httpGet:
path: /api/health/ready
port: http
initialDelaySeconds: 20
timeoutSeconds: 5

Keep liveness on the liveness endpoint. Pointing it at a check that includes the entity store means a database outage restarts every pod, removing the servers that would otherwise recover when the store returns. See Health and readiness.

Object Storage Credentials

Catalogs backed by cloud storage need credentials available to the pod. For Google Cloud Storage, mount the service account key and point the environment variable at it.

kubectl -n gravitino create secret generic gcs-key \
--from-file=key.json={path_to_service_account_key}
env:
- name: GOOGLE_APPLICATION_CREDENTIALS
value: /etc/gcs/key.json

extraVolumes:
- name: gcs-key
secret:
secretName: gcs-key

extraVolumeMounts:
- name: gcs-key
mountPath: /etc/gcs
readOnly: true

S3 and Azure credentials are supplied as catalog properties rather than as pod configuration. See the individual catalog pages under Connect sources.

Air-Gapped Installation

Relocate the chart and the images into an internal registry together, so their versions stay in step.

helm pull oci://{registry_host}/charts/datastrato-enterprise --version {version}
helm push datastrato-enterprise-{version}.tgz oci://{internal_registry}/charts

Then install from the internal registry with global.imageRegistry pointed at the same place.

Upgrading

See Upgrades. Entity store schema changes between releases are applied separately from the Helm upgrade, so read that page before changing the chart version.

Uninstalling

helm uninstall gravitino -n gravitino

The entity store is not removed if it is external. Neither is anything in your connected sources, since Gravitino never held that data.