https://github.com/amirhnajafiz/elk-operator
A Kubernetes operator for setting up ELK stack on your cluster.
https://github.com/amirhnajafiz/elk-operator
elk elk-cluster go golang k8s k8s-operator operator-sdk
Last synced: 7 months ago
JSON representation
A Kubernetes operator for setting up ELK stack on your cluster.
- Host: GitHub
- URL: https://github.com/amirhnajafiz/elk-operator
- Owner: amirhnajafiz
- Created: 2023-12-16T08:09:19.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-06-28T14:28:22.000Z (over 1 year ago)
- Last Synced: 2025-01-23T17:34:35.305Z (9 months ago)
- Topics: elk, elk-cluster, go, golang, k8s, k8s-operator, operator-sdk
- Language: Go
- Homepage:
- Size: 335 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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.
```yaml
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](https://sigs.k8s.io/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:
```sh
kubectl apply -f config/samples/
```2. Build and push your image to the location specified by `IMG`:
```sh
make docker-build docker-push IMG=/elk-operator:tag
```3. Deploy the controller to the cluster with the image specified by `IMG`:
```sh
make deploy IMG=/elk-operator:tag
```### Uninstall CRDs
To delete the CRDs from the cluster:
```sh
make uninstall
```### Undeploy controller
UnDeploy the controller to the cluster:
```sh
make undeploy
```### How it works
This project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/)
It uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/)
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:
```sh
make install
```2. Run your controller (this will run in the foreground, so switch to a new terminal if you want to leave it running):
```sh
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:
```sh
make manifests
```**NOTE:** Run `make --help` for more information on all potential `make` targets
More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html)