⎈ k8s knowledge compiler

Translate a Docker Compose File to Kubernetes Resources [page]deterministic

tasks

What's Kompose? It's a conversion tool for all things compose (namely Docker Compose) to container orchestrators (Kubernetes or OpenShift).

More information can be found on the Kompose website at [https://kompose.io/](https://kompose.io/).

##

## Install Kompose

We have multiple ways to install Kompose. Our preferred method is downloading the binary from the latest GitHub release.

Kompose is released via GitHub on a three-week cycle, you can see all current releases on the [GitHub release page](https://github.com/kubernetes/kompose/releases).

```sh # Linux curl -L https://github.com/kubernetes/kompose/releases/download/v1.34.0/kompose-linux-amd64 -o kompose

# macOS curl -L https://github.com/kubernetes/kompose/releases/download/v1.34.0/kompose-darwin-amd64 -o kompose

# Windows curl -L https://github.com/kubernetes/kompose/releases/download/v1.34.0/kompose-windows-amd64.exe -o kompose.exe

chmod +x kompose sudo mv ./kompose /usr/local/bin/kompose ```

Alternatively, you can download the [tarball](https://github.com/kubernetes/kompose/releases).

Installing using `go get` pulls from the master branch with the latest development changes.

```sh go get -u github.com/kubernetes/kompose ```

On macOS you can install the latest release via [Homebrew](https://brew.sh):

```bash brew install kompose ```

## Use Kompose

In a few steps, we'll take you from Docker Compose to Kubernetes. All you need is an existing `docker-compose.yml` file.

1. Go to the directory containing your `docker-compose.yml` file. If you don't have one, test using this one.

```yaml

services:

redis-leader: container_name: redis-leader image: redis ports: - "6379"

redis-replica: container_name: redis-replica image: redis ports: - "6379" command: redis-server --replicaof redis-leader 6379 --dir /tmp

web: container_name: web image: quay.io/kompose/web ports: - "8080:8080" environment: - GET_HOSTS_FROM=dns labels: kompose.service.type: LoadBalancer ```

2. To convert the `docker-compose.yml` file to files that you can use with `kubectl`, run `kompose convert` and then `kubectl apply -f <output file>`.

```bash kompose convert ```

The output is similar to:

```none INFO Kubernetes file "redis-leader-service.yaml" created INFO Kubernetes file "redis-replica-service.yaml" created INFO Kubernetes file "web-tcp-service.yaml" created INFO Kubernetes file "redis-leader-deployment.yaml" created INFO Kubernetes file "redis-replica-deployment.yaml" created INFO Kubernetes file "web-deployment.yaml" created ```

```bash kubectl apply -f web-tcp-service.yaml,redis-leader-service.yaml,redis-replica-service.yaml,web-deployment.yaml,redis-leader-deployment.yaml,redis-replica-deployment.yaml ```

The output is similar to:

```none deployment.apps/redis-leader created deployment.apps/redis-replica created deployment.apps/web created service/redis-leader created service/redis-replica created service/web-tcp created ```

Your deployments are running in Kubernetes.

3. Access your application.

If you're already using `minikube` for your development process:

```bash minikube service web-tcp ```

Otherwise, let's look up what IP your service is using!

```sh kubectl describe svc web-tcp ```

```none Name: web-tcp Namespace: default Labels: io.kompose.service=web-tcp Annotations: kompose.cmd: kompose convert kompose.service.type: LoadBalancer kompose.version: 1.33.0 (3ce457399) Selector: io.kompose.service=web Type: LoadBalancer IP Family Policy: SingleStack IP Families: IPv4 IP: …(trimmed)

Sources

tasks/configure-pod-container/translate-compose-kubernetes.md · docTranslate a Docker Compose File to Kubernetes Resources

Related (12)

part_of {{% heading "prerequisites" %}}describes conf=1
part_of Install Komposedescribes conf=1
part_of Use Komposedescribes conf=1
part_of User Guidedescribes conf=1
part_of `kompose convert`describes conf=1
part_of Alternative Conversionsdescribes conf=1
part_of Labelsdescribes conf=1
part_of Restartdescribes conf=1
part_of Docker Compose Versionsdescribes conf=1
part_of Kubernetes `kompose convert` exampledescribes conf=1
part_of OpenShift `kompose convert` exampledescribes conf=1
part_of Warning about Deployment Configurationsdescribes conf=1

← all Docs