Skip to content

Latest commit

 

History

History
58 lines (40 loc) · 3.75 KB

README.md

File metadata and controls

58 lines (40 loc) · 3.75 KB

🤖 echoperator

CI Release Go Report Card Go Reference Artifact HUB License: MIT

Simple Kubernetes operator built from scratch with client-go.

Kubernetes operator pattern implementation using the client-go library. Altough there are a bunch of frameworks for doing this (kubebuilder, operator framework ...), this example operator uses the tools provided by client-go for simplicity and flexibility reasons.

Medium article that explains how to build this operator step by step.

Features

  • Simple example to understand how a Kubernetes operator works.
  • Manages Echo CRDs for executing an echo inside a pod.
  • Manages ScheduledEcho CRDs for scheduling the execution of an echo inside a pod.
  • High Availability operator using Kubernetes lease objects.
  • Prometheus metrics.
  • Helm chart.

Versioning

Echo ScheduledEcho Job CronJob Lease Kubernetes
v1alpha1 v1alpha1 v1 v1 v1 v1.21.x

Installation

helm repo add mmontes https://mmontes11.github.io/charts
helm install echoperator mmontes/echoperator

Custom Resource Definitions (CRDs)

The helm chart installs automatically the Custom Resource Definitions needed for this operator to work. However, if you wanted to install them manually, you can find them in the helm chart repo.

Example use cases

Hello world
  • Client creates a hello world Echo CRD.
  • Operator receives a Echo added event.
  • Operator reads the message property from the Echo and creates a Job resource.
  • The Job resource creates a Pod that performs a echo command with the message property.
Scheduled hello world
  • Client creates a hello world ScheduledEcho CRD.
  • Operator receives a ScheduledEcho added event.
  • Operator reads the message and schedule property from the ScheduledEcho and creates a CronJob.
  • The CronJob schedules a Job creation using the schedule property.
  • When scheduled, the Job resource creates a Pod that performs a echo command with the message property.