Giter Site home page Giter Site logo

cnhup / addon-operator Goto Github PK

View Code? Open in Web Editor NEW

This project forked from flant/addon-operator

0.0 0.0 0.0 8.27 MB

A system to manage additional components for Kubernetes cluster in a simple, consistent and automated way.

License: Apache License 2.0

Dockerfile 0.36% Roff 0.33% Go 99.17% Shell 0.14%

addon-operator's Introduction

Addon-operator logo

docker pull flant/addon-operator Slack chat EN Telegram chat RU

The Addon-operator adds hooks and values to helm charts in order to enhance the capabilities of helm and transform charts into smart modules that configure themselves and respond to changes in the cluster.

Features

  • Discovery of values for helm charts — parameters can be generated, calculated or got from cluster;
  • Continuous discovery — parameters can be changed in response to cluster events;
  • Controlled helm execution — Addon-operator monitors the helm operation to ensure helm chart’s successful installation. Coming soon: embed helm and tiller for tighter integration, use kubedog to track deploy status and more;
  • Custom extra actions before and after running helm as well as on other events via hooks paradigm. See related shell-operator capabilities.

Also, Addon-operator provides:

  • ease the maintenance of a Kubernetes clusters: use the tools that Ops are familiar with to build your modules and hooks such as bash, kubectl, python, etc;
  • the execution queue of modules and hooks that ensures the launch sequence and repeated execution in case of an error, which simplifies programming of modules and ensures the predictable outcome of their operation;
  • the possibility of dynamic enabling/disabling of a module (depending on detected parameters);
  • the ability to tie conditions of module activation to the activation of other modules;
  • the unified ConfigMap for the configuration of all settings;
  • the ability to run helm only if the parameters have changed. In this case, the release list would contain the time of build of the modified release;
  • global hooks for figuring out parameters and performing actions that affect several dependent modules;
  • off-the-shelf metrics for monitoring via Prometheus.

Overview

Hooks and Helm Values

Hooks are triggered by Kubernetes events and in response to other stimuli.

Hooks are triggered by Kubernetes events

A hook is an executable file that can make changes to Kubernetes and set values of helm (they are stored in the memory of Addon-operator) during execution

A hook is an executable file

Hooks are a part of the module. Also, there is a helm chart in the module. If the hook makes changes to values, then Addon-operator would start the reinstallation of the helm chart.

Hook is a part of the module

Modules

There can be many modules.

Many modules

In addition to modules, the Addon-operator supports global hooks and global values. They have their own storage of values. Global hooks are triggered by events and when active they can:

  • Make changes to Kubernetes
  • Make changes to global values storage

Global hooks and global values

If the global hook changes values in the global storage, then the Addon-operator starts the reinstallation of all helm charts.

Changes in global values cause reinstallation

Installation

You may use the prepared image flant/addon-operator to install Addon-operator in a cluster. The image comprises a binary addon-operator file as well as several required tools: helm, kubectl, jq, bash.

The installation incorporates the image building process with files of modules and hooks, adding the necessary RBAC rights and launching image in the cluster. You may find a preshaped files and commands in the /examples directory.

What's next?

  • Find out more on lifecycle of Addon-operator and how to use modules and values in documentation.
  • /metrics endpoint is implemented. See METRICS for details.
  • More examples can be found in examples directory.

License

Apache License 2.0, see LICENSE.

addon-operator's People

Contributors

alexey-igrychev avatar diafour avatar distorhead avatar flant-team-sysdev avatar z9r5 avatar zuzzas avatar

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.