Skip to main content

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


Release history Release notifications | RSS feed

Download files

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

Source Distribution

kubetools-12.1.0.tar.gz (40.9 kB view hashes)

Uploaded Source

Supported by

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