Git Product home page Git Product logo

crisscross's Introduction

Crisscross

Crisscross is a special Crossplane provider that allows you to write "Providers as a Function" (PaaF).

How It Works

Traditional Crossplane providers utilize crossplane-runtime to defer much of the logic for interacting with Kubernetes objects to the generic managed resource reconciler it implements. You can find more documentation on this model here, or check out one of the many providers in the Crossplane community. This is a powerful model that has allowed many community members to create new providers in a few hours. However, though much of the code is boilerplate from a template such as provider-template, there is still quite a lot of machinery required to add support for a simple API. This can be especially challenging if you are not familiar with Kubernetes controllers.

Crisscross shifts more of the burden that currently resides on provider authors to a single system. Instead of provider authors implementing many managed reconcilers for their different API types, they deploy a single service and a corresponding Registration object in their cluster for each API type. When the Registration is created, Crisscross spins up a new controller watching for the referenced API type that will call out to the service at the supplied endpoint.

For example, a Registration for a Bucket on GCP could look as follows:

apiVersion: crisscross.crossplane.io/v1alpha1
kind: Registration
metadata:
  name: bucket-paaf
spec:
  typeRef:
    apiVersion: storage.gcp.crossplane.io/v1alpha3
    kind: Bucket
  endpoint: http://172.18.0.2:32062

The spec.endpoint field can point to any service, whether it is a traditional Pod, a Knative Service, or a public API on the internet. The only requirement for this service is that it serves the following methods:

  • /observe
  • /create
  • /update
  • /delete

Crisscross will send the managed resource to these endpoints, and will take appropriate action in the cluster based on the response. For an example of how simple a "PaaF" can be, take a look at nop-paaf, which just reports that a resource exists and all other operations are no-ops.

License

Crisscross is under the Apache 2.0 license.

crisscross's People

Contributors

hasheddan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

crisscross's Issues

Example documentation

Hey,

I am keen to utilise this to avoid having to write a full-blown provider.
I am not completely comfortable with how to do so yet by reading the examples alone.

Can someone please provide a step by step? I don't need spoon-feeding here, but a few hints would help.

Question: Maintainers?

Hey there! My team is considering using this, but we see that there's not been an update in a while.

Are the maintainers here still active?

Has this project been superseded in some way?

Thanks!

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.