Slide 1

Slide 1 text

Compose on Kubernetes Kunal Kushwaha @kunalkushwaha NTT OSSC

Slide 2

Slide 2 text

What is compose?

Slide 3

Slide 3 text

● Compose is a tool for defining and running multi-container Docker applications. ● Services and dependencies are defined in YAML file to configure application. ● Using single command, you create and start all the services from your configuration. ● Also works with swarm. ● Tool for developers. https://docs.docker.com/compose/ Diagram Credit : cloudacademy

Slide 4

Slide 4 text

Why compose?

Slide 5

Slide 5 text

● Provides the flexibility to use a project name to isolate the environments from each other ● Compose preserves all volumes used by the services defined in the compose file, thus no data is lost when the containers are recreated ● Containers which have changed are recreated, the containers whose state did not change remain untouched ● Support for variables in the compose file, we can define variables in a .env file and use them in the docker-compose file https://docs.docker.com/compose/

Slide 6

Slide 6 text

$ docker-compose up -d $ docker-compose down $ docker-compose start $ docker-compose stop $ docker-compose build $ docker-compose logs -f $ docker-compose scale =4 $ docker-compose events $ docker-compose exec bash Docker compose commands

Slide 7

Slide 7 text

Why Compose on Kubernetes?

Slide 8

Slide 8 text

● The Kubernetes API is amazingly general purpose – it exposes low-level primitives for building the full range of distributed systems. ● ● There are more than 50 first-class objects in the latest release, from Pods and Deployments to ValidatingWebhookConfiguration and ResourceQuota etc ● ● This can lead to a verbosity in configuration, which then needs to be managed by you, the developer. kubernetes APIs Compose on Kubernetes ● Compose meanwhile isn’t an API but a high-level tool focused on developer productivity ● For the common case of a set of interconnected web services, Compose provides an abstraction that simplifies Kubernetes configuration ● For everything else you can still drop down to the raw Kubernetes API primitives

Slide 9

Slide 9 text

Architecture & Implementation

Slide 10

Slide 10 text

- Adds ‘stack’ object by extending kubernetes using API Aggregation. - As ‘stack’ object is native, can be integrated with other k8s tools like skaffold.

Slide 11

Slide 11 text

Efficiency of Compose?

Slide 12

Slide 12 text

$ git clone https://github.com/microservices-demo/microservices-demo.git $ cd deployment/kubernetes/manifests $ (Get-ChildItem -Recurse -File | Get-Content | Measure-Object -line).Lines 908 $ cd ../../docker-compose $ (Get-Content docker-compose.yml | Measure-Object -line).Lines 174 More than 5x code is reduced in compose as compared to raw k8s object description

Slide 13

Slide 13 text

Docker Desktop (Windows/Mac) ● Installed by default. Deploying Compose on Kubernetes ● Guide for Azure AKS. ● Guide for GKE ● Guide for Minikube. Try compose-on-kubernetes !

Slide 14

Slide 14 text

Demo

Slide 15

Slide 15 text

Thanks ありがとう