Skip to main content
Help the Python Software Foundation raise $60,000 USD by December 31st!  Building the PSF Q4 Fundraiser

Kubetools is a tool and processes for developing and deploying microservices to Kubernetes.

Project description

Build Status Pypi Version Python Versions

Kubetools

Kubetools is a tool and processes for developing and deploying microservices to Kubernetes. Say that:

  • You have a bunch of repositories, each containing one or more microservices
  • You want to deploy each of these microservices into one or more Kubernetes clusters
  • You want a single configuration file per project (repository)

And you would like:

  • Development setup should be near-instant - and not require specific K8s knowledge
  • Deployment to production can be automated - and integrated with existing CI tooling

Kubetools provides the tooling required to achieve this, by way of two CLI tools:

  • ktd: generates 100% local development environments using Docker/docker-compose
  • kubetools: deploys projects to Kubernetes, handling any changes/jobs as required

Both of these use a single configuration file, kubetools.yml, for example a basic django app:

name: my-app

containerContexts:
  django_app:
    build:
      registry: my-registry.net
      dockerfile: Dockerfile
    dev:
      volumes:
        - ./:/opt/django_app

upgrades:
  - name: Upgrade database
    containerContext: django_app
    command: [./manage.py, migrate, --noinput]

tests:
  - name: Nosetests
    containerContext: django_app
    command: [./manage.py, test]

deployments:
  my-app-webserver:
    containers:
      uwsgi:
        command: [uwsgi, --ini, /etc/uwsgi.conf]
        containerContext: django_app
        ports:
          - 80
        dev:
          command: [./manage.py, runserver, '0.0.0.0:80']

dependencies:
  mariadb:
    containers:
      mariadb:
        image: mariadb:v10.4.1

With this in your current directory, you can now:

# Bring up a local development environment using docker-compose
ktd up

# Deploy the project to a Kubernetes namespace
kubetools deploy my-namespace

Installing

pip install kubetools

Developing

Install the package in editable mode, with the dev extras:

pip install -e .[dev]

Releasing

  • Update CHANGELOG to add new version and document it
  • In GitHub, create a new release
    • Name the release v<version> (for example v1.2.3)
    • Title the release with a highlight of the changes
    • Copy changes in the release from CHANGELOG.md into the release description TravisCI will package the release and publish it to Pypi

Project details


Download files

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

Files for kubetools, version 12.2.0
Filename, size File type Python version Upload date Hashes
Filename, size kubetools-12.2.0-py3-none-any.whl (51.1 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size kubetools-12.2.0.tar.gz (41.3 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page