Code Monkey home page Code Monkey logo

kraan's Introduction

kraan - Building platforms on top of K8s

This project is currently in the early stages of development and expected to release beta versions by end of September.

What is kraan?

kraan helps you deploy and manage 'layers' on top of kubernetes. By applying layers on top of K8s clusters, you can build focused platforms on top of K8s e.g ML platforms, Data platform etc. Each layer is a collection of addons and can have dependencies established between the layers. i.e a "mgmt-layer" can depend on a "common-layer". Kraan will always ensure that the addons in the "common-layer" are deployed successfully before deploying the "mgmt-layer" addons. A layer is represented as a kubernetes custom resource and kraan is an operator that is deployed into the cluster and works constantly to reconcile the state of the layer custom resource.

kraan is powered by flux2 and builds on top of projects like source-controller and helm-controller.

Use cases

Kraan can be used wherever you have requirements to manage add-ons on top of k8s clusters and especially when you want to package the addons into dependant categories. If you have a mutating webhook injecting a side-car and set of security plugins which should always be deployed first before other addons,then layers concept in Kraan will help there. However, Kraan is even more powerful when it comes to building custom platforms on top of k8s like the one shown below.

kraan promotes the idea of building model based platforms on top of k8s i.e you can build a "general purpose" k8s platform which might have a "common" and "security" layers which packages all the common tooling, applications inside that cluster might need as well as organization specific bits (e.g org specific security addons etc). You can also say that the "common-layer" depends-on "security-layer" to be deployed first. This "general purpose" k8s platform can then be extended by applying another "ml-layer" which can then be exposed as an ML platform to the development teams. The end result here is developers working on top of secure and custom-built platforms which adheres to organization specific policies etc. And rolling out updates to this ML platform is as simple as "kubectl apply -f <LAYERS_DIR>" where new versions of the layers are deployed into the cluster and kraan operator will constantly work towards getting that platform to match the latest desired state!

The below diagram shows how you can use kraan to build a focused multi-cloud platform where "common" and "security" layers are shared across clouds whereas other layers become cloud specific.

custom-platform

Design

Kraan is a kubernetes controller that is built on top of k8s custom resources. It works in tandem with source-controller and helm-controller and hence they are always deployed together. The detailed design documentation can be found here

Usage

See User Guide for usage instructions.

See Developer Guide for development.

Contributions

Contributions are very welcome. Please read the contributing guide or see the docs.

kraan's People

Contributors

sbernheim avatar wangli1030 avatar saada avatar rajarajanpsj avatar byjrack avatar

Watchers

James Cloos 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.