 Awesome, so this talk is about making Kubernetes simple for developers and yeah, this is something about me. I work at Red Hat as an interpreter for introducing me and also contribute to compose, open compose, Kubernetes and sometimes OpenShift and yeah cool. So I just want to set a stage and like I want to show off hands how many of you have used Docker, Docker compose. And Kubernetes know at least basics of Kubernetes. So yeah, then like you'll find out like what all things are there. So this is a story of a developer, a normal developer who does like application development for mobile backends and yeah. So like my manager goes to a conference and finds out that microservice is a hard thing and then he comes back and like it shows like we need to do everything in containers because that's the microservices and containers. That's that's that's the thing we're going to do. So so I start with like I start with this application which is so for for starting out with containers, I do Google search and the first thing that comes up is Docker because that's the most used container technology right now. And yeah, so I figured out Docker installation I do it locally and it's it's working. So what do I need from it for my application? I need a database right so so that so I run local commands Docker run and Docker and postgres because that's I could I could I could locally do the postgres client and so it's it's working fine right so and I start with local development like the local Python virtual Envy is there and the code is working fine my I can talk to postgres everything is going fine. But so yeah, so that I mean going going ahead that's that's not how you do containers containers is a packaging mechanism. That's that's that's how you will distribute your application. So I create a Docker file and so that everything all the code that I write will be into a container in itself and so so the code repo is more or less like a Docker file the application and the whatever that application needs. So so every time I write a code I have to do Docker build and Docker run and then curl on to some some some URL so that so that I can I can know whether it's it's running fine or not. And so so after that there is one more service so the application is growing I'm writing more code now I have two Docker files like Docker file dot the application that I had and the new one which is Docker file dot API server so so it's it's growing right now I have to run like six commands for one for starting the API server one for starting my application one for postgres then I have to curl on that and then fine everything is working fine so so yeah so this is like really complicated writing six commands every time so that's where Docker compose comes in it it it it helps you write everything into one file like this and then all all I need to do is do a so so once I add the Docker compose file like this where I have specified what ports are there what volume mounts I have to do what the ports are what Docker files everyone is going to consume so I so now I have two Docker files for each service and Docker compose file and so this is all I need to do Docker compose up and curl on that thing so so yeah everything is going fine I'm happy like things are working but like how long this is this is good for local development now I want to take it to a production like system so what do I need to do for it like I need I need something that will take care of all of these containers running all the time so so yeah more more Google search and it leads to me it leads to something called as content container orchestrators but like what is container orchestrator like it it will so it says like it will keep them running all the time but like yeah it's it's so so much things so much confusion like you have Kubernetes then there is OpenShift from Red Hat or something and then there is Docker swarm and there is Mesos marathon and like all these things right like I mean I am a developer what all things I should learn but then yeah that's where since I am already using Docker compose I see that like Docker swarm is first thing I could use because I could directly I could directly give the Docker compose file to the swarm and then maybe it will run but also reading more I find out like I'm doing bills locally but since doing you're doing bills locally the cluster might not find how to do the bills I see that I have to change some things in the file Docker compose file I cannot use it as it is I'll have to like remove the build and make sure I have a container registry where I'm pushing it and and things like that so also then yeah reading more I find out like Kubernetes is more robust like it has more community and it comes with the Google's whole experience of running containers for more than a decade now and like lot of other companies are putting their efforts into it and yeah as you can see it is like it's starred and all that thing and it has huge community behind it so yeah why not like I try I go and find out why not explore this technology because it's exciting right like a lot of contributors are there a lot of everyone is talking about it everywhere everywhere you go so yeah what is this Kubernetes so this is what you get when you see a Kubernetes one-on-one talk like you are explained that there are so many components in it there is a master there is there are nodes and then master and bunch of servers even nodes those are serving your containers will also be here some kind of server and in cubelet so so it's it's it's a it's a complex big system and and then Kubernetes in itself comes with a lot of new things like there is parts there are services then ingress and replica sets and there was a application controller and now you use deployments and stuff like that so there's there's lot of things going on at the same time like what all things should I look at like I want to get my application running so so yeah and I already had this thing so like what do I do with this because and how do I get this thing to on Kubernetes on a production gear system like that and this is what I'm doing I'm banging my head because there is Kubernetes and it's so mind-boggling lot of things are going on right now and that's where compose comes in I do like so a few Google searches and then I find out like Docker compose is for you if you are developer Docker compose and it can help you get to the Kubernetes because it creates some it does some conversion magical conversion and I can feed it to Kubernetes and then it will bring up my application somehow so okay so I find this thing interesting because I'm not doing much and I don't need to learn much like writing all the configurations and the existing thing I had I could like feed it to Kubernetes so yeah so I had a sample application so this is a so I'm running a local cluster here just to show the demo and then it's a here I create a wordpress application a project in the in the in the cluster and then so yeah this is the Docker compose file it's it's just two services a WordPress and a MariaDB and then it has all the all the ENVs and the ports and the volumes and yeah so yeah I create a I create a directory and that's where I'm gonna convert those artifacts or create those artifacts out of and yeah so it basically generates all the all the artifacts that the Kubernetes needs like okay there is service there is deployment and then there is there is a persistent volume claim so that I could like the database could have a persistent storage for it and yeah so I just feed it to the cluster and so basically this is running in a in a in an OpenShift cluster which is basically more or less a Kubernetes thing and yeah so I see that the I see that the apps are coming up and like they start they start listening on the servers and yeah opening these things it's up so yeah that's the demo so yeah compose is quite helpful because it's generating configurations I don't need to do much I can still work with my Docker compose file the defaults it has taken are quite okay because it created a PVC which was like 100 MB so because and yeah you might not know you might not want 100 MB for the as a storage for your database and then like yeah it's it's good but it's working for me as long as I have some generic use cases but but my application is not just like two or three services it's like grown into many things now so that's that's where like compose starts like getting going bad because it's it's it assumes a lot of things like you cannot have service types defined and then you cannot do Kubernetes jobs or the secrets and the config maps things which come in Kubernetes are hard to get from from Docker compose and then the volumes info as I said it's just 100 MB so you'll have go manually and then edit that for the volume size and then the liveness and readiness things and then how do I put multiple containers into single part because that's a big thing because they the whole the entire unit the the basic unit in covenants world is part and it could run like multiple containers and like yeah generating generating templates directly so all these things so so like what what compose did is to retrofit the lot of things that were missing in the cover Docker compose and want and you want and wanted it to be generated in the into the Kubernetes they added a few things like they added their custom labels to expand the Docker compose Docker compose spec itself but yeah so it's okay it might not break your application but it's just that I'll have to add like more labels to run my application so yeah as I said job secret secrets and volumes and the ingress routes like that how do you how do you specify ingress or outs that compose was never created for a cluster application it was mainly for the developer who is doing local development on single machine where they could like directly host mount the local directory into the container or directly port map the container sport onto the machine and things like that with cluster everything changes right it's not one machine where one container is running the container could run anywhere it could you don't you never know so where do you hit it but things like that like star started creating a gap in there and yeah liveness probe I said then service types and so yeah how do I get around it I I just generate it once and then start editing those configurations like yeah create once and then start maintain these things and then dump the docker compose file so so like it's it's not it's not that easy to do so so yeah so taking a so putting on the docker as a compose developers hat on so as a compose developer when we're adding these features so it was like it was tempting to extend the docker compose spec in itself but but as you see like it's it's not a good thing to do because it might break their application locally or might not add value to the existing thing so so we need something that's that's not docker compose and is native to the kubernetes world or very what kubernetes can can understand directly so yeah what's what's next that's where open compose comes in like open compose is a spec which is as easy as docker compose and and and kubernetes and native to kubernetes so all those gaps we found in docker compose while mapping it to kubernetes so that's that that's what we're trying to fill out like things like defining multiple containers in a pod defining defining something that should be exposed outside in the form of ingress then defining volume how much volume you want it to be and and things like that so so so and and and if you see docker the kubernetes artifacts they are more of they're more of like the like like how you how you want to deploy the application so so we don't want developers to do that we want developers to just define the application and that's it not how to define the application so so yeah docker open compose more of this looks like this it has like services and then we can define containers in multiple in a single service and then envs and then you can do volume mounts and stuff like that so it's we have tried we're trying to create the similar user user workflow with the open compose as well like we did with compose and yeah let's see a demo of a new project again so this is also running in a local mini shift cluster it's a locally running open shift and that's so that's the that's the file that's the same wordpress container but down below you can see there is volumes there I've defined size and all which I can modify which was not it was not possible even using docker compose and yeah similarly I'm creating configurations and yeah and then converting it and then feeding it to the feeding it to the kubernetes cluster similarly so the same workflow and the same application so yeah it's it's it's coming up in this you can see the you can see my sequel is come up and yeah so here here I'm exposing the web web into to the outside cluster so open shift has something called as open shift has something called as routes so using it's similar to ingress in kubernetes world and yeah that's how that's how you expose it to the outside world and yeah wordpress has come up and I can so yeah so this this thing that we are doing it's out there in the community we are doing we have proposed this thing to the people to the community on on kubernetes channels they know this efforts is going on they are also giving their feedback on this and yeah so this is a general chart of comparison between docker compose and the compose how it's converting and open compose of how the kubernetes features a map there so yeah these are some references and yeah I can take questions uh hi uh so I am in a sort of a unique condition that I have quite a few bare metal servers with me and I want to use kubernetes so what would be your suggestion from having those raw servers and getting a cluster running so how are your applications defined right now there or they are on the bare metal running in these are extra servers for me I want to add them to the whole cluster the rest of the cluster is VMware but I'm willing to move out of it so for doing that I would I would recommend like I mean you deploy it and write the configuration so compose might help you for generating those configurations as a first a first hand because writing those configurations by hand for the first timer might be very erasome and you might miss out on a lot of things but once you generate those configurations out of compose you can you have to add things like resource quotas and secrets and all those things by hand so just to clarify your problem is running kubernetes on the nodes that you have or running the application on kubernetes that you have because his problem is solving running the application on kubernetes both okay so there two different problems just to be clear one more we have question time for one more question then have some announcements and then we can obviously run for lunch one last time yes nice talk Suresh can we run kubernetes cluster on power pc architecture yes we can and you'll find some IBM people around in the in the conference as well they are doing a lot of work for making this happen would it be easy for to find the required bandwidth for power pc for kubernetes about binary i think the the distributions the respective distributions should create those rpms or devs or whatever and i think that should that should be possible okay thank you and so one more announcement we do a kubernetes meetup on 20th may we are doing a one-on-one hands-on on kubernetes so if you are new or you know someone who wants to learn rsvp at bit dot ly slash k it is 101 and yeah cool thanks Suresh just a reminder please fill up the feedback farms and hand it over at the help desk