MCPcopy Index your code
hub / github.com/anynines/klutchio

github.com/anynines/klutchio @v1.5.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.5.1 ↗ · + Follow
2,434 symbols 7,663 edges 382 files 1,070 documented · 44%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Klutch

Description

Klutch extends Crossplane to manage resources across multiple Kubernetes clusters. More details about Klutch's core concepts can be found here.

Klutch makes it possible to share Kubernetes API-driven services of any Kind across a large number of clusters. Service providers remain in control of operations, service users can focus on using the service and only need a lightweight adapter in their cluster.

Getting started

Please refer to our documentation for platform operators if you want to enable your users to use various managed resources. If you're a software developer then please read our documentation for developers.

Getting Involved

If you want to contact the Klutch authors or you're looking for support, please read this.

What can Klutch do for you?

User stories

Internal Platform

Kubernetes based internal platform projects have two choices - sharing clusters amongst teams or operating many isolated clusters. When sharing clusters across teams, permissions need to be locked down to ensure that teams don't interfere with each other. As a downside this limits customization possibilities for the teams. Custom Resource Definitions are cluster scoped and thus must to be shared by users of an individual cluster.

In environments where many Kubernetes clusters need to be served with the same APIs usually Operators are used. Often this leads to sprawl since operators must be installed on every cluster where the API is needed. This can make tasks like monitoring, patch management and cost control significantly more challenging.

With Klutch, all the operations of the service can be bundled, and only the Custom Resources are visible to the users. The impact on users' freedom is minimal, they can use centrally provided services, for example databases or identity providers.

SaaS provider

A Software-As-A-Service (SaaS) provider might already be using Kubernetes to run and manage their infrastructure and provide that to their users via a public API. For products and services for developers the same customers may also want to use their service via a Kubernetes API,so they can leverage tools of the CNCF landscape. Traditionally, the provider would create an Operator or Crossplane provider that exposes a Custom Resource Definition (CRD), and talks to the provider's API which creates a custom resource on the provider's infrastructure. This seems like a lot of overhead and it is. With Klutch you can take your existing CRD based automation, and share it with users that bring their own Kubernetes cluster.

Advantages include:

  • less overhead
  • a trusted standard which users can rely on across different services

What can Klutch do Today

  • Bring your Open Service Broker API based automation to Kubernetes
  • Provides you with central management for your Crossplane definitions
  • Make available your Operator based service to users in other clusters

Developing

  1. Init go.work

Execute the following commands when the repository is freshly cloned or if you are getting import errors in your go module. The commands enable go to know which module you're working on if you have multiple modules in the same workspace. For more details please refer to the official go.work docs.

bash go work init ./provider-anynines go work use ./clients/a9s-backup-manager go work use ./clients/a9s-open-service-broker

Documentation Workflow

We use GitHub Actions to automate our documentation process:

  • Pull requests modifying docs/ trigger preview builds.
  • Previews are deployed to PR-specific URLs for easy review.
  • Merges to main automatically update the production documentation.
  • Preview environments are cleaned up after PR merges.

When contributing to documentation:

  1. Create a PR with your changes.
  2. Check the automatically posted comment for the preview link.
  3. Review your changes in the preview environment.
  4. After approval and merge, changes will go live on the main site.

Credits

  • The Klutch Authors

Extension points exported contracts — how you extend this code

CatalogReactionInterface (Interface)
CatalogReactionInterface defines the reaction to GetCatalog requests. [24 implementers]
clients/a9s-open-service-broker/fake/fake.go
GenericInformer (Interface)
GenericInformer is type of SharedIndexInformer which will locate and delegate to other sharedInformers based on type [9 …
bind/contrib/example-backend/client/informers/externalversions/generic.go
GenericInformer (Interface)
GenericInformer is type of SharedIndexInformer which will locate and delegate to other sharedInformers based on type [9 …
bind/pkg/client/informers/externalversions/generic.go
Userdisplayer (Interface)
(no doc) [4 implementers]
provider-anynines/pkg/utilerr/error_decorator.go
RestoreOption (FuncType)
Unlike many Kubernetes projects Crossplane does not use third party testing libraries, per the common Go test review com
provider-anynines/internal/controller/restore/restore_test.go
Client (Interface)
Client defines the interface to the a9s backup-manager client. 1. Create a new backup of a data service instance with t
clients/a9s-backup-manager/interface.go
ClusterWorkspaceOption (FuncType)
(no doc)
bind/test/e2e/framework/kcp.go
ProvisionReactionInterface (Interface)
ProvisionReactionInterface defines the reaction to ProvisionInstance requests. [24 implementers]
clients/a9s-open-service-broker/fake/fake.go

Core symbols most depended-on inside this repo

String
called by 139
clients/a9s-open-service-broker/version.go
Error
called by 101
provider-anynines/pkg/utilerr/error.go
Get
called by 73
bind/pkg/konnector/controllers/cluster/serviceexport/multinsinformer/informer.go
Get
called by 70
bind/pkg/client/listers/bind/v1alpha1/clusterbinding.go
Informer
called by 68
bind/pkg/konnector/controllers/dynamic/eventhandler.go
Run
called by 62
bind/pkg/konnector/server.go
Get
called by 57
bind/contrib/example-backend/client/listers/examplebackend/v1alpha1/apiserviceexporttemplate.go
KlutchBindV1alpha1
called by 55
bind/pkg/client/clientset/versioned/clientset.go

Shape

Method 1,050
Function 848
Struct 385
Interface 97
FuncType 35
TypeAlias 19

Languages

Go100%

Modules by API surface

bind/pkg/apis/bind/v1alpha1/zz_generated.deepcopy.go113 symbols
clients/a9s-open-service-broker/fake/fake.go104 symbols
provider-anynines/internal/controller/serviceinstance/serviceinstance_test.go42 symbols
clients/a9s-open-service-broker/types.go41 symbols
provider-anynines/internal/controller/servicebinding/servicebinding_test.go40 symbols
clients/a9s-backup-manager/fake/mock_client.go35 symbols
provider-anynines/apis/v1/zz_generated.deepcopy.go32 symbols
clients/a9s-open-service-broker/fake/fake_test.go30 symbols
test/e2e/funcs/feature.go27 symbols
clients/a9s-open-service-broker/errors.go25 symbols
clients/a9s-backup-manager/errors.go25 symbols
provider-anynines/internal/controller/servicebinding/servicebinding.go24 symbols

Datastores touched

(mysql)Database · 1 repos
(mongodb)Database · 1 repos
mdod661341Database · 1 repos
d15575bDatabase · 1 repos
d17775bDatabase · 1 repos
dbnameDatabase · 1 repos
hmm133825Database · 1 repos

For agents

$ claude mcp add klutchio \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page