Introduction to CRAFT

CRAFT (Custom Resource Abstraction and Fabrication Tool) declares Kubernetes operators in a robust, idempotent, and generic way for any resource.

Creating a Kubernetes operator requires domain knowledge of abstraction and expertise in Kubernetes and Golang. With CRAFT you can create operators without a dependent layer and in the language of your choice!

Declare your custom resource in JSON files and let CRAFT generate all the files needed to deploy your operator into the cluster. CRAFT Wordpress operator generates 571 lines of code for you, a task that otherwise takes a few months to complete.

Reduce your workload by automating resource reconciliation with CRAFT to ensure your resource stays in its desired state. CRAFT also performs schema validations on your custom resource while creating the operator. Through automated reconciliation and schema validations, CRAFT achieves the objectives listed in the Kubernetes Architecture Design Proposal.

Advantages of using Craft

  1. Easy onboarding : Create an operator in your language of choice.
  2. Segregation of duties : Developers can work in the docker file while the Site Reliability or DevOps engineer can declaratively configure the operator.
  3. Control access : Control which users have access to the operator resources.
  4. Versioning and API interface : Work on a different version of the operator or resource than your users.
  5. Save time : Get schema and input validation feedback before runtime.
  6. Automated reconciliation : Automate resource reconciliation to lower your maintenance workload.
  7. Dependent teams work independently : Dependent teams can automate independently and create abstraction layers on top of your abstraction.

Built with

CRAFT is built with open source projects Kubebuilder and Operatify:

  • Kubebuilder : CRAFT augments the operator skeleton generated by Kubebuilder with custom resource definitions and controller capabilities.
  • Operatify : CRAFT leverages Operatify’s automated reconciliation capabilities.