This section outlines the necessary steps to run Dittofeed with Kubernetes. Dittofeed provides a helm chart to make it easy to deploy Dittofeed to a Kubernetes cluster.

Helm Chart

View the dittofeed helm chart dittofeed/dittofeed/helm-charts/dittofeed: here

# Clone the Dittofeed repository
git clone [email protected]:dittofeed/dittofeed.git

Sample Values

The following example values deploy dittofeed with all of its relevant dependencies built-in, including postgres, clickhouse, temporal.

helm upgrade --install demo ./dittofeed/helm-charts/dittofeed \
  -f dittofeed-values.yaml \
  --atomic --wait
dittofeed-values.yaml
temporal:
  enabled: true
  env:
    - name: POSTGRES_SEEDS
      value: "demo-postgresql.default.svc.cluster.local"
    - name: POSTGRES_USER
      value: "postgres"
    - name: POSTGRES_PWD
      value: "password"

postgresql:
  enabled: true

clickhouse:
  enabled: true

env:
  # assuming your are in the default namespace
  - name: DATABASE_HOST
    value: "demo-postgresql.default.svc.cluster.local"
  - name: DATABASE_USER
    value: "postgres"
  - name: DATABASE_PASSWORD
    value: "password"
  - name: CLICKHOUSE_HOST
    value: "http://demo-clickhouse.default.svc.cluster.local:8123"
  - name: CLICKHOUSE_USER
    value: "dittofeed"
  - name: CLICKHOUSE_PASSWORD
    value: "password"
  - name: TEMPORAL_ADDRESS
    value: "demo-dittofeed-temporal:80"

Parameters

KeyDefault ValueDescription
workspaceNameDittofeedThe name of the workspace.
replicaCount1Number of replicas.
maxOldSpaceSize412Maximum old space size for the JVM.
image.repositorydittofeed/dittofeed-liteDocker image repository.
image.pullPolicyIfNotPresentImage pull policy.
image.tag""Image tag to use, defaults to the chart appVersion.
imagePullSecrets[]Secrets for image pulling.
nameOverride""Name override.
fullnameOverride""Full name override.
serviceAccount.createtrueWhether to create a service account.
serviceAccount.automounttrueAutomatically mount a ServiceAccount’s API credentials.
serviceAccount.annotations{}Annotations for the service account.
serviceAccount.name""Name of the service account to use.
podAnnotations{}Annotations for the pod.
podLabels{}Labels for the pod.
podSecurityContext{}Security context for the pod.
securityContext{}Security context for the container.
service.typeClusterIPService type.
service.port80Service port.
ingress.enabledfalseEnable ingress.
ingress.className""Ingress class name.
ingress.annotations{}Annotations for ingress.
ingress.hosts[ { host: "chart-example.local", paths: [ { path: "/", pathType: "ImplementationSpecific" } ] } ]Hosts configuration for ingress.
ingress.tls[]TLS configuration for ingress.
resources.limits.cpu1CPU limits for the container.
resources.limits.memory512MiMemory limits for the container.
resources.requests.cpu1CPU requests for the container.
resources.requests.memory512MiMemory requests for the container.
clickhouse.enabledfalseEnable ClickHouse installation.
clickhouse.shards1Number of ClickHouse shards.
clickhouse.resources.limits.memory1024MiMemory limits for ClickHouse.
clickhouse.resources.requests.memory1024MiMemory requests for ClickHouse.
clickhouse.zookeeper.enabledfalseEnable Zookeeper for ClickHouse.
clickhouse.keeper.enabledtrueEnable Keeper for ClickHouse.
clickhouse.auth.usernamedittofeedClickHouse username.
clickhouse.auth.passwordpasswordClickHouse password.
clickhouse.auth.databasedittofeedClickHouse database.
clickhouse.auth.existingSecret""Existing secret for ClickHouse password.
clickhouse.auth.existingSecretKey""Key for ClickHouse password in existing secret.
postgresql.enabledfalseEnable PostgreSQL installation.
postgresql.auth.usernamepostgresPostgreSQL username.
postgresql.auth.passwordpasswordPostgreSQL password.
postgresql.auth.databasedittofeedPostgreSQL database.
postgresql.auth.existingSecret""Existing secret for PostgreSQL password.
postgresql.auth.userPasswordKey""Key for PostgreSQL password in existing secret.
temporal.enabledfalseEnable standalone Temporal installation.
temporal.resources{}Resources for Temporal.
temporal.env[ { name: POSTGRES_SEEDS, value: "dittofeed-postgresql.default.svc.cluster.local" }, { name: POSTGRES_USER, value: "postgres" }, { name: POSTGRES_PWD, value: "password" } ]Environment variables for Temporal.
temporal.image.repositorytemporalio/auto-setupDocker image repository for Temporal.
temporal.image.tag1.23.1.0Image tag for Temporal.
temporal.image.pullPolicyIfNotPresentImage pull policy for Temporal.
env[ { name: DATABASE_HOST, value: "dittofeed-postgresql.default.svc.cluster.local" }, { name: DATABASE_USER, value: "postgres" }, { name: DATABASE_PASSWORD, value: "password" }, { name: CLICKHOUSE_HOST, value: "http://dittofeed-clickhouse.default.svc.cluster.local:8123" }, { name: CLICKHOUSE_USER, value: "dittofeed" }, { name: CLICKHOUSE_PASSWORD, value: "password" }, { name: TEMPORAL_ADDRESS, value: "demo-dittofeed-temporal:80" } ]Environment variables for the application.
autoscaling.enabledfalseEnable autoscaling.
autoscaling.minReplicas1Minimum number of replicas for autoscaling.
autoscaling.maxReplicas100Maximum number of replicas for autoscaling.
autoscaling.targetCPUUtilizationPercentage80Target CPU utilization percentage for autoscaling.
nodeSelector{}Node selector for pod scheduling.
tolerations[]Tolerations for pod scheduling.
affinity{}Affinity rules for pod scheduling.