Skip to main content

Django Allow Health-Checks

Background

Kubernetes, load-balancers and other PaaS have a concept of a health check. These are simple GET requests against an endpoint that you define which tells the orchestrator if a web worker is healthy or not. The problem is that these requests come from within the same network running your app using an non-deterministic hostname or IP address. So instead of making your allowed hosts wide open with ['*'] (to allow any requests to get by), you can simply install this package to allow these requests to occur without introducing more technical/security risks then necessary.

For example, given a kubernetes deployment with the following details:

#... other details
      containers:
      - name: app
        image: registry.gitlab.com/username/cool-app/app
        livenessProbe:
          httpGet:
            path: /health-check/
            port: 8000
            httpHeaders:
            - name: X-Health
              value:  XYZ-123
          initialDelaySeconds: 3
          periodSeconds: 60
        imagePullPolicy: Always

You can allow these requests to get by by simply adding this to your settings

HEALTH_CHECK_HEADER_VALUE = 'XYZ-123'

Setup

Install django-allow-healthchecks

pip3 install django-allow-healthchecks

Add the class to your middleware, ideally first in the list

MIDDLEWARE = [
    'django_allow_healthchecks.middleware.ByPassForHealthChecks', # <~ Add this 
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

Assign your magical header value

HEALTH_CHECK_HEADER_VALUE = 'XYZ-Health'

Notes

Python3.5+ + Django 2.2+! Get on board!!

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-allow-healthchecks-0.1.4.tar.gz (5.7 kB view details)

Uploaded Source

File details

Details for the file django-allow-healthchecks-0.1.4.tar.gz.

File metadata

  • Download URL: django-allow-healthchecks-0.1.4.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.4

File hashes

Hashes for django-allow-healthchecks-0.1.4.tar.gz
Algorithm Hash digest
SHA256 1a680e82341e1e449849d244b0520c825763e149ec3a94fb10ca75bf0f58cece
MD5 faf09ac0cf03848676137e40d66ccd93
BLAKE2b-256 f330e10d6631007eccfa5f3e4e178fffa2e7e16a7d2edb696e47e75464b49db7

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.4 This release

1 file

0.1.3

1 file

0.1.2

1 file

0.1.1

1 file

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page