salesforce / craft

CRAFT removes the language barrier to create Kubernetes Operators.
BSD 3-Clause "New" or "Revised" License
93 stars 15 forks source link
kubernetes operator

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.