docs/ee/ucp/kubernetes/deploy-with-compose.md

93 lines
3.1 KiB
Markdown

---
title: Deploy a Compose-based app to a Kubernetes cluster
description: Use Docker Enterprise Edition to deploy a Kubernetes workload from a Docker compose.
keywords: UCP, Docker EE, Kubernetes, Compose
redirect_from:
- /ee/ucp/user/services/deploy-compose-on-kubernetes/
---
Docker Enterprise Edition enables deploying [Docker Compose](/compose/overview.md/)
files to Kubernetes clusters. Starting in Compose file version 3.3, you use the
same `docker-compose.yml` file that you use for Swarm deployments, but you
specify **Kubernetes workloads** when you deploy the stack. The result is a
true Kubernetes app.
## Get access to a Kubernetes namespace
To deploy a stack to Kubernetes, you need a namespace for the app's resources.
Contact your Docker EE administrator to get access to a namespace. In this
example, the namespace has the name `lab-words`.
[Learn to grant access to a Kubernetes namespace](../authorization/grant-permissions/#kubernetes-grants).
## Create a Kubernetes app from a Compose file
In this example, you create a simple app, named "lab-words", by using a Compose
file. The following yaml defines the stack:
```yaml
version: '3.3'
services:
web:
build: web
image: dockerdemos/lab-web
volumes:
- "./web/static:/static"
ports:
- "80:80"
words:
build: words
image: dockerdemos/lab-words
deploy:
replicas: 5
endpoint_mode: dnsrr
resources:
limits:
memory: 16M
reservations:
memory: 16M
db:
build: db
image: dockerdemos/lab-db
```
1. Open the UCP web UI, and in the left pane, click **Shared resources**.
2. Click **Stacks**, and in the **Stacks** page, click **Create stack**.
3. In the **Name** textbox, type "lab-words".
4. In the **Mode** dropdown, select **Kubernetes workloads**.
5. In the **Namespace** drowdown, select **lab-words**.
6. In the **docker-compose.yml** editor, paste the previous YAML.
7. Click **Create** to deploy the stack.
## Inspect the deployment
After a few minutes have passed, all of the pods in the `lab-words` deployment
are running.
1. In the left pane, click **Pods**. Confirm that there are seven pods and
that their status is **Running**. If any have a status of **Pending**,
wait until they're all running.
2. Click one of the pods that has a name starting with **words**, and in the
details pane, scroll down to the **Pod IP** to view the pod's internal IP
address.
![](../images/deploy-compose-kubernetes-1.png){: .with-border}
3. In the left pane, click **Load balancers** and find the **web-published** service.
4. Click the **web-published** service, and in the details pane, scroll down to the
**Spec** section.
5. Under **Ports**, click the URL to open the web UI for the `lab-words` app.
![](../images/deploy-compose-kubernetes-2.png){: .with-border}
6. Look at the IP addresses that are displayed in each tile. The IP address
of the pod you inspected previously may be listed. If it's not, refresh the
page until you see it.
![](../images/deploy-compose-kubernetes-3.png){: .with-border}
7. Refresh the page to see how the load is balanced across the pods.