Now check on true as comparison output, then PASS, if anything else just fail on it. This avoids all the false positives. |
||
|---|---|---|
| cli | ||
| docs | ||
| examples | ||
| Godeps | ||
| pkg | ||
| script | ||
| vendor | ||
| version | ||
| .travis.yml | ||
| CHANGELOG.md | ||
| code-of-conduct.md | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| Makefile | ||
| OWNERS | ||
| README.md | ||
| RELEASE.md | ||
Kubernetes compose (Kompose)
kompose is a tool to help users familiar with docker-compose move to Kubernetes. It takes a Docker Compose file and translates it into Kubernetes objects.
kompose is a convenience tool to go from local Docker development to managing your application with Kubernetes. We don't assume that the transformation from docker compose format to Kubernetes API objects will be perfect, but it helps tremendously to start Kubernetizing your application.
Download
Grab the latest release
Usage
Currently Kompose supports to transform either Docker Compose file (both of v1 and v2) and experimental Distributed Application Bundles into Kubernetes objects. There is a couple of sample files in the examples/ directory for testing. You will convert the compose or dab file to K8s objects with kompose convert.
$ cd examples/
$ ls
docker-compose.yml docker-compose-bundle.dsb docker-gitlab.yml docker-voting.yml
$ kompose convert -f docker-gitlab.yml -y
file "redisio-svc.yaml" created
file "gitlab-svc.yaml" created
file "postgresql-svc.yaml" created
file "gitlab-deployment.yaml" created
file "postgresql-deployment.yaml" created
file "redisio-deployment.yaml" created
$ ls *.yaml
gitlab-deployment.yaml postgresql-deployment.yaml redis-deployment.yaml redisio-svc.yaml web-deployment.yaml
gitlab-svc.yaml postgresql-svc.yaml redisio-deployment.yaml redis-svc.yaml web-svc.yaml
You can try with a Docker Compose version 2 like this:
$ kompose convert --file docker-voting.yml
WARN[0000]: Unsupported key networks - ignoring
WARN[0000]: Unsupported key build - ignoring
file "worker-svc.json" created
file "db-svc.json" created
file "redis-svc.json" created
file "result-svc.json" created
file "vote-svc.json" created
file "redis-deployment.json" created
file "result-deployment.json" created
file "vote-deployment.json" created
file "worker-deployment.json" created
file "db-deployment.json" created
$ ls
db-deployment.json docker-compose.yml docker-gitlab.yml redis-deployment.json result-deployment.json vote-deployment.json worker-deployment.json
db-svc.json docker-compose-bundle.dsb docker-voting.yml redis-svc.json result-svc.json vote-svc.json worker-svc.json
Using --bundle, --dab to specify a DAB file as below:
$ kompose convert --bundle docker-compose-bundle.dsb
WARN[0000]: Unsupported key networks - ignoring
file "redis-svc.json" created
file "web-svc.json" created
file "web-deployment.json" created
file "redis-deployment.json" created
Alternate formats
The default kompose transformation will generate Kubernetes Deployments and Services, in json format. You have alternative option to generate yaml with -y. Also, you can alternatively generate Replication Controllers objects, Deamon Sets, or Helm charts.
$ kompose convert
file "redis-svc.json" created
file "web-svc.json" created
file "redis-deployment.json" created
file "web-deployment.json" created
The *-deployment.json files contain the Deployment objects.
$ kompose convert --rc -y
file "redis-svc.yaml" created
file "web-svc.yaml" created
file "redis-rc.yaml" created
file "web-rc.yaml" created
The *-rc.yaml files contain the Replication Controller objects. If you want to specify replicas (default is 1), use --replicas flag: $ kompose convert --rc --replicas 3 -y
$ kompose convert --ds -y
file "redis-svc.yaml" created
file "web-svc.yaml" created
file "redis-daemonset.yaml" created
file "web-daemonset.yaml" created
The *-daemonset.yaml files contain the Daemon Set objects
If you want to generate a Chart to be used with Helm simply do:
$ kompose convert -c -y
file "web-svc.yaml" created
file "redis-svc.yaml" created
file "web-deployment.yaml" created
file "redis-deployment.yaml" created
chart created in "./docker-compose/"
$ tree docker-compose/
docker-compose
├── Chart.yaml
├── README.md
└── templates
├── redis-deployment.yaml
├── redis-svc.yaml
├── web-deployment.yaml
└── web-svc.yaml
The chart structure is aimed at providing a skeleton for building your Helm charts.
Unsupported docker-compose configuration options
Currently kompose does not support the following Docker Compose options.
"build", "cap_add", "cap_drop", "cpuset", "cpu_shares", "cpu_quota", "cgroup_parent", "devices", "depends_on", "dns",
"dns_search", "domainname", "entrypoint", "env_file", "expose", "extends", "external_links", "extra_hosts", "hostname", "ipc",
"logging", "mac_address", "mem_limit", "memswap_limit", "network_mode", "networks", "pid", "security_opt", "shm_size",
"stop_signal", "volume_driver", "volumes_from", "uts", "read_only", "stdin_open", "tty", "user", "ulimits", "dockerfile",
"net", "args"
For example:
$ cat nginx.yml
nginx:
image: nginx
dockerfile: foobar
build: ./foobar
cap_add:
- ALL
container_name: foobar
$ kompose convert -f nginx.yml
WARN[0000] Unsupported key build - ignoring
WARN[0000] Unsupported key cap_add - ignoring
WARN[0000] Unsupported key dockerfile - ignoring
Bash completion
Running this below command in order to benefit from bash completion
$ PROG=kompose source script/bash_autocomplete
Building
Building with go
- You need
gov1.5 - You need to set export
GO15VENDOREXPERIMENT=1environment variable - If your working copy is not in your
GOPATH, you need to set it accordingly.
$ go build -tags experimental -o kompose ./cli/main
You need -tags experimental because the current bundlefile package of docker/libcompose is still experimental.
Building multi-platform binaries with make
- You need
make
$ make binary-cross
Contributing and Issues
kompose is a work in progress, we will see how far it takes us. We welcome any pull request to make it even better.
If you find any issues, please file it.
Community, discussion, contribution, and support
We follow the Kubernetes community principles.
Learn how to engage with the Kubernetes community on the community page.
You can reach the maintainers of this project at:
- Slack: #kompose
Code of conduct
Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.
