Skip to content

kitconcept/cluster-purger

Repository files navigation

Varnish Cluster Purger

Tool to replicate a Purge request to all instances of Varnish in a cluster.

Supported Clusters

  • Docker Compose
  • Docker Swarm

Usage

Docker Compose

Add a new service to a Docker Compose:

  purger:
    image: ghcr.io/kitconcept/cluster-purger:latest
    ports:
      - "8000:80"
    environment:
      PURGER_MODE: "compose"
      PURGER_SERVICE_NAME: varnish
      PURGER_SERVICE_PORT: 80
      PURGER_PUBLIC_SITES: "['site.example.com', 'cms.example.com']"

This service exposes port 8000 on the local host (only for debugging purposes), and relies on the existence of another service called varnish.

To purge the /de path on Varnish, from another service in the same compose:

import httpx

response = httpx.request(method="PURGE", url="http://purger/de")

To purge the /de path on Varnish, from the host, use:

import httpx

response = httpx.request(method="PURGE", url="http://localhost:8000/de")

Environment Variables

Variable Description Example Default
PURGER_MODE Which type of cluster. Could be compose or swarm swarm swarm
PURGER_SERVICE_NAME Varnish service name in the cluster varnish
PURGER_SERVICE_PORT Service port 8080 80
PURGER_PUBLIC_SITES List of public hostnames to send in the Host header "['site.example.com', 'cms.example.com']"

OpenTelemetry support

This tool has OpenTelemetry support built-in. To use it, set the following environment variables on your service definition.

Variable Description Example
OTEL_EXPORTER_OTLP_ENDPOINT OpenTelemetry endpoint http://192.168.1.1:4317
OTEL_RESOURCE_ATTRIBUTES Set attributes for OpenTelemetry, i.e. service name service.name=cluster-purger
OTEL_DEBUG Dump OpenTelemetry traces to console instead of sending it to the server True

Credits

kitconcept GmbH

License

The project is licensed under MIT License

About

Purge multiple instances of Varnish inside a cluster

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 3

  •  
  •  
  •