• Stars
    star
    2,381
  • Rank 19,310 (Top 0.4 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created over 5 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Shell-operator is a tool for running event-driven scripts in a Kubernetes cluster

shell-operator logo

docker pull flant/shell-operator GH Discussions

Shell-operator is a tool for running event-driven scripts in a Kubernetes cluster.

This operator is not an operator for a particular software product such as prometheus-operator or kafka-operator. Shell-operator provides an integration layer between Kubernetes cluster events and shell scripts by treating scripts as hooks triggered by events. Think of it as an operator-sdk but for scripts.

Shell-operator is used as a base for more advanced addon-operator that supports Helm charts and value storages.

Shell-operator provides:

  • Ease of management of a Kubernetes cluster: use the tools that Ops are familiar with. It can be bash, python, kubectl, etc.
  • Kubernetes object events: hook can be triggered by add, update or delete events. Learn more about hooks.
  • Object selector and properties filter: shell-operator can monitor a particular set of objects and detect changes in their properties.
  • Simple configuration: hook binding definition is a JSON or YAML document on script's stdout.
  • Validating webhook machinery: hook can handle validating for Kubernetes resources.
  • Conversion webhook machinery: hook can handle version conversion for Kubernetes resources.

Documentation

Please see the docs for more in-depth information and supported features.

Examples and notable users

More examples of how you can use shell-operator are available in the examples directory.

Prominent shell-operator use cases include:

  • Deckhouse Kubernetes platform where both projects, shell-operator and addon-operator, are used as the core technology to configure & extend K8s features;
  • KubeSphere Kubernetes platform's installer;
  • Kafka DevOps solution from Confluent.

Please find out & share more examples in Show & tell discussions.

Articles & talks

Shell-operator has been presented during KubeCon + CloudNativeCon Europe 2020 Virtual (Aug'20). Here is the talk called "Go? Bash! Meet the shell-operator":

Official publications on shell-operator:

Other languages:

Community

Please feel free to reach developers/maintainers and users via GitHub Discussions for any questions regarding shell-operator.

You're also welcome to follow @flant_com to stay informed about all our Open Source initiatives.

License

Apache License 2.0, see LICENSE.

More Repositories

1

ovpn-admin

Simple web UI to manage OpenVPN users.
Go
1,344
star
2

loghouse

Ready to use log management solution for Kubernetes storing data in ClickHouse and providing web UI.
Ruby
925
star
3

grafana-statusmap

Grafana panel plugin to visualize status of multiple objects over time
TypeScript
829
star
4

addon-operator

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

nginx-http-rdns

Nginx HTTP rDNS module
C
144
star
6

examples

Configurations, scripts & samples used in guides and other articles from Flant engineers.
JavaScript
105
star
7

curator-opensearch

Curator for OpenSearch.
Python
75
star
8

glaball

A CLI tool to manage self-hosted GitLab instances in bulk.
Go
71
star
9

pam_docker

C
61
star
10

elasticsearch-extractor

Simple web UI to extract any index from Elasticsearch snapshot into repository.
Go
46
star
11

netgwm

NetGWM (Network Gateway Manager)
Python
38
star
12

helm-charts

Public Helm charts from Flant.
Smarty
36
star
13

cert-manager-webhook-regru

The webhook and the ClusterIssuer resource for automatic provisioning of reg.ru SSL certificates in Kubernetes
Go
33
star
14

helm-apps

Smarty
24
star
15

gitlab-ci-examples

22
star
16

negentropy

S - security
Go
21
star
17

libjq-go

CGO bindings for jq with cache for compiled programs
Go
15
star
18

flunch

open source non-alcohol drink
14
star
19

jekyll_include_plugin

Plugin for including contents of local/remote plain text files (or parts of them) into your pages. Allows for multilang comments in the included files.
Ruby
13
star
20

uuidable

With this gem you can use UUID instead of id in routes. But id is still primary key.
Ruby
9
star
21

artery

Main messaging system between Rails [micro]services implementing message bus pattern on NATS (for now).
Ruby
9
star
22

clickhouse_exporter

Image for Percona-Lab/clickhouse_exporter
Dockerfile
7
star
23

php_fpm_docker

Run php_fpm pools in docker containers
7
star
24

ipm

ipm (IP Manager)
Python
7
star
25

nginx_saml_authenticator

Ruby
6
star
26

kubernetes-efk

ElasticSearch + Fluentd + Kibana in Kubernetes
Shell
5
star
27

docker_penetration_experiment

C
5
star
28

external_services

Gem helps syncronize objects to different external services like Gitlab, Redmine and any other.
Ruby
5
star
29

superhosting

Ruby
4
star
30

kube-ca-auth-proxy

Shell
4
star
31

kube-client

Kubernetes client wrapper
Go
4
star
32

charts

Smarty
4
star
33

htop

This repository contains htop package for buildizer as native package: package build rules and upstream source.
C
3
star
34

elasticsearch-oneday-exporter

Go
3
star
35

runtex

Python
3
star
36

LMPD

Lightweight Modular Policy Daemon
C
3
star
37

dapp_bot

Telegram dapp bot
Go
3
star
38

elasticsearch-snapshot-exporter

Go
3
star
39

simple_saml

Ruby
3
star
40

kube-resource-unit-converter

Convert Kubernetes Resource Quantity representation to bytes
Go
3
star
41

machine-controller-manager-provider-yandex

Go
3
star
42

redmine_issue_priorities_per_tracker

Ruby
2
star
43

gogost

Go
2
star
44

kube-controller-manager

Dockerfile
2
star
45

flant.github.io

HTML
2
star
46

buildizer

Ruby
2
star
47

redmine_attachments_database_storage

This is a plugin for Redmine which allows to store attachments in database.
Ruby
2
star
48

kube-rabbitmq

Go
1
star
49

jekyll_remote_plantuml_plugin

Plugin for including local/remote PlantUML diagrams into your pages
Ruby
1
star
50

dumpdb

Shell
1
star
51

buildizer-env-ubuntu

1
star
52

shellfold

Ruby
1
star
53

path_mapper

Ruby
1
star
54

buildizer-env-centos

1
star
55

gogomonia-utils

Shell
1
star
56

promicher

Prometheus alerts enricher
Go
1
star
57

rpmchange

Rpm spec change tool.
Ruby
1
star
58

cert-manager-webhook-nicru

Go
1
star
59

website-core

Ruby
1
star