valse

What is the Valse?

Valse is an kubernetes exporter application that discovers resources such as version, namespaces, node, pod, deployment, daemonset, statefulset, service and jobs on kubernetes and feeds a mongodb.

Use Cases

For envoy middleware load balancers used in Hepsiburada, it has been started to be written to dynamically add kubernetes worker node ip informations to envoy upstreams. Afterwards, with the discovery of other kubernetes resources, we added another page to our central healthcheck screens where we can see more than 160 kubernetes clusters from the top.

Configmap

Cluster:  
  # Kubernetes cluster name
  Name: "devops-k8s-av"
  # Kubernetes cluster region
  Region: "europe"

# Interval the Kubernetes resouce discovery will be made
ScheduledTaskIntervalSeconds: 10   

# Exclude some namespaces from Kubernetes resouce discovery
ExcludedNamespaces: ""

# If project run locally and want to use default kubeconfig set this value true.
# If app will run in kubernetes cluster, this value must be false.
Client:
  InClusterConfig: true

# Provide mongodb for writing discovered kubernetes resources. Mongodb could be single node or cluster.
Mongodb:
  Hosts: [ "", "", "" ]
  Username: 
  Password: 
  Port: 
  Database: ""
  ReplicaSet: ""
  TimeoutSeconds: 10

Building

For the production build just build the docker image.

$ docker build -t valse:0.1.0 -f Dockerfile . 

Building Helm package

$ helm package chart/valse --version 0.1.0 --app-version 0.1.0

Deployment

First of all, the configmap must be edited! Provide mongodb for writing discovered kubernetes resources.

$ vim ./k8s/configmap.yaml

It can be deployed with the helm chart or deployment manifests.

$ kubectl apply -f .k8s/.

GitHub

View Github