Rafter: Kubernetes-native 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 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.
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.