Skip to main content

An opinionated way of deploying docker-compose to kubernetes clusters by managing them with a helm chart.

Project description

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 your docker-compose.yaml file
  • docker-compose-like features
    • kube-compose up => helm install/upgrade + volume create (pvc)
    • kube-compose down => helm uninstall
    • kube-compose ps => helm status
    • kube-compose logs SERVICE => kubectl logs
    • kube-compose exec SERVICE => kubectl exec
    • kube-compose restart SERVICE => kubectl rollout restart
    • kube-compose top SERVICE => kubectl exec pod -- cat /proc/*/stats
    • kube-compose stats SERVICE => kubectl top pod
    • kube-compose events SERVICE => kubectl events
    • kube-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 list
    • kube-compose template => helm template
    • kube-compose history => helm history
    • kube-compose status => helm status
    • kube-compose get WHAT => helm get WHAT
    • kube-compose rollback REVISION => helm rollback REVISION
  • additional features
    • kube-compose volume ... => manage docker-compose defined volumes as persistent volume claims
      • kube-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 version SERVICE [<newversion> | major | minor | patch] => like npm version but for services in the docker-compose.yaml
    • kube-compose port-forward SERVICE local:remote

Pre-requisites

  • kubernetes cluster
  • kubectl
  • helm
  • docker-compose

Installation

# install off of pypi
pip install kube-compose

# verify install was successful
kube-compose --help

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

# 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
# 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 if a change we made was bad with
kube-compose rollback optional-revision-number
# we can get information like the docker-compose.yaml that was deployed with
kube-compose get values
# we can diff our local docker-compose with that one with
kube-compose diff
# 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 

# remove it from the cluster
kube-compose down

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

kube_compose-0.3.4.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

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

kube_compose-0.3.4-py3-none-any.whl (29.6 kB view details)

Uploaded Python 3

File details

Details for the file kube_compose-0.3.4.tar.gz.

File metadata

  • Download URL: kube_compose-0.3.4.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.0 Linux/6.15.2-arch1-1

File hashes

Hashes for kube_compose-0.3.4.tar.gz
Algorithm Hash digest
SHA256 6a2a9024f9b6d452701117533435cfc67af86e9464d7081419eb00bc9dbff27c
MD5 58f74da29d019e54046c088b797b48da
BLAKE2b-256 b72e950bf8c2bf79eb4388dfe9a3a0ca6aa73801759987272e6b91060f3392d1

See more details on using hashes here.

File details

Details for the file kube_compose-0.3.4-py3-none-any.whl.

File metadata

  • Download URL: kube_compose-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 29.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.12.0 Linux/6.15.2-arch1-1

File hashes

Hashes for kube_compose-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 3caca438e37fc1f3276ca97113579286d62bd46bce9342a48d7a6e059b90793e
MD5 f254349d8aad61fad64778d2f6e52acf
BLAKE2b-256 62491b55bdbd8bf22240895acf13dc0f848fd0f1080c8c970a2f9bec4e4db8e1

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