Hera is a Python framework for constructing and submitting Argo Workflows. The main goal of Hera is to make Argo Workflows more accessible by abstracting away some setup that is typically necessary for constructing Argo workflows.
Project description
Hera
Hera is a Python framework for constructing and submitting Argo Workflows. The main goal of Hera is to make the Argo ecosystem accessible by simplifying workflow construction and submission.
See the Quick Start guide to start using Hera to orchestrate your Argo Workflows!
The Argo was constructed by the shipwright Argus,
and its crew were specially protected by the goddess Hera.
PyPi stats
Repo information
Explore the code
Hera at a glance
Steps diamond
from hera.workflows import Steps, Workflow, script
@script()
def echo(message: str):
print(message)
with Workflow(
generate_name="single-script-",
entrypoint="steps",
) as w:
with Steps(name="steps") as s:
echo(name="A", arguments={"message": "I'm a step"})
with s.parallel():
echo(name="B", arguments={"message": "We're steps"})
echo(name="C", arguments={"message": "in parallel!"})
echo(name="D", arguments={"message": "I'm another step!"})
w.create()
DAG diamond
from hera.workflows import DAG, Workflow, script
@script()
def echo(message: str):
print(message)
with Workflow(
generate_name="dag-diamond-",
entrypoint="diamond",
) as w:
with DAG(name="diamond"):
A = echo(name="A", arguments={"message": "A"})
B = echo(name="B", arguments={"message": "B"})
C = echo(name="C", arguments={"message": "C"})
D = echo(name="D", arguments={"message": "D"})
A >> [B, C] >> D
w.create()
See the examples for a collection of Argo workflow construction and submission via Hera!
Requirements
Hera requires an Argo server to be deployed to a Kubernetes cluster. Currently, Hera assumes that the Argo server sits behind an authentication layer that can authenticate workflow submission requests by using the Bearer token on the request. To learn how to deploy Argo to your own Kubernetes cluster you can follow the Argo Workflows guide!
Another option for workflow submission without the authentication layer is using port forwarding to your Argo server
deployment and submitting workflows to localhost:2746
(2746 is the default, but you are free to change it). Please
refer to the documentation of Argo Workflows to see the
command for port forward!
Note Since the deprecation of tokens being automatically created for ServiceAccounts and Argo using Bearer tokens in place, it is necessary to use
--auth=server
and/or--auth=client
when setting up Argo Workflows on Kubernetes v1.24+ in order for hera to communicate to the Argo Server.
Authenticating in Hera
There are a few ways to authenticate in Hera - read more in the
authentication walk through - for now, with the
argo
cli tool installed, this example will get you up and running:
from hera.workflows import Workflow, Container
from hera.shared import global_config
from hera.auth import ArgoCLITokenGenerator
global_config.host = "http://localhost:2746"
global_config.token = ArgoCLITokenGenerator
with Workflow(generate_name="local-test-", entrypoint="c") as w:
Container(name="c", image="docker/whalesay", command=["cowsay", "hello"])
w.create()
Installation
Note Hera went through a name change - from
hera-workflows
tohera
. This is reflected in the published Python package. If you'd like to install versions prior to5.0.0
, you have to usehera-workflows
. Hera currently publishes releases to bothhera
andhera-workflows
for backwards compatibility purposes.
Source | Command |
---|---|
PyPi | pip install hera |
PyPi | pip install hera-workflows |
GitHub repo | python -m pip install git+https://github.com/argoproj-labs/hera --ignore-installed; pip install . |
Optional dependencies
yaml
- Install via
hera[yaml]
- PyYAML is required for the
yaml
output format, which is accessible viahera.workflows.Workflow.to_yaml(*args, **kwargs)
. This enables GitOps practices and easier debugging.
cli
- Install via
hera[cli]
. The[cli]
option installs the extra dependency Cappa required for the CLI - The CLI aims to enable GitOps practices, easier debugging, and a more seamless experience with Argo Workflows.
- The CLI is an experimental feature and subject to change! At the moment it only supports generating YAML files
from workflows via
hera generate yaml
. Seehera generate yaml --help
for more information.
Presentations
- KubeCon/ArgoCon EU 2024 - Orchestrating Python Functions Natively in Argo Using Hera
- CNCF TAG App-Delivery @ KubeCon NA 2023 - Automating the Deployment of Data Workloads to Kubernetes with ArgoCD, Argo Workflows, and Hera
- KubeCon/ArgoCon NA 2023 - How to Train an LLM with Argo Workflows and Hera
- KubeCon/ArgoCon EU 2023 - Scaling gene therapy with Argo Workflows and Hera
- DoKC Town Hall #2 - Unsticking ourselves from Glue - Migrating PayIt's Data Pipelines to Argo Workflows and Hera
- Argo Workflows and Events Community Meeting 15 June 2022 - Hera project update
- Argo Workflows and Events Community Meeting 20 Oct 2021 - Hera introductory presentation
Blogs
- Data Validation with Great Expectations and Argo Workflows
- Hera introduction and motivation
- Dyno is scaling gene therapy research with cloud-native tools like Argo Workflows and Hera
Contributing
See the contributing guide!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file hera-5.16.0.tar.gz
.
File metadata
- Download URL: hera-5.16.0.tar.gz
- Upload date:
- Size: 292.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.8.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f150b5fe84db5cdc3e570dfdcdf1f74feba7c10adbc904b7daba97647554d16c |
|
MD5 | b8e707251a2941941cb52c3d2c6f6fee |
|
BLAKE2b-256 | 6797cf14687d341e6c0d959319b3b447d0ec864cbeae2ff4e1f7602a1aba07f3 |
File details
Details for the file hera-5.16.0-py3-none-any.whl
.
File metadata
- Download URL: hera-5.16.0-py3-none-any.whl
- Upload date:
- Size: 337.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.8.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bba813764446958e37b14e75d3935e8ea1da3d176b57b6d74a0e91f0413544be |
|
MD5 | aa2461e2c6e7813f6f3eab644c43ad8e |
|
BLAKE2b-256 | a9f7a3e4bd9df0a8de076ee24829ff74b6e9b8ce2479e5a1d6113adc653f3d88 |