Skip to main content

A workflow engine based on Kopf

Project description

Fastflow

Code style: black

Deploy to Kubernetes with helm chart

kubectl create ns fastflow
helm -n fastflow upgrade --install fastflow chart

To install in more namespaces, create the namespace and run the helm command again, this time with the --skip-crds flag.

kubectl create ns fastflow-dev
helm -n fastflow-dev upgrade --install fastflow chart --skip-crds

Run examples

Apply examples

kubectl -n fastflow create -f examples/01-helloworld/workflow.yaml
kubectl -n fastflow create -f examples/02-digraph/workflow.yaml

Inspect results

kubectl -n fastflow get workflows
kubectl -n fastflow get tasks -l workflow=helloworld

Developer setup

For developing the fastflow project

Generate CRDS

python3 generate_crds.py

Create CRDS

Can also be installed by applying the helm chart

kubectl create -f chart/crds/kopfpeering-crd.yaml
find chart/crds/generated -name *.yaml -exec kubectl create -f '{}' \;

Delete CRDS

find chart/crds/generated -name *.yaml -exec kubectl delete -f '{}' \;

Virtual environment

python3 -m venv ~/venvs/fastflow
. ~/venvs/fastflow/bin/activate
python3 -m pip install --upgrade pip
python3 -m pip install -e .

Run from outside cluster

Will use kubectl config for cluster access. Greate for development, and can run with debugger attached.

Prepare namespace

kubectl create ns fastflow-dev
kubectl -n fastflow-dev apply -f - << EOYML
apiVersion: kopf.dev/v1
kind: KopfPeering
metadata:
  name: default
EOYML

Run as module (useful for debugger)

python3 -m fastflow \
--namespace fastflow-dev \
--dev

Run from cli

fastflow --namespace fastflow-dev --dev

Run Tests

Install test-requirements

python3 -m pip install -e . -r test-requirements.txt

Prepare namespace

kubectl create ns fastflow-test
kubectl -n fastflow-test apply -f test/kopf-test-peering.yaml

Run the tests as module

python3 -m pytest --color=yes

Run the tests from cli

pytest --color=yes

Building whl package and Docker image

Cleanup old packages

rm -Rf dist

Build package

python3 -m pip install build
python3 -m build

Build Docker image using minikube

rm -Rf dist && python3 -m build
eval $(minikube -p minikube docker-env)
DOCKER_BUILDKIT=1 docker build -t fastflow .

Use helm to run the image in Kubernetes, by specifying the image tag we just created

helm -n fastflow-dev upgrade --install --set imageOverride=fastflow fastflow chart

Example using custom Task implementations

The Operator needs to be able to load the custom code. Here is an example using the examples/03-farmlife example workflow. This workflow uses custom tasks implemented in examples/03-farmlife/tasks-impl/farmlife.py.

Run the operator locally

Run the operator so it can load the custom code

fastflow --dev --namespace fastflow-dev examples/03-farmlife/tasks-impl/farmlife.py

Apply the example workflow

kubectl -n fastflow-dev create -f examples/03-farmlife/workflow.yaml

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_fastflow-0.8.1.tar.gz (34.0 kB view details)

Uploaded Source

Built Distribution

python_fastflow-0.8.1-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

Details for the file python_fastflow-0.8.1.tar.gz.

File metadata

  • Download URL: python_fastflow-0.8.1.tar.gz
  • Upload date:
  • Size: 34.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for python_fastflow-0.8.1.tar.gz
Algorithm Hash digest
SHA256 3b943fe6478af703e2057cefe6442918f0eb1c9288f1d695ff7c45c50464ee71
MD5 b05119d9ac5158f7b256b845fe9fd8cf
BLAKE2b-256 f01bb77e86111d0945750cf20864cfdde942797b08aafd76ffafee6dbc9f028c

See more details on using hashes here.

File details

Details for the file python_fastflow-0.8.1-py3-none-any.whl.

File metadata

File hashes

Hashes for python_fastflow-0.8.1-py3-none-any.whl
Algorithm Hash digest
SHA256 74900344e849a1c53cca9727bdc7aa67ea68270b06b1d9461ed7f5122d720124
MD5 3579c654122ec67dda88c7d84476955d
BLAKE2b-256 6a03b523f72b60b39a933ffa42ba20a9ced495098ea25ab4143209477b3c47b6

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page