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.
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.
Cluster:
# Kubernetes cluster name
Name: "devops-k8s-av"
# Kubernetes cluster environment
Env: "production"
# Kubernetes cluster region
Region: "europe"
# Interval the Kubernetes resource discovery will be made
ScheduledTaskIntervalSeconds: 10
# Exclude some namespaces from Kubernetes resource discovery
ExcludedNamespaces: ""
# If project run locally and want to use default kubeconfig set this value false.
# If app will run in kubernetes cluster, this value must be true.
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
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
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/.