/craft

CRAFT removes the language barrier to create Kubernetes Operators.

Primary LanguageGoBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Custom Resource Abstraction Fabrication Tool

CRAFT removes the language barrier to create Kubernetes Operators. CRAFT declares Kubernetes Operators in a robust and generic way for any resource, letting developers focus on CRUD (create, read, update and delete) operations of resource management in a Dockerfile. With CRAFT you can create operators without a dependent layer and in the language of your choice!

Features:

  1. Automated reconciliation using Docker entrypoint exit codes.
  2. Kubernetes structural schema validation for a custom resource (CRD) happens within CRAFT while creating an operator.
  3. Craft can be installed as a binary tool.

These features allow CRAFT to achieve the objectives listed in this Kubernetes Architecture Design Proposal.

Demo:

As an example, we have created wordpress operator that is comparable to one provided by Presslabs

Advantages

  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. Versioning : Work on a different version of the operator or resource than your users.
  4. Validations : Get schema and input validation feedback before runtime.
  5. Controlled reconciliation : Define resource reconciliation frequency to lower your maintenance workload.

Built with

CRAFT is built with open source projects Operatify and Kubebuilder:

  1. Operatify : CRAFT leverages Operatify’s automated reconciliation capabilities. Our inspiration is this blog post, where we have realized that we can overcome the last barrier to declaratively create operators.
  2. Kubebuilder : CRAFT augments the operator skeleton generated by Kubebuilder with custom resource definitions and controller capabilities.

Documentation

Check out documentaion here

Resources

GitHub Repo: salesforce/craft.
Slack channel: Kubernetes/craft

Contribution

Please refer Contribution.md before pushing the code. If you wish to make a contribution, create a branch, push your code into the branch and create a PR. For more details, check this article.

Acknowledgements

CRAFT was started by a small team of developers, namely Harsh Jain, Anji Devarasetty, Maheswara Sunil Varma and Avvari Sai Bharadwaj.

Thanks to all of the amazing contributors, the full list can be found here.