Skip to main content

No project description provided

Project description

Django Kubernetes Backend

A Django model backend that overlays Kubernetes (K8s) resources and Custom Resource Definitions (CRDs), providing an ORM-like interface for interacting with Kubernetes resources. This project aims to integrate Django's model patterns with Kubernetes' API, allowing developers to manage Kubernetes resources using familiar Django model syntax.

Features

  • Kubernetes Integration:

    • Supports both namespace-scoped and cluster-wide Kubernetes resources.
    • Configurable authentication using kubeconfig (from environment, specific file, or in-cluster service account token).
  • Model Design:

    • Uses a meta-class (KubernetesModelBase) to define models for Kubernetes resources, mimicking Django's model patterns.
    • Adds a KubernetesMeta inner class for specifying resource configuration (e.g. resource_type, api_version, kind, namespace, cluster_scoped).
  • Dynamic Field Generation:

    • Automatically discovers and generates Django model fields based on the Kubernetes OpenAPI schema.
    • Maps Kubernetes schema types (e.g. string, integer, array) to Django field types (e.g. CharField, IntegerField, JSONField

Example Usage

models.py

from kubernetes_backend.models import KubernetesModel
from django.db import models


class Pod(KubernetesModel):
    class KubernetesMeta:
        group = "core"
        version = "v1"
        kind = "Pod"

class Namespace(KubernetesModel):
    class KubernetesMeta:
        group = "core"
        version = "v1"
        kind = "Namespace"
        cluster_scoped = True

class Deployment(KubernetesModel):
    class KubernetesMeta:
        group = "apps"
        version = "v1"
        kind = "Deployment"
        schema_required = False

    # optional: specify fields directly rather than using automatic schema generation
    name = models.CharField(max_length=255)
    spec = models.JSONField()

class VirtualService(KubernetesModel):
    class Meta:
        verbose_name_plural = "virtual services"

    class KubernetesMeta:
        group = "networking.istio.io"
        version = "v1"
        kind = "VirtualService"

admin.py

from django.contrib import admin

from kubernetes_backend.models import KubernetesModel
from kubernetes_backend.admin import KubernetesAdmin

from .models import Pod, Namespace, Deployment, VirtualService

admin.site.register(Pod, KubernetesAdmin)
admin.site.register(Namespace, KubernetesAdmin)
admin.site.register(Deployment, KubernetesAdmin)
admin.site.register(VirtualService, KubernetesAdmin)

Project details


Download files

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

Source Distribution

django_kubernetes_backend-0.1.2.tar.gz (14.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_kubernetes_backend-0.1.2-py3-none-any.whl (16.3 kB view details)

Uploaded Python 3

File details

Details for the file django_kubernetes_backend-0.1.2.tar.gz.

File metadata

File hashes

Hashes for django_kubernetes_backend-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e0bd1273871402cb76b7c113ba6a12095a9a47befcef7cafde7e10230e4852cf
MD5 e5bc6cca31d6121a6d6e587792a1a78a
BLAKE2b-256 51e56db5d5e891579a5dc889ab1320abfc202fa5c399214f0c2c2ffd832b518e

See more details on using hashes here.

File details

Details for the file django_kubernetes_backend-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for django_kubernetes_backend-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dc573a91fc396b3afbd535a3ade8a3a6c5cff187f50edfb2d38d6c31126f2623
MD5 8d5632ccdfbbeb754fe9c3deafce0667
BLAKE2b-256 05b0544d3c9ca367c207c4f87c80509da688ff63861c346ce2b2b3f976d97832

See more details on using hashes here.

Supported by

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