Giter Site home page Giter Site logo

darkowlzz / operator-toolkit Goto Github PK

View Code? Open in Web Editor NEW
6.0 3.0 2.0 665 KB

operator-toolkit provides framework and tools to help implement kubernetes operators.

License: MIT License

Go 98.77% Makefile 1.06% Dockerfile 0.18%
kubernetes kubernetes-operators operators toolkit framework golang controllers controller-runtime

operator-toolkit's Introduction

operator-toolkit

PkgGoDev Go Report Card Lint and test License

operator-toolkit provides framework and tools to help implement kubernetes operators.

Packages

controller

controller package provides tools to implement certain controller patterns.

  • controller/composite package contains interface and types to implement the composite controller pattern.
  • controller/sync package contains interface and types to implement sync controller pattern.
  • controller/external-object-sync package uses the sync pattern as the base and adds a garbage collector for collecting the orphan objects in external system.
  • controller/metadata-sync package uses the sync pattern as the base and adds a resync to periodically sync object metadata between systems.
  • controller/external package provides tools for building external controllers with the same core components that a k8s controller uses but for an external system based on non-k8s event source.

operator

operator package provides tools to implement the core business logic of an operator that interacts with the world. An Operand is a unit of work. An Operator can have one or more Operands. The relationship between the Operands is modelled using a Directed Asyclic Graph (DAG). The Operator can be configured to define how the Operands are executed.

declarative

declarative package provides tools to create and transform the kubernetes manifests in a declarative way. It uses kustomize tools to read, organize and transform the manifests with the desired configuration. This helps avoid writing Go structs for all the kubernetes objects and write generic reusable transforms.

rbac

rbac/client package provides a controller-runtime generic client implementation capable of recording the actions performed using the client on the objects and generate RBAC permissions as Role and ClusterRole.

telemetry

telemetry/export package provides opentelemetry exporters that can be used to enable telemetry in an operator.

webhook

  • webhook/cert package provides a local certificate manager that can provision self signed certificate for webhook server, backed by k8s secret for persistence, and refresh certificate when they expire automatically.

  • webhook/admission package provides a consistent way of building admission controllers for k8s native and custom resources with function chaining support.

The above packages can be used together or independently of each other. example/ contains an example of using all the packages together in a kubebuilder based operator.

operator-toolkit's People

Contributors

croomes avatar darkowlzz avatar mhmxs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

croomes sujil02

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.