Controllers for riff CRDs
riff System contains four API groups with CustomResourceDefinitions that are the public API for riff.
build.projectriff.io/v1alpha1
Application
- applications built from source using application buildpacksFunction
- functions built from source using function buildpacksContainer
- watch a container repository for the latest image
core.projectriff.io/v1alpha1
Deployer
- deployers map HTTP requests to applications, functions, containers or images with Kubernetes core resources
streaming.projectriff.io/v1alpha1
Stream
- streams of messagesProcessor
- processors apply functions, containers or images to messages on streamsGateway
- stream gatewayKafkaGateway
- kafka based stream gatewayInMemoryGateway
- in-memory stream gatewayPulsarGateway
- pulsar based stream gateway
knative.projectriff.io/v1alpha1
Adapter
- adapters map applications, functions or container images into an existing Knative Service or Configuration.Deployer
- deployers map HTTP requests to applications, functions, containers or images with Knative
Each runtime has an independent manager deployment that reconciles and hosts validation and defaulting webhooks for the CRDs needed by that runtime.
The build component is required by each runtime.
Two ClusterRoles are defined to grant access to the riff CRDs.
riff-${component}-role
- read/write access to component's CRDsriff-${component}-readonly-role
- read access to component's CRDs
These roles are aggregated to the edit
and view
ClusterRoles respectively.
See the Kuberneties Using RBAC Authorization for more information.
riff System is typically not installed directly by end users. See the Getting Started docs to learn how to install riff.
riff System builds on KubeBuilder which makes extensive use of generated code and configuration. After making any changes to source files in ./pkg/apis
or ./pkg/controllers
it is necessary to regenerate the API client and configuration by running:
make prepare
To run the unit tests locally:
make test
To deploy to a development cluster with ko:
ko apply -f config/
or install a single component:
ko apply -f config/riff-${component}.yaml
A common practice is to start with a standard riff install and then incrementally update riff System from source.
Make sure to install cert-manager first.
Build:
Core Runtime:
- Contour (for ingress)
Knative Runtime:
- Contour (for ingress)
- Knative Serving
Streaming Runtime:
Releases are generated by CI and published to:
https://storage.googleapis.com/projectriff/riff-system/riff-${component}-${version}.yaml
Please refer to the Contributor Code of Conduct.