From 781a83465e5de5a2a4a07cb9908600da10fa1388 Mon Sep 17 00:00:00 2001 From: MathieuHa Date: Sun, 16 Oct 2022 20:47:29 +0200 Subject: [PATCH] Create Environnement to work on redis cache --- Makefile | 3 + README.md | 8 +- exemples/redis-cache/acquis.yaml | 4 + exemples/redis-cache/docker-compose.redis.yml | 104 ++++++++++++++++++ 4 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 exemples/redis-cache/acquis.yaml create mode 100644 exemples/redis-cache/docker-compose.redis.yml diff --git a/Makefile b/Makefile index ac90851..8d0c9fb 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,9 @@ run_local: run_behindproxy: docker-compose -f exemples/behind-proxy/docker-compose.cloudflare.yml up -d --remove-orphans +run_cacheredis: + docker-compose -f exemples/redis-cache/docker-compose.redis.yml up -d --remove-orphans + run: docker-compose -f docker-compose.yml up -d --remove-orphans diff --git a/README.md b/README.md index cc37cfe..c72dca2 100644 --- a/README.md +++ b/README.md @@ -216,9 +216,15 @@ We configure the middleware to trust as well the IP: To run the environnement run: ```bash -make run_behind_proxy +make run_behindproxy ``` +2. With Redis as an external shared cache + +To run the demo environnement run: +```bash +make run_cacheredis +``` ### About diff --git a/exemples/redis-cache/acquis.yaml b/exemples/redis-cache/acquis.yaml new file mode 100644 index 0000000..5d52554 --- /dev/null +++ b/exemples/redis-cache/acquis.yaml @@ -0,0 +1,4 @@ +filenames: + - /var/log/traefik/access.log +labels: + type: traefik diff --git a/exemples/redis-cache/docker-compose.redis.yml b/exemples/redis-cache/docker-compose.redis.yml new file mode 100644 index 0000000..a8cf0d2 --- /dev/null +++ b/exemples/redis-cache/docker-compose.redis.yml @@ -0,0 +1,104 @@ +version: "3.8" +services: + traefik: + image: "traefik:v2.8.8" + container_name: "traefik" + command: + # - "--log.level=DEBUG" + - "--accesslog" + - "--accesslog.filepath=/var/log/traefik/access.log" + - "--api.insecure=true" + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--entrypoints.web.address=:80" + + #- "--experimental.plugins.bouncer.modulename=github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin" + #- "--experimental.plugins.bouncer.version=v1.0.9" + - "--experimental.localplugins.bouncer.modulename=github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin" + volumes: + - /var/run/docker.sock:/var/run/docker.sock:ro + - logs-redis:/var/log/traefik + - ./../../:/plugins-local/src/github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin + ports: + - 80:80 + - 8080:8080 + networks: + - redis + - services + depends_on: + - crowdsec + - redis + + whoami1: + image: traefik/whoami + container_name: "simple-service1" + labels: + - "traefik.enable=true" + # Definition of the router + - "traefik.http.routers.router1.rule=Path(`/foo`)" + - "traefik.http.routers.router1.entrypoints=web" + - "traefik.http.routers.router1.middlewares=crowdsec1@docker" + # Definition of the service + - "traefik.http.services.service1.loadbalancer.server.port=80" + # Definitin of the middleware + - "traefik.http.middlewares.crowdsec1.plugin.bouncer.enabled=true" + # crowdseclapikey must be uniq to the middleware attached to the service + - "traefik.http.middlewares.crowdsec1.plugin.bouncer.crowdseclapikey=40796d93c2958f9e58345514e67740e5" + - "traefik.http.middlewares.crowdsec1.plugin.bouncer.crowdsecmode=live" + networks: + - services + + whoami2: + image: traefik/whoami + container_name: "simple-service2" + labels: + - "traefik.enable=true" + # Definition of the router + - "traefik.http.routers.router2.rule=Path(`/bar`)" + - "traefik.http.routers.router2.entrypoints=web" + - "traefik.http.routers.router2.middlewares=crowdsec1@docker" + # Definition of the service + - "traefik.http.services.service2.loadbalancer.server.port=80" + # Definitin of the middleware + - "traefik.http.middlewares.crowdsec2.plugin.bouncer.enabled=true" + # crowdseclapikey must be uniq to the middleware attached to the service + - "traefik.http.middlewares.crowdsec2.plugin.bouncer.crowdseclapikey=44c36dac5c4140af9f06f397508e82c7" + - "traefik.http.middlewares.crowdsec2.plugin.bouncer.crowdsecmode=live" + networks: + - services + + + crowdsec: + image: crowdsecurity/crowdsec:v1.4.1 + container_name: "crowdsec" + environment: + COLLECTIONS: crowdsecurity/traefik + CUSTOM_HOSTNAME: crowdsec + BOUNCER_KEY_TRAEFIK_DEV_1: 40796d93c2958f9e58345514e67740e5 + BOUNCER_KEY_TRAEFIK_DEV_2: 44c36dac5c4140af9f06f397508e82c7 + volumes: + - ./acquis.yaml:/etc/crowdsec/acquis.yaml:ro + - logs-redis:/var/log/traefik:ro + - crowdsec-db-redis:/var/lib/crowdsec/data/ + - crowdsec-config-redis:/etc/crowdsec/ + labels: + - "traefik.enable=false" + + redis: + image: "redis:7.0.5" + container_name: "redis" + command: "redis-server --save 60 1" + volumes: + - redis-data:/data + networks: + - redis + +volumes: + logs-redis: + crowdsec-db-redis: + crowdsec-config-redis: + redis-data: + +networks: + redis: + services: