naxty.dev
← All writing

Running formae on Kubernetes with Helm

Deploying formae on Kubernetes with Helm, PostgreSQL, and optional observability.

Originally published in Platform Engineering Labs on Medium ↗.

On this page
Running formae on Kubernetes with Helm — original article illustration
Image created with ChatGPT

If you are gearing up to run formae in your Kubernetes cluster, you are in luck! We have published formae-helm — a Helm chart that makes this whole process plain sailing. Our mission is simple: to hand you a rock-solid, production-ready starting point, without throwing a curveball of operators, hefty dependencies, or demanding architectural choices your way.

Quickstart

git clone https://github.com/platform-engineering-labs/formae-helm.git
cd formae-helm

After cloning the repository, you will find all supported deployment scenarios in the examples/ directory. To try one of them, simply run:

helm install formae . -f examples/<scenario>.yaml

Running formae with PostgreSQL

For production workloads, formae should be operating with one of the production-grade database backend options the chart supports. To quickly try it with an in-cluster PostgreSQL instance, run:

helm install formae . -f examples/formae-db.yaml \
 --set postgresql.auth.password=<password>

This deploys:

  • The formae agent
  • PostgreSQL as a StatefulSet
  • Secrets and datastore wiring
  • The correct PKL configuration for the selected mode

The database setup is intentionally minimal:

  • Official postgres:15-alpine image
  • No Bitnami subchart
  • No database operator
  • No additional CRDs

If you already run PostgreSQL (RDS, Cloud SQL, shared cluster), disable the bundled database and point formae at your existing one:

helm install formae . -f examples/formae-external-db.yaml \
 --set postgresql.enabled=false \
 --set formae.datastore.postgres.host=mydb.example.com \
 --set formae.datastore.postgres.password=<password>

There’s also an Aurora Data API example for AWS serverless setups: examples/formae-aurora.yaml

Adding observability

The chart also supports a monitoring-enabled deployment.

helm install formae . -f examples/formae-db-grafana.yaml \
 --set postgresql.auth.password=<password>

This adds:

  • OpenTelemetry Collector (sidecar)
  • Prometheus metrics endpoint
  • ServiceMonitor (Prometheus Operator)
  • Grafana dashboards (auto-discovered)

Two dashboards are included:

  • Agent health and reconciliation activity
  • Per-plugin activity breakdown

The OpenTelemetry Collector runs inside the same pod as the agent. That keeps communication local and avoids introducing additional services or cross-namespace wiring.

If you already use a centralized collector, override the OTLP endpoint in your values:

formae:
 otel:
   otlp:
     endpoint: your-collector:4317

If you don’t run Prometheus and Grafana yet, the quickstart-monitoring.yaml example walks through deploying kube-prometheus-stack with the necessary configuration for dashboard discovery.

Example configurations

Here is an overview of the current example configurations included with the GitHub repository:

  • formae-db.yaml: Agent + in-cluster PostgreSQL
  • formae-external-db.yaml: Agent + external PostgreSQL
  • formae-db-grafana.yaml: Agent + PostgreSQL + OTel + Grafana
  • formae-external-db-grafana.yaml: Agent + external PostgreSQL + OTel + Grafana
  • formae-aurora.yaml: Agent + Aurora Data API
  • quickstart-monitoring.yaml: Monitoring stack walkthrough

Next steps

If you want to run formae in your k8s cluster, this chart gives you a straightforward starting point without locking you into infrastructure choices. See full documentation for what you need to do next.

Here are a few more links:

Keep exploring

Dvc: Develop Machine Learning Experiments In A Structured And Scaled Way

10 results↑ ↓ to explore · Enter to open
Project notes

Open project page