# system **Repository Path**: projectriff/system ## Basic Information - **Project Name**: system - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-03-22 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ![CI](https://github.com/projectriff/system/workflows/CI/badge.svg) [![codecov](https://codecov.io/gh/projectriff/system/branch/master/graph/badge.svg)](https://codecov.io/gh/projectriff/system) [![Go Report Card](https://goreportcard.com/badge/github.com/projectriff/system)](https://goreportcard.com/report/github.com/projectriff/system) [![GoDoc](https://godoc.org/github.com/projectriff/system?status.svg)](https://godoc.org/github.com/projectriff/system) # 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](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) for more information. ## Install riff System is typically not installed directly by end users. See the [Getting Started](https://projectriff.io/docs/getting-started/) docs to learn how to install riff. ## Development riff System builds on [KubeBuilder](https://www.kubebuilder.io) 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: ```sh make prepare ``` To run the unit tests locally: ```sh make test ``` To deploy to a development cluster with [ko](https://github.com/google/ko): ```sh ko apply --strict -f config/ ``` or install a single component: ```sh ko apply --strict -f config/riff-${component}.yaml ``` ### Dependencies A common practice is to start with a [standard riff install](https://github.com/projectriff/charts) and then incrementally update riff System from source. Make sure to install [cert-manager](https://cert-manager.io/docs/installation/kubernetes/) first. Build: - [kpack](https://github.com/pivotal/kpack) - [riff builders](https://github.com/projectriff/builder) Core Runtime: - [Contour](https://projectcontour.io) (for ingress) Knative Runtime: - [Contour](https://projectcontour.io) (for ingress) - [Knative Serving](https://github.com/knative/serving) Streaming Runtime: - [keda](https://github.com/kedacore/keda) ### 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](CODE_OF_CONDUCT.adoc).