Skip to content
This repository has been archived by the owner on Mar 13, 2021. It is now read-only.

projectriff/system

Repository files navigation

CI codecov Go Report Card GoDoc

riff System

Controllers for riff CRDs

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 buildpacks
    • Function - functions built from source using function buildpacks
    • Container - 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 messages
    • Processor - processors apply functions, containers or images to messages on streams
    • Gateway - stream gateway
    • KafkaGateway - kafka based stream gateway
    • InMemoryGateway - in-memory stream gateway
    • PulsarGateway - 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

Runtimes

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.

RBAC

Two ClusterRoles are defined to grant access to the riff CRDs.

  • riff-${component}-role - read/write access to component's CRDs
  • riff-${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.

Install

riff System is typically not installed directly by end users. See the Getting Started docs to learn how to install riff.

Development

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

Dependencies

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:

Knative Runtime:

Streaming Runtime:

Releases

Releases are generated by CI and published to:

https://storage.googleapis.com/projectriff/riff-system/riff-${component}-${version}.yaml

Code of Conduct

Please refer to the Contributor Code of Conduct.