A minimal deployment of the Fury Kubernetes Distribution in a minikube environment.
- kustomize
>= 3.6
- furyctl
>= 0.4.0
- minikube
>= v1.18
To install furyctl
please refer to this guide.
The following modules of the distribution are deployed:
Module | Version |
---|---|
Fury Monitoring | v1.11.1 |
Fury Logging | v1.7.1 |
Fury Ingress | v1.9.2 |
You can change the versions by modifying the Furyfile.yml
and then update the vendor folder via furyctl vendor -H.
You can inspect the Furyfile.yml
to see the list of the packages deployed.
$ cat Furyfile.yml | grep logging
logging: v1.7.1
- name: logging/elasticsearch-single
- name: logging/fluentd
- name: logging/kibana
$ cat Furyfile.yml | grep monitoring
monitoring: v1.11.1
- name: monitoring/prometheus-operator
- name: monitoring/prometheus-operated
- name: monitoring/alertmanager-operated
- name: monitoring/node-exporter
- name: monitoring/kube-state-metrics
- name: monitoring/grafana
- name: monitoring/goldpinger
- name: monitoring/kubeadm-sm
- name: monitoring/configs
$ cat Furyfile.yml | grep ingress
ingress: v1.9.2
- name: ingress/forecastle
- name: ingress/nginx
At the root level of this repository, execute:
export REPO_DIR=$(PWD)
Start a minikube cluster:
cd $REPO_DIR/minikube
make setup
By default, it will spin up a one node Kubernetes cluster of version v1.19.4
in a VirtualBox VM (CPUs=4, Memory=4096MB, Disk=20000MB).
You can pass additional parameters to change the default values:
make setup cpu=2 memory=2048
If you reduce the memory
and cpu
of the node, remember to adjust resources requests and limits accordingly.
Please referer to this Makefile for additional details on the cluster creation.
cd $REPO_DIR/fury
make fury
You might see some errors. You need to wait for some CRD to be created and then reapply the manifests:
# wait 10s
make fury
Wait for all the pods to be up and running (it may take some time):
kubectl get pods -A -w
While you wait, use minikube ip
to get the external IP of the cluster:
$ minikube ip
192.168.99.113
Add ingresses to /etc/hosts
file by adding the following line to the bottom of the file:
192.168.99.113 directory.fury.info alertmanager.fury.info goldpinger.fury.info grafana.fury.info prometheus.fury.info >> /etc/hosts
Replace 192.168.99.113
with your actual IP.
If you are adventurous enough, you might want to use this one-liner:
sudo bash -c "echo $(minikube ip) directory.fury.info alertmanager.fury.info goldpinger.fury.info grafana.fury.info prometheus.fury.info >> /etc/hosts"
Open a browser and go to directory.fury.info
. This is the forecastle page with all the ingresses. You can have a look around and:
- Inspect the logs in Kibana
- See the alerts in Alertmanager
- Explore the metrics in Prometheus
- Visualize the dashboards in Grafana
Kibana requires an index pattern to access the Elasticsearch data that you want to explore. An index pattern selects the data to use and allows you to define the properties of the fields. We are going to create the following index patterns:
kubernetes-*
system-
nginx-ingress-controller-*
# kubernetes-*
curl -X POST kibana.fury.info/api/saved_objects/index-pattern/kubernetes -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '
{
"attributes": {
"title": "kubernetes-*"
}
}'
# system-*
curl -X POST kibana.fury.info/api/saved_objects/index-pattern/system -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '
{
"attributes": {
"title": "system-*"
}
}'
# nginx-ingress-controller-*
curl -X POST kibana.fury.info/api/saved_objects/index-pattern/nginx-ingress-controller -H 'kbn-xsrf: true' -H 'Content-Type: application/json' -d '
{
"attributes": {
"title": "nginx-ingress-controller-*"
}
}'
To clean up:
- delete the
minikube
cluster:
cd $REPO_DIR/minikube
make delete
- delete the line you added in
/etc/hosts
.