An event bridge for applications and services build on an event mesh with a team-oriented self-service control plane.
Every software system has design goals. Properties that it should provide io its users to create value. Typhoon has the following design goals:
- Team-based self-service control plane. Teams control their own event sources, triggers, and targets. They also control their users their permissions.
- Event mesh. The system is capable to route events from producers to consumers in hybrid cloud environemts.
- Streaming. The system is capable to stream events from producers to consumers. That means it is capable of replaying events not only queueing them.
- Event bridging. The system is capable to bridge events from different sources to different targets, also transforming them. Furthermore, this should use a declarative approach.
- Scalability. The system is capable to scale horizontally and vertically.
- Resilience. The system is capable to recover from failures.
- Security. The system is capable to secure the communication between producers and consumers.
- Open standards. The system is based on open standards like NATS.io and Knative Eventing.
Typhoon is built on top of NATS.io and Knative Eventing. It provides a control plane for managing event sources, triggers, and targets. It also provides an API for managing the control plane.
flowchart TB
subgraph controlPlane [Control Plane]
subgraph api[API]
subgraph apiAccounting[Accounting]
end
end
end
subgraph "Knative Eventing"
subgraph triggers[Triggers]
subgraph sources[Sources]
end
subgraph transformers[Transformers]
end
subgraph targets[Targets]
end
end
end
triggers--Communicates via-->eventMesh[Event Mesh]
apiAccounting--Stores data-->externalDatabase[External Database]
apiAccounting--Provides authentication-->eventMesh[Event Mesh]
controlPlane-->ssoProvider[SSO Provider]
sources-->transformers
transformers-->targets
subgraph eventMesh[Event Mesh]
subgraph NATS
end
end
subgraph ssoProvider[SSO Provider]
end
subgraph externalDatabase[External Database]
subgraph PostgreSQL
end
end
The accounting can also be combined with the Operator for NATS Accounting which enables the creation of operators, accounts and users declaratively.
- CloudEvents
- HTTP Poller
- Kafka
- salesforce
- WebHook
- CloudEvents
- DataDog
- JIRA
- NATS
- salesforce
- ServiceNOW
- Splunk
Helm can be used to install Typhoon to your Kubernetes cluster.
helm repo add typhoon https://zeiss.github.io/typhoon
helm repo update
Install Typhoon to your cluster in a typhoon
namespace.
helm install typhoon typhoon/typhoon --create-namespace --namespace typhoon
- Kubernetes
v1.28
or newer - Knative Eventing
v1.15
or newer - Knative Serving
v1.15
or newer - Helm
3.0
or newer
The prerequisites can be installed via the ZEISS Charts.
Typhoon depends on Knative Eventing and NATS.
You can use minikube to run a local Kubernetes cluster.
sh scripts/setup-minikube.sh
Run the following Makefile target to deploy Typhoon to your local Kubernetes cluster.
make deploy