Upgrading from v0.20.0 to v0.21.0 is more involved than other upgrades and involves several steps.

  1. Upgrading to v0.20.0 prior to upgrading to v0.21.0
  2. Running the postgres migrations
  3. Creating new group tables and materialized views in ClickHouse

This guide will walk you through the process of upgrading your Dittofeed instance.

Upgrading to v0.20.0

In this release we migrated from Prisma to Drizzle as our ORM. To upgrade to v0.21.0, you’ll need to make sure you’ve upgraded Dittofeed to v0.20.0 and run its postgres migrations, prior to upgrading to v0.21.0.

See the Upgrading from v0.19.0 to v0.20.0 guide for more information on upgrading to v0.20.0.

Upgrade Dittofeed in Docker Compose

Step 1: Setting Up Your docker-compose.lite.yaml File

First, add the environment variable BOOTSTRAP: "false" to your docker-compose.lite.yaml file, if it isn’t set already. This will prevent your lite instance from running bootstrap operations when it restarts.

Next, make sure you have an admin-cli instance specified in our docker-compose.lite.yaml file. We’ll be using this service to run our migrations.

Your docker-compose.lite.yaml file should look something like this:

...
services:
  lite:
    image: dittofeed/dittofeed-lite:${IMAGE_TAG:-v0.20.0}
    restart: always
    ports:
      - "3000:3000"
    depends_on:
      - postgres
      - temporal
      - clickhouse-server
    environment:
      <<: *backend-app-env
      # uncomment while upgrading dittofeed
      BOOTSTRAP: "false"
    env_file:
      - .env
    networks:
      - dittofeed-network-lite
  # useful for upgrading dittofeed
  admin-cli:
    image: dittofeed/dittofeed-admin-cli:${IMAGE_TAG:-v0.21.0}
    entrypoint: []
    profiles: ["admin-cli"]
    command: tail -f /dev/null
    tty: true
    depends_on:
      - postgres
      - temporal
      - clickhouse-server
    environment:
      <<: *backend-app-env
    env_file:
      - .env
    networks:
      - dittofeed-network-lite
...

Step 2: Start the admin-cli Service

Next, run the following command to start your admin-cli service:

docker compose --profile admin-cli -f docker-compose.lite.yaml up admin-cli -d

Step 3: Run the Upgrade Script

Run the upgrade script to run postgres migrations and create the new clickhouse tables and views:

./admin.sh upgrade-0-21-0-pre

Step 4: Upgrade Your docker-compose.lite.yaml File

Upgrade the version in your docker-compose.lite.yaml file to v0.21.0:

...
services:
  lite:
    image: dittofeed/dittofeed-lite:${IMAGE_TAG:-v0.21.0}
...

Now restart your lite instance:

docker compose -f docker-compose.lite.yaml up lite -d --force-recreate

Step 5: Stop the admin-cli Service

Finally, stop the admin-cli service:

docker compose --profile admin-cli -f docker-compose.lite.yaml stop admin-cli

Upgrade Dittofeed in Kubernetes

Step 1: Setting Up Your dittofeed values.yaml File

First, add the environment variable BOOTSTRAP: "false" to your values.yaml file for the dittofeed helm chart, if it isn’t set already. This will prevent your lite instance from running bootstrap operations when it restarts.

values.yaml
env:
  - name: BOOTSTRAP
    value: "false"

Step 2: Install the dittofeed-admin-cli Chart

Next, run the following command to install the dittofeed-admin-cli chart:

helm upgrade --install dittofeed-admin-cli ./dittofeed/helm-charts/dittofeed-admin-cli

Make sure that the dittofeed-admin-cli pod is running the version of the dittofeed-admin-cli chart that you’re upgrading to.

chart.yaml
appVersion: "v0.21.0"

Or set the tag in your values.yaml file to v0.21.0:

values.yaml
image:
  tag: v0.21.0

Step 3: Run the Migrations

Run Dittofeed’s database migrations before deploying the new version of Dittofeed:

Exec into the dittofeed-admin-cli pod:

kubectl exec -it deployment/dittofeed-admin-cli -- /bin/bash

Run the migrations:

./admin.sh upgrade-0-21-0-pre

Step 4: Upgrade the Dittofeed Chart

Update the tag in your values.yaml file to v0.21.0:

values.yaml
image:
  tag: v0.21.0

Upgrade the dittofeed chart:

helm upgrade --install dittofeed ./dittofeed/helm-charts/dittofeed

Step 5: Uninstall the dittofeed-admin-cli Helm Chart

Finally, uninstall the dittofeed-admin-cli deployment:

helm uninstall dittofeed-admin-cli