/elk-operator

A Kubernetes operator for setting up ELK stack on your cluster.

Primary LanguageGo

ELK Operator

Setup ELK (Elasticsearch, Logstash, and Kibana) stack on your Kubernetes cluster using ELK-Operator.

Description

This operator can be used to deploy ELK stack on Kubernetes clusters. It is created using operator-sdk. After installing the operator on your cluster, all you have to do is create a ELK resource from monitoring.amirhnajafiz.github.com/v1beta1 api.

apiVersion: monitoring.amirhnajafiz.github.com/v1beta1
kind: ELK
metadata:
  name: elk-sample
spec:
  logstash:
    replicas: 10
  elasticsearch:
    replicas: 5

Getting Started

You'll need a Kubernetes cluster to run against. You can use KIND to get a local cluster for testing, or run against a remote cluster. Note: Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster kubectl cluster-info shows).

Running on the cluster

  1. Install Instances of Custom Resources:
kubectl apply -f config/samples/
  1. Build and push your image to the location specified by IMG:
make docker-build docker-push IMG=<some-registry>/elk-operator:tag
  1. Deploy the controller to the cluster with the image specified by IMG:
make deploy IMG=<some-registry>/elk-operator:tag

Uninstall CRDs

To delete the CRDs from the cluster:

make uninstall

Undeploy controller

UnDeploy the controller to the cluster:

make undeploy

How it works

This project aims to follow the Kubernetes Operator pattern

It uses Controllers which provides a reconcile function responsible for synchronizing resources untile the desired state is reached on the cluster.

Test It Out

  1. Install the CRDs into the cluster:
make install
  1. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running):
make run

NOTE: You can also run this in one step by running: make install run

Modifying the API definitions

If you are editing the API definitions, generate the manifests such as CRs or CRDs using:

make manifests

NOTE: Run make --help for more information on all potential make targets

More information can be found via the Kubebuilder Documentation