Development¶
This doc explains how to set up a development environment for Numaflow.
Install required tools¶
go1.24+.git.kubectl.protoc3.19 for compiling protocol buffers.pandoc3.2.1 for generating API markdown.Node.js®for running the UI.yarn.- A local Kubernetes cluster for development usage, pick either one of
k3d,kind, orminikube.
Example: Create a local Kubernetes cluster with kind¶
# Install kind on macOS
brew install kind
# Create a cluster with default name kind
kind create cluster
# Get kubeconfig for the cluster
kind export kubeconfig
Metrics Server¶
Please install the metrics server if your local Kubernetes cluster does not bring it by default (e.g., Kind). Without the metrics-server, we will not be able to see the pods in the UI.
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
kubectl patch -n kube-system deployment metrics-server --type=json -p '[{"op":"add","path":"/spec/template/spec/containers/0/args/-","value":"--kubelet-insecure-tls"}]'
Useful Commands¶
-
make startBuild the source code, image, and install the Numaflow controller in thenumaflow-systemnamespace. -
make buildBinaries are placed in./dist. -
make manifestsRegenerate all the manifests after making any base manifest changes. This is also covered bymake codegen. -
make codegenRun after making changes to./pkg/api/. -
make testRun unit tests. -
make test-*Run one e2e test suite. e.g.make test-kafka-e2eto run the kafka e2e suite. -
make Test*Run one e2e test case. e.g.make TestKafkaSourceSinkto run theTestKafkaSourceSinkcase in the kafka e2e suite. -
make imageBuild container image, and import it tok3d,kind, orminikubecluster if correspondingKUBECONFIGis sourced. -
make docsConvert the docs to GitHub pages, check if there's any error. -
make docs-serveStart an HTTP server on your local to host the docs generated Github pages.