Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/salesforce/craft

CRAFT removes the language barrier to create Kubernetes Operators.
https://github.com/salesforce/craft

kubernetes operator

Last synced: 2 months ago
JSON representation

CRAFT removes the language barrier to create Kubernetes Operators.

Awesome Lists containing this project

README

        

# 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.](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture/declarative-application-management.md#bespoke-application-deployment)

## Demo:
As an example, we have created [wordpress operator](https://opensource.salesforce.com/craft/tutorial/index.html) that is comparable to one provided by [Presslabs](https://github.com/presslabs/wordpress-operator)

## 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](https://github.com/operatify/operatify) : CRAFT leverages Operatify’s automated reconciliation capabilities. Our inspiration is this [blog post](https://www.stephenzoio.com/kubernetes-operators-for-resource-management/), where we have realized that we can overcome the last barrier to declaratively create operators.
2. [Kubebuilder](https://github.com/kubernetes-sigs/kubebuilder) : CRAFT augments the operator skeleton generated by Kubebuilder with custom resource definitions and controller capabilities.

## Documentation
Check out [documentaion here](https://opensource.salesforce.com/craft/)

## Resources
GitHub Repo: [salesforce/craft](https://github.com/salesforce/craft).
Slack channel: [Kubernetes/craft](https://kubernetes.slack.com/archives/C01AD4W4NEP)

## Contribution
Please refer [Contribution.md](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](https://opensource.com/article/19/7/create-pull-request-github).

## Acknowledgements
CRAFT was started by a small team of developers, namely [Harsh Jain](https://github.com/harsh-98), [Anji Devarasetty](https://github.com/anjidevarasetty), [Maheswara Sunil Varma](https://github.com/maheswarasunil) and [Avvari Sai Bharadwaj](https://github.com/AvvariSaiBharadwaj).

Thanks to all of the amazing contributors, the full list can be found [here](https://github.com/salesforce/craft/graphs/contributors).