Giter Club home page Giter Club logo

rafter's Introduction

Rafter

Go Report Card Slack

rafter


⚠️ Warning ⚠️

Rafter is looking for new maintainers

The project will no longer be developed within the kyma-project organization. Contact us if you are interested in becoming a new maintainer. If we fail to find new maintainers, the project will be archived. Until then, no new features will be developed and maintenance activities will be limited to the bare minimum.


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://kyma-project.github.io/rafter

  2. Install Rafter:

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

rafter's People

Contributors

aerfio avatar antoineco avatar clebs avatar dbadura avatar derberg avatar hudymi avatar klaudiagrz avatar kwiatekus avatar m00g3n avatar magicmatatjahu avatar mmitoraj avatar parostatkiem-zz avatar piotrmiskiewicz avatar pkosiec avatar polskikiel avatar pprecel avatar tgorgol avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.