A system administration and networking project. Create and deploy a complete Kubernetes cluster. The aim of this project is to introduce to Kubernetes by creating a self managed cluster to play with in a local environment.
First of all, you will need sto have previously installed:
After installing dependencies just run the installation script. This script will automatically create the cluster, all Docker images, deployments, services and persistent volumes needed to run the cluster.
./setup.sh
Once finished you will get a list of all services with their corresponding ips and ports
The following specifications are included in this project:
-
The cluster is set up with minikube. This choice is made due to having MacOS as local environment and LoadBalancer as service. Using any multinode/Docker based solution as kind would only work on Linux since you cannot connect to Docker bridge's network from a MacOS host.
-
As said, the service type is LoadBalancer. Since we are running local and don't have access to any Cloud Provided tooling this service is implemented with MetalLB
-
Persistence volumes are use to ensure all the services keep running despite any technical issues.
The services running are:
- Nginx server with http, https and ssh connections
- MySQL Database
- Wordpress
- PhpMyAdmin
- Grafana dashboard
- InfluxDB Database
- FTPS server
-
Telegraf is used to provide all the data from services to InfluxDB. This is done by connecting it directly to Docker socket
endpoint = "unix:///var/run/docker.sock"
which allows us to retreive the data from all applications runngin without having to install it on every single pod. -
All the images are created using Minikube's Docker daemon. To enable this you have to locally export some variables
eval $(minikube -p minikube docker-env)