Rafter: Kubernetes-native Headless content management system
Kyma is a platform for extending applications with microservices and serverless functions. With the new tool Rafter, which is written in Go, a brand new and Kubernetes-native Headless content management system (CMS) emerged from the project.
The project Rafter is still relatively young, but has already received some buzz on GitHub: 46 stars – even before the initial release. The new storage solution that emerged from the Kyma project can be used to store and manage different types of data. These data types are called assets in this context.
What at first sounds like “just another CMS” is technically a bit different, because Rafter relies completely on Kubernetes Custom Resources (CRs), which are managed by the Rafter Controller Manager. Rafter comes with three CRs – Asset CR, Bucket CR, and AssetGroup CR.
Rafter is a headless CMS, which according to Kyma, is a “new breed of traditional Content Management Systems (CMS) that provides a way of storing and managing raw content, and exposing it through an API”.
There are many benefits of using Headless CMS instead of a traditional CMS. For instance, using a Headless CMS provides a helpful, unified way of uploading different document types to a Kyma cluster.
Asset CR is used to manage individual assets or asset packages, while Bucket CR handles the management of buckets. AssetGroup CR can be used to manage asset CR groups of a specific type. This is intended to simplify the use and extraction of webhook information.
The files (assets) are managed in Rafter via webhooks. So-called webhook services can also be defined, which are called before a file lands in the storage. These services can, for example, validate, modify or extract information from a file. Information obtained in this way can also be stored in the custom resource status.
Since Rafter relies on Kubernetes, it is no big surprise that this project was also written in Go. The high-performance MinIO is used as object storage. This is API-compatible with Amazon’s S3 Cloud Storage and, thanks to its good performance, is also particularly suitable for machine learning or analysis projects.
Like the parent project Kyma, Rafter and MinIO are also available under the Apache 2.0 license and are therefore open source. More information about Rafter can be found on the GitHub page of the project. On Katacoda there are tutorials about the CMS.