Deploy a Compose-based app to a Kubernetes clusterEstimated reading time: 2 minutes
Docker Enterprise Edition enables deploying Docker Compose
files to Kubernetes clusters. Starting in Compose file version 3.3, you use the
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 is called
Learn how to grant access to a Kubernetes namespace.
Create a Kubernetes app from a Compose file
In this example, you create a simple app, named “lab-words”, by using a Compose file. This assumes you are deploying onto a cloud infrastructure. The following YAML defines the stack:
version: '3.3' services: web: build: web image: dockersamples/k8s-wordsmith-web ports: - "8080:80" words: build: words image: dockersamples/k8s-wordsmith-api deploy: replicas: 5 db: build: db image: dockersamples/k8s-wordsmith-db
- In your browser, log in to
https://<ucp-url>. Navigate to Shared Resources > Stacks.
- Click Create Stack to open up the “Create Application” page.
- Under “Configure Application”, type “lab-words” for the application name.
- Select Kubernetes Workloads for Orchestrator Mode.
- In the Namespace drowdown, select “labs”.
- Under “Application File Mode”, leave Compose File selected and click Next.
- Paste the previous YAML, then click Create to deploy the stack.
Inspect the deployment
After a few minutes have passed, all of the pods in the
- Navigate to Kubernetes > Pods. Confirm that there are seven pods and that their status is Running. If any pod has a status of Pending, wait until every pod is running.
- Next, select Kubernetes > Load balancers and find the web-published service.
- Click the web-published service, and scroll down to the Ports section.
Under Ports, grab the Node Port information.
In a new tab or window, enter your cloud instance public IP Address and append
:<NodePort>from the previous step. For example, to find the public IP address of an EC2 instance, refer to Amazon EC2 Instance IP Addressing. The app is displayed.