FADI - Ingest, store and analyse big data flows
This page describes how to install the FADI platform
The last sections describes how to automate the deployment using Gitlab-CI, and configure various parts of FADI (user management, …).
Once FADI is installed, head to the user guide
The deployment of the FADI stack is achieved with:
This type of installation provides a quick way to test the platform, and also to adapt it to your needs.
The following tools need to be installed on the host system:
Make sure that the computer you are installing FADI to is powerful enough (currently, 6vcpu’s and 12GB RAM are needed for comfortable use).
Delete any previously created Minikube installation:
minikube delete
Start Minikube:
minikube start --cpus 6 --memory 12288 --disk-size=40GB
Notes:
--vm-driver kvm2
or --vm-driver virtualbox
To get the Kubernetes dashboard, type:
minikube dashboard
This will open a browser window with the Kubernetes Dashboard:
Note for Mac users : you need to change the network interface in the Minikube vm: in the VirtualBox GUI, go to minikube->Configuration->Network->Interface 1->advanced
and change Interface Type
to PCnet-FAST III
(the minikube vm should be shut down in order to be able to change the network interface: minikube stop
Clone this repository:
git clone https://github.com/cetic/fadi.git fadi
cd fadi
Launch the Helm script, this will deploy all the FADI services on the Minikube cluster (and may take some time).
cd helm
# you can edit values.yaml file to customise the stack
./deploy.sh
You can check everything is deploying/-ed in the Kubernetes dashboard:
Do not forget to specify the namespace to fadi
To list the different services of the FADI framework:
minikube service list
To list the different fadi pods and their status:
kubectl get pods -n fadi
To access a service in your browser, run the following command in your shell (for Grafana here):
kubectl port-forward service/fadi-grafana 8080:80 -n fadi
Then, you can access the service by typing in your browser localhost:8080
You can list all the addresses by typing:
kubectl get ingressroute -n fadi
To update the FADI stack, re-type:
cd helm
./deploy.sh
To delete the FADI stack, type:
cd helm
./teardown.sh
Now that you have a sandbox with FADI on your workstation, you can try it with a simple use case.
First, clone this repository.
git clone https://github.com/cetic/fadi.git fadi
cd fadi
Set your Kubernetes context:
kubectl config set-context <your-k8s-context>
Finally, you can deploy the full FADI stack by typing:
cd helm
./deploy.sh
Note that depending on your workstation size and network connection, this could take some time (at least 5 minutes)
GKE is a managed Kubernetes offer by the Google Cloud Platform (GCP).
“Kubernetes Engine is a managed, production-ready environment for deploying containerized applications. It brings our latest innovations in developer productivity, resource efficiency, automated operations, and open source flexibility to accelerate your time to market.”
The creation of a GKE environment can be done with Terraform or manually.
See the Terraform scripts for the creation of the Kubernetes cluster and its documentation.
To manually create a Kubernetes cluster (GKE):
Create cluster
.It is also possible to create the Kubernetes cluster in command line, see: https://cloud.google.com/kubernetes-engine/docs/how-to/creating-a-cluster
helm/deploy.log
file.minikube logs
kubectl get events --all-namespaces
kubectl get events -n fadi
kubectl get pods -n fadi
kubectl logs fadi-nifi-xxxxx -n fadi
minikube addons enable metrics-server
See .gitlab-ci.sample.yml for an example CI setup with Gitlab-CI.
A lightweight alternative to a proper Kubernetes cluster (for example for continuous integration or testing purposes) would be to install FADI in minikube (single node).
Setup a server (VM or bare metal) with the following specifications:
sudo apt-get install socat
Launch minikube (in this case with vm-driver
as none
, see limitations of this approach here):
sudo minikube start --vm-driver=none
# now install FADI as usual:
git clone https://github.com/cetic/fadi.git fadi
cd fadi
kubectl config set-context minikube
minikube addons enable ingress
cd helm
# you can edit values.yaml file to customise the stack
./deploy.sh
# specify the fadi namespace to see the different pods
kubectl config set-context minikube --namespace fadi
Open minikube to the outside world (make sure you know what you are doing here):
kubectl proxy --address='0.0.0.0' --disable-filter=true
See the user management documentation for information on how to configure user identification and authorization (LDAP, RBAC, …).
See the logs management documentation for information on how to configure logging.
See the reverse proxy documentation for information on how to configure the Traefik reverse proxy with FADI.
See the security documentation for information on how to configure SSL.
See the TSimulus documentation for information on how to simulate sensors and generate realistic data with TSimulus.