Kubetools is a tool and processes for developing and deploying microservices to Kubernetes.
Project description
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-composekubetools
: 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
cronjobs:
my-cronjob:
batch-api-version: 'batch/v1beta1' # Must add if k8s version < 1.21+
schedule: "*/1 * * * *"
concurrency_policy: "Replace"
containers:
hello:
image: busybox
command: [/bin/sh, -c, date; echo Hello from the Kubernetes cluster]
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 (admins/maintainers only)
- Update CHANGELOG to add new version and document it
- In GitHub, create a new release
- Name the release
v<version>
(for examplev1.2.3
) - Title the release with a highlight of the changes
- Copy changes in the release from
CHANGELOG.md
into the release description - GitHub Actions will package the release and publish it to Pypi
- Name the release
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-13.9.6.tar.gz
(48.2 kB
view hashes)
Built Distribution
kubetools-13.9.6-py3-none-any.whl
(58.9 kB
view hashes)
Close
Hashes for kubetools-13.9.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e56345841f15556a9d5b93435b2383c87f10e59fad3738c408cea91d81ca1aed |
|
MD5 | 1b258d7de9c8b5373845f07ac1805f94 |
|
BLAKE2b-256 | 13c56f315808e8bdc65b22ab6105bfb145ff85c3f46c8170f8b1205765979a6c |