Skip to content
Kubernetes-native S3-like files/assets store based on CRDs and powered by MinIO
Go Shell Smarty Other
Branch: master
Clone or download

Latest commit

Latest commit 1a89277 Apr 13, 2020

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github Enable stale bot for epics (#63) Jan 24, 2020
charts add 'displayName' field to Asset type (#72) Apr 2, 2020
cmd Add configMap mode to loader structure (#49) Jan 10, 2020
config add 'displayName' field to Asset type (#72) Apr 2, 2020
deploy Apply changes from PR #6058 from Kyma to Rafter to stabilize integrat… Dec 9, 2019
docs Move the tutorials to the root (#43) Dec 17, 2019
hack Remove that tests/assetstore folder (#48) Dec 21, 2019
internal add 'displayName' field to Asset type (#72) Apr 2, 2020
katacoda-tutorials Remove additional indents from tutorials (#64) Jan 29, 2020
pkg add 'displayName' field to Asset type (#72) Apr 2, 2020
tests add 'displayName' field to Asset type (#72) Apr 2, 2020
.dockerignore Create build pipelines for Rafter (#15) Nov 13, 2019
.gitignore Integration tests pipeline (#20) Nov 22, 2019
CODEOWNERS Update codeowners (#74) Apr 1, 2020
LICENSE Consolidate Asset Store and CMS as Rafter (#1) Oct 17, 2019
Makefile Apply changes from PR #6058 from Kyma to Rafter to stabilize integrat… Dec 9, 2019
OWNERS Update codeowners (#74) Apr 1, 2020
PROJECT Consolidate Asset Store and CMS as Rafter (#1) Oct 17, 2019
README.md Add a tutorial showing the use of ConfigMaps in Rafter (#62) Jan 28, 2020
go.mod Update deps (#75) Apr 13, 2020
go.sum Update deps (#75) Apr 13, 2020
rafter.png Add new version of logo (#30) Nov 26, 2019

README.md

Rafter

Go Report Card Slack

rafter

Overview

Rafter is a solution for storing and managing different types of files called assets. It uses MinIO as object storage. The whole concept of Rafter relies on Kubernetes custom resources (CRs) managed by the Rafter Controller Manager. These CRs include:

  • Asset CR which manages single assets or asset packages from URLs or ConfigMaps
  • Bucket CR which manages buckets
  • AssetGroup CR which manages a group of Asset CRs of a specific type to make it easier to use and extract webhook information

Rafter enables you to manage assets using supported webhooks. For example, if you use Rafter to store a file such as a specification, you can additionally define a webhook service that Rafter should call before the file is sent to storage. The webhook service can:

  • Validate the file
  • Mutate the file
  • Extract some of the file information and put it in the status of the custom resource

Rafter comes with the following set of services and extensions compatible with Rafter webhooks:

NOTE: To learn how Rafter is implemented in Kyma, read Rafter documentation.

What Rafter is not

What Rafter can be used for

  • Rafter is based on CRs. Therefore, it is an extension of Kubernetes API and should be used mainly by developers building their solutions on top of Kubernetes,
  • Rafter is a file store that allows you to programmatically modify, validate the files and/or extract their metadata before they go to storage. Content of those files can be fetched using an API. This is a basic functionality of the headless CMS concept. If you want to deploy an application to Kubernetes and enrich it with additional documentation or specifications, you can do it using Rafter,
  • Rafter is an S3-like file store also for files written in HTML, CSS, and JS. It means that Rafter can be used as a hosting solution for client-side applications.

Quick start

Try out this set of interactive tutorials to see Rafter in action on Minikube. These tutorials show how to:

  • Quickly install Rafter with our Helm Chart.
  • Host a simple static site.
  • Use Rafter as headless CMS with the support of Rafter metadata webhook and Front Matter service. This example is based on a use case of storing Markdown files.
  • Use Rafter as headless CMS with the support of Rafter validation and conversion webhooks. This example is based on a use case of storing AsyncAPI specifications.

NOTE: Read this development guide to start developing the project.

Installation

Prerequisites

  • Kubernetes 1.14 or higher / Minikube 1.3 or higher
  • Helm 2.16.0 or higher

Steps

  1. Add a new chart's repository to Helm. Run:

    helm repo add rafter-charts https://rafter-charts.storage.googleapis.com

  2. Install Rafter:

    helm install --name rafter --set rafter-controller-manager.minio.service.type=NodePort rafter-charts/rafter

You can’t perform that action at this time.