Skip to main content

Deployment

After verifying that your recipes work with the intended data sources and sinks, you can automate metadata collection on a regular schedule.

Cron Job

The simplest deployment option. Schedule Meteor as a cron job on any Linux or macOS machine.

# Run every 6 hours
0 */6 * * * /usr/local/bin/meteor run /path/to/recipes/ >> /var/log/meteor.log 2>&1

Make sure the user running the cron job has the necessary credentials and environment variables configured. You can source them from a file:

0 */6 * * * . /etc/meteor/env && /usr/local/bin/meteor run /path/to/recipes/

Docker

Meteor publishes Docker images that can be used in any container environment.

docker run --rm \
-v /path/to/recipes:/recipes \
-e METEOR_BIGQUERY_PROJECT_ID=my-project \
raystack/meteor run /recipes/

Docker Compose

version: "3.8"
services:
meteor:
image: raystack/meteor:latest
volumes:
- ./recipes:/recipes
environment:
- METEOR_BIGQUERY_PROJECT_ID=my-project
command: ["run", "/recipes/"]

Kubernetes CronJob

For Kubernetes-native deployments, use a CronJob resource:

apiVersion: batch/v1
kind: CronJob
metadata:
name: meteor
spec:
schedule: "0 */6 * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: meteor
image: raystack/meteor:latest
command: ["meteor", "run", "/recipes/"]
volumeMounts:
- name: recipes
mountPath: /recipes
envFrom:
- secretRef:
name: meteor-secrets
volumes:
- name: recipes
configMap:
name: meteor-recipes
restartPolicy: OnFailure

Store recipes in a ConfigMap and credentials in a Secret:

kubectl create configmap meteor-recipes --from-file=recipes/
kubectl create secret generic meteor-secrets --from-env-file=.env

Helm Chart

Raystack provides a Helm chart for Meteor. Refer to the charts repository for configuration options and installation instructions.

helm repo add raystack https://raystack.github.io/charts
helm install meteor raystack/meteor -f values.yaml

Systemd Service

For Linux hosts, create a systemd timer for scheduled execution:

# /etc/systemd/system/meteor.service
[Unit]
Description=Meteor metadata collection

[Service]
Type=oneshot
ExecStart=/usr/local/bin/meteor run /etc/meteor/recipes/
EnvironmentFile=/etc/meteor/env
# /etc/systemd/system/meteor.timer
[Unit]
Description=Run Meteor every 6 hours

[Timer]
OnCalendar=*-*-* 00/6:00:00
Persistent=true

[Install]
WantedBy=timers.target

Enable with:

sudo systemctl enable --now meteor.timer