Combines some general tooling for creating a good Docker Swarm Cluster (Swarm Dashboard, Traefik, Portainer, Prometheus, Grafana)
Clone or download
Latest commit 04b00e3 Oct 3, 2018

README.md

docker-swarm-cluster

Combines some tooling for creating a good Docker Swarm Cluster.

HTTP(S) Ingress

  • Traefik

Cluster Management

  • Swarm Dashboard
  • Portainer
  • Docker Janitor

Metrics Monitoring

CI/CD Tools

  • Gitlab Runner

TODO

Volume management

  • Ceph
  • Backup

Logs aggregation

  • FluentBit
  • Kafka
  • Graylog

Metrics Monitoring

  • Telegrambot

Installation

  1. Install Ubuntu on all VMs you're mean't to use in your Swarm Cluster
  2. Install the latest Docker package on all VMs
  3. On one of the VMs:
    1. Execute docker swarm init
    2. Copy the provided command/token
  4. On the other machines, run the provided command so they will join the Swarm Cluster
  5. git clone https://github.com/flaviostutz/docker-swarm-cluster.git
  6. Setup .env parameters
  7. Run initialize-services.sh
  8. Open http://portainer.mycluster.org and point it to "Local Daemon"
  9. Look into docker-compose-* files for understanding the cluster topology

Customizations

  1. Change the desired compose file for specific cluster configurations
  2. Run initialize-all.sh for updating modified services

docker-compose files

  • Swarm stack doesn't support .env automatically (yet). You have to run export $(cat .env) && docker stack... so that those parameters work
  • docker-compose-ingress.yml
  • docker-compose-admin.yml
  • docker-compose-metrics.yml
  • docker-compose-devtools.yml
    • export $(cat .env) && docker stack deploy --compose-file docker-compose-devtools.yml devtools
  • docker-compose-logs.yml
  • docker-compose-volumes.yml
    • export $(cat .env) && docker stack deploy --compose-file docker-compose-volumes.yml logs
    • Ceph UI: http://ceph.mycluster.org