/echoperator

Simple Kubernetes operator for handling echo CRDs 🤖

Primary LanguageGoMIT LicenseMIT

echoperator 🤖

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

Simple Kubernetes operator for handling echo CRDs.

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://charts.mmontes-dev.duckdns.org
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.