Skip to the content.

Getting started

We provide scripts to build ForestFlow for use in local, or custom distributed clusters, or specifically for Kubernetes. The result of a build is a JAR with all dependencies included. We also provide Buildah scripts for building OCI-compatible images that you can run using container engines such as podman and docker etc..

Build requirements:

Container (OCI) image build requirements:

Building ForestFlow

Have a look at Build Requirements for essential build dependencies.

Create JAR without Kubernetes dependencies
./../buildah/.build-local.sh
Create a JAR with Kubernetes dependencies

This will include Kubernetes-specific dependencies for cluster discovery

./../buildah/.build-kubernetes.sh

There is no harm in using the Kubernetes-specific build locally however note that your JAR file will have more dependencies and is subsequently larger in size.

ForestFlow Configuration

Controlling what ForestFlow does and how it looks for nodes to join as a cluster, or simply come up with a single local instance is all based on configuration properties defined in application.conf

ForestFlow uses Lightbend Config, formerly known as Typesafe Config, for all its configuration properties. The configuration defined in the application.conf controls how ForestFlow clustering works (custom/local vs K8s), where it persists data, and where (Kafka cluster) predictions are logged.

The configuration has 3 main sections (defaults, local, and K8s). ForestFlow will always load configuration values from the defaults section. ForestFlow will conditionally load the local configs or K8s based on the value of the environment variable APPLICATION_ENVIRONMENT_CONFIG

Example: APPLICATION_ENVIRONMENT_CONFIG=local will load local configs.

Description of configuration sections:

You have a lot of control over how you want to run ForestFlow but we provide a few defaults:

Creating an OCI-compliant Image

You can build and run ForestFlow in a container (docker, podman) and we provide scripts to help with this process. See Image Build Requirements for details on requirements for building a ForestFlow image. We may supply a standard image in a container registry like docker.io at some point in the future.

ForestFlow comes bundled with a Buildah script that assumes a successful build is available in the target directory of the serving module. Using either the build-local.sh or build-kubernetes.sh scripts will provide just that.

# Create a "local" build
./../buildah/build-local.sh

# Compile into an OCI-compliant image using Buildah
./../buildah/buildah.sh

# Use podman (or docker) to run ForestFlow in a container locally
podman_container=$(podman run -d \
-e "APPLICATION_ENVIRONMENT_CONFIG=local" \
--net=host \
--name=ff-serving localhost/ai.forestflow-serving:0.2.3)

podman logs -f ${podman_container}

See https://github.com/ForestFlow/ForestFlow/tree/master/buildah/run-local-container.sh for another example of using Podman (similar to docker) and supplying some overrides for Persistence and Kafka logging.