kube-compose
An opinionated way of deploying docker-compose to kubernetes clusters by managing them with a helm chart.
The CLI is intended to be easy to use for those familiar with docker-compose and includes some additional features. Basically all features expect you to have a docker-compose.yaml file in the working directory.
kube-compose init=> specify the helm release name/namespace in yourdocker-compose.yamlfile- docker-compose-like features
kube-compose up=>helm install/upgrade+ volume create (pvc)kube-compose down=>helm uninstallkube-compose ps=>helm statuskube-compose logs SERVICE=>kubectl logskube-compose exec SERVICE=>kubectl execkube-compose restart SERVICE=>kubectl rollout restartkube-compose top SERVICE=>kubectl exec pod -- cat /proc/*/statskube-compose stats SERVICE=>kubectl top podkube-compose events SERVICE=>kubectl eventskube-compose start SERVICE=>kubectl scale --replicas={compose_defined}kube-compose scale SERVICE=>kubectl scale --replicas={user_specified}kube-compose stop SERVICE=>kubectl scale --replicas=0
- helm-like features
kube-compose ls=>helm listkube-compose template=>helm templatekube-compose history=>helm historykube-compose status=>helm statuskube-compose get WHAT=>helm get WHATkube-compose rollback REVISION=>helm rollback REVISION
- additional features
kube-compose volume ...=> manage docker-compose defined volumes as persistent volume claimskube-compose volume create [VOLUME]=> create the claim(s)kube-compose volume rm [VOLUME]=> delete the claim(s)
kube-compose diff=>diff -Naur <(helm get values) <(docker-compose config)kube-compose drift=>helm template | kubectl diff -f -kube-compose version SERVICE [<newversion> | major | minor | patch]=> like npm version but for services in the docker-compose.yamlkube-compose port-forward SERVICE local:remote
Pre-requisites
- kubernetes cluster
- kubectl
- helm
- docker-compose
Usage
# use right away with uvx
uvx kube-compose --help
# install as cli with pipx
pipx install kube-compose
kube-compose --help
# install off of pypi
pip install kube-compose
CLI Usage with Docker
# Assuming your kubeconfig is at the default location ~/.kube/config
alias kube-compose="docker run -v .:/work -v ~/.kube/config:/work/.kube/config -it u8sand/kube-compose"
# verify install was successful
kube-compose --help
End-to-end Example with K3D
# launch a test kubernetes cluster
k3d cluster create -a1 -p "80:80@loadbalancer" -p "443:443@loadbalancer"
# one option for auto-creating Ingress resources from annotations on the deployment
helm repo add maayanlab https://maayanlab.github.io/helm-charts
helm install kubernetes-auto-ingress maayanlab/kubernetes-auto-ingress --set ingressClassName=traefik
# with one of the unit tests
cd tests/units/simple
# OR for testing the current source base
# alias kube-compose="python -m kube_compose -f tests/units/simple/docker-compose.yaml"
# start the docker-compose service(s) on the kubernetes cluster
kube-compose up
# check the status of the kubernetes resources
kube-compose ps
# check logs of a service
kube-compose logs test-web
# get into the service container
kube-compose exec -it test-web /bin/sh
# restart a service
kube-compose restart test-web
# see top processes running on the service
kube-compose top test-web
# see cpu/memory being used by the service
kube-compose stats test-web
# see any events that may have occurred for the service
kube-compose events test-web
# stop the service temporarily
kube-compose stop test-web
# start it back up
kube-compose start test-web
# scale the service up
kube-compose scale test-web=2
# we can see helm charts (like kube-compose deployed things) deployed to the cluster with
kube-compose ls --context k3d-k3s-default
# we can get the actual deployment kubernetes would use with
kube-compose template
# we can see what revision we're at/when it was updated with
kube-compose history
kube-compose status
# we can rollback (with optional version number) if a change we made was bad with
kube-compose rollback
# we can get information like the docker-compose.yaml that was deployed with
kube-compose get values
# we can access cluster services locally with port-forward hostport:containerport
kube-compose port-forward test-web 8080:80
# we can manage persistent volumes with the volume subcommand
kube-compose volume ls
# we can version image in the docker-compose
kube-compose version test-web 1.0.0
# we can diff our local docker-compose with the one that is deployed
kube-compose diff
# we can use drift to see if the deployment spec has been modified outside of kube-compose
kube-compose drift
# let's revert that change
kube-compose version test-web latest
# remove it from the cluster (with volumes, otherwise they stay)
kube-compose down -v
# remove test cluster
k3d cluster delete
Metadata
Release files for kube-compose 0.11.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| kube_compose-0.11.4.tar.gz | 19.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| kube_compose-0.11.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 56.6 kB
Release files / kube_compose-0.11.4.tar.gz
| Download URL | kube_compose-0.11.4.tar.gz |
|---|---|
| Size | 19.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
84a468b1be36e97d90c00b37484c34cc93de5dab6edc14bd3355185558b23226
|
|
BLAKE2b-256 checksum How to use checksums |
ad6d3bd48c354893aaeaf3fa5a1d79aae5464ae0dd059d6746f79fee183611e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.3 CPython/3.9.6 Darwin/25.5.0
|
Release files / kube_compose-0.11.4-py3-none-any.whl
| Download URL | kube_compose-0.11.4-py3-none-any.whl |
|---|---|
| Size | 36.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
78c7260c6a03aae3262652b2293dae6ddbbb98b83f18a5db4169067404699184
|
|
BLAKE2b-256 checksum How to use checksums |
79fcc743e7096f6b99f887d7513c3e5326e43e743328d21804eedff4265e84b6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.3 CPython/3.9.6 Darwin/25.5.0
|