 Okay, everybody so Let's meet our next speaker Mario Laredo. He's a software engineer at Red Hat who is committing for the open source project Eclipse Chair and he will tell us more about its integration with OpenShift Thank you, thank you for for coming Yes, so we're gonna see we're gonna talk briefly about Eclipse, Eclipse Che, actually Who has used Che here? Somebody Okay, yes, so so okay, so I'm gonna hopefully I've added a short intro Of Eclipse Che, that's that's a presentation that I already did Couple of months ago on that was the Che Conf so everybody Had used Che for it so I I removed this introduction this introduction the time but so I added here So we are gonna see the what's what is Che what it does how it works and so we're gonna see also the value of using Che with OpenShift and The other way around so what's the value for an OpenShift user to have Che integrated with OpenShift and After that we're going to see we're going to do a couple of demo to see what we are working on and We are going to have also to a little surprise at the end of the of the talk Okay, so what what is Che except it may remind you a Revolutionary people a person of history Of Central America, but actually the name doesn't come from from from there and it's It's a web IDE that has the the look and feel of the all common modern IDEs and That is based on container And we just released version 5.0 couple of weeks ago and the reaction was was Was enthused for the fact that we made it really easier now to install Che so to install Che the the just the only thing that you have to to do is to have a Container engine so Docker installed on your machine That's Docker now, but tomorrow will be able to to use OpenShift instead of having Docker will have as a prerequisite OpenShift But for now the easiest way to install Che is to have Docker and to run just a Docker run common like this one to to start it so let's Do that Can you see it? Yes. So the comment is Docker run eclipse Che We are gonna also use the nightly version So the one that has been built yesterday. So when you when you do that actually says it wants a comment so he proposed you some Some comments to the the usage of of the CLI and so we're not going through that Actually, I'm gonna use okay this comment here. So I've have some some options to to use a folder to sort my The data so the data of the workspaces and to also run it faster because we don't want to lose too much time here So once you do that you you you start a container That in a few seconds Starts Che actually what? Che eases another container that is who will run. So that's a container that will start a new container after some checks So what's the point of having a container that starts a container? Actually, the first container the CLI is going to check to do some checks What what is the operating system? We're using if we're running inside of yam or outside of yam If there is a firewall proxy, etc. And we'll do the configuration to start the check container with the right parameters So once it's finished We we can access to the IDE Using that your URL. So let's look at that. Okay, so we have We have Che installed here up and running And also you can see that he has loaded some data that I had some old workspaces that I was working on before so the Only the other interesting thing about Che is that it comes with some ready-to-go stacks. So you got Some ready-to-go Development environment for different languages and it comes also with some with some code examples So that you have already in in a few Seconds you can start a new project with some code that builds It can can be tested and so that's that's a that's a good way to bootstrap a project. So let's see that Here are we so we we can select the create workspace Button and we can select the existing stacks. So as you see there are a lot of stacks here What we can do is that we can Select the Java on centOS so and what's what's is happening here is that Is Che that is running in a container is going to bootstrap some new containers This container will be containers to be able to run to build the source code So in this case, we are going to use the Java workspace So it will be a container that comes with Maven with the genicate version 8 So everything we need to All the tools we need to do Java development Okay, she seconds so that's that's a That's an ID you have you have everything you can expect from an ID Like for example, so yes, we We have autocomplete the bug test refactor, etc, etc. So as you see, it's easy to start a new project And it's also easy and I mean you have also Advanced tools that you can find in desktop ID So let's let's do a sample. Let's try to debug an application. Let's see how it works. I'm gonna start a another container that were at a web application that will be More Interesting to the bug so I'm gonna restart it to restart this workspace So what it's doing now is it's creating a new container because every time it stops a container It's just this trial a container and when we need it again It just create a new container and it loads the data from the file system Okay, so if you are You probably already know that's the application that we are going to to the bag is the pet clinic application That's a sample that you can find on spring source website What we are going to test is we are going to To put a breakpoint on the service Implementation so we already have one what we are going to do is we're going to start Tomcat in debug mode, so we are going to We're going to To first the wall We're going to build and copy so from the source file We're going to generate the war file and we're going to copy it in the Tomcat folder That's a comment that already comes with That you we can define custom comments so for for this particular project the build process build the war file and copy that that Tomcat folder so that later on will be able to To execute it to test it and to debug it. That's just a Maven build Hopefully it's gonna it's going to finish Soon so just to to see something else waiting at the The computation and so What we can if we do a darker ps here We can see that we have so a couple of containers This one and this one. Maybe if you would use we could see that better that are These are Two workspaces actually the the two running workspaces first one and second one and this one is is The chase server so the chase server is listing on port 8080 and as you can see the workspaces are listening and a lot of ports, so they are Exposing ports 22 port 4401 This may so this is interesting because when we need to port that To to integrate that an open shift. We need to be careful because a container here Exposes need to expose a lot of ports and these ports are Our ephemeral ports so we currently we cannot Interact with a workspaces using port 80 So when we expose a service on open shift We need to export an ephemeral port and that's something that needs Privilege access for the container that needs so for the workspace container Okay, so the build has ended and we are able now to store Tomcat in the bag mode Yes, we need to find the port that maps port 8080 Tomcat so now if we just Yes, we should be so we we can we can debug with so now we can see that our application. We've started it Let's try to bag it We have set we should have set the break points. Okay, so we have removed that Let's set it again So we feel if we call fine owner Okay, so finally he stopped here so you can see that the The variable last name Here we can see you're all the variable you can see that the last name is Mario. So that's the value that we passed so actually So we can the bag as we can debug on other IDs It's certainly More the user experience is not the user experience that we are used to with Desktop ID, but we are moving forward every month. We are doing progress on that so the the project is evolving really really fast and So we are also going to see From the point from the point of view of open trees what we are doing Okay, so let's see now. We have seen what Che is what it does and why a che user should be interested in using open shift Well, first of all is because We have seen that Che the only prerequisite that shade has is Having Docker running But if you just need to run it locally, that's not that's not a big issue You can install Docker, but if you want to run it on your enterprise and you want to share Your development environment amongst all the developers of your enterprise You're probably want to secure it to have a Docker a secure Docker and open shift already comes with Secure a Docker and it comes also with Kubernetes that allows you to do containers or orchestration and With some runtime environments that will be useful for developers that are using Che to be able to deploy on a prod-like environment and For the orchestration part of you the the cool the cool thing is Having open shift it automatically makes che scalable This means that if you don't have an orchestrator if you don't have open shift or Kubernetes running here You will have all your workspaces that will run on the same node where your chess server is running If you are if you're going to use Open shift Your works your workspaces will be automatically dispatched on all the nodes of your of your Open shift cluster and you will be able to to scale and have a lot more workspaces running Other thing is that you automatically have high availability for che So if you have one node that need maintenance and you have to turn turn turn off You will be able to move all your containers So the chase server and also the workspaces to a new node of open shift and then turn off your your your node the node you want to update without losing Availability for for che So these are the benefits for a che user so a che user can be interested to have In on his enterprise and installation with open shift, but why an open shifts user should Be interested to have che So the first thing is that we have desktop ID ease We always need to install a lot every developers need to install a lot of stuff on his laptop so I need to install the JDK maven the IDE and this She will you every developer that will integrate the theme will need to spend some time installing all the dependency and The developer the the environment for one developer will never be exactly the same for all the developers That can be frustrating and in some project people can just avoid to run tests because they Don't know how to set up your their environment So if you if we have a centralized IDE, so this will automatically allow to have the same Version of the tools That will be always updated for all the team So everybody will be able to use exactly the same idea and the time to set up a new workspace for a new developer that is going to come will be close to zero and Chase also Can be considered as a the missing part of the puzzle because today with open shift We we have a platform that can distribute our application using with Docker images or With git repositories We can run our applications with some development some some runtime environments and we can scale them thanks to Kubernetes with Che we will we can also build them So we have an integrated tool to develop our application and to to build it So that's the the last part of the of the puzzle So now let's see how they they they work together So I've we have seen how to run Che from the command line Okay, so we we just need Docker so to Run it on open shift. We'll we'll just have to Define it a chip template So that's that's not really hard to do. We just have we we need to do to have a Privilege container that will need to transfer the application the chaplication will need privilege Permission to be able to run an open shift because When Che is going to start a new workspace, you will need to access the Docker API When you need to get the data from the file system It will need the access to a vote who are off spot volume When you need to communicate with the browser, you will need to open a port that is not port 80 or 443 So this for these three reason We'll need and to deploy a privilege application to 4ch, but That that's not a big deal. So we are going to to demo it Let's just stop The cha that was running on Docker and let's so now start it On open shift Okay, so I'm running everything locally. So I've got a mini shift here running with With a project that I call eclipse chain and I want to deploy a new application here, so I have already install my the template that will Allow me to deploy chair. So When I when I select add new add new application, I will find it. So I select it eclipse chair There are some Information that's all that that's a form that we we can feel with the configuration of of chair So we are going to take the defaults here and we're going just to select create So once we have done that We will have a new pod that is going to be deployed If we select it We'll be able to see The logs of the of the good the underlying container. So that's the Tomcat application that it's starting Our web ID. Okay, so it seems started So once it started We will be able to open it Here, okay, so it seems as the other Instance that we have we had started before but it now it's running on open shift. So it's a pod That it's running on open so the the problem now is that so the first thing that we would like to do is that When we're going to start a new workspace, we would like she to use the open shift API We don't want she to use the Docker API. So it makes sense since it's running on open shift that use that so what we have done since a few a few months we have been working on Removing so the need for the the Docker the Docker connector. So And adding the support for the open shift API. So we have re-implemented The Docker connector we have implemented for the the open shift API and So of the the version that it's running your locally is not already in the upstream project We can create a new A new workspaces that actually will be a new open shift pod So let's let's see it Okay, let's select this one. Let's create it. So once we we create that We should yeah, we should see that there is a new pod that it started. So we are actually using Open shift API here. We're not Talking with the Docker API anymore. We can group them together So that that will be exactly them The same stuff that we have some before So That's that's cool And what we are going to do now is so we have been working on that we have Open a pull request on the upstream project to integrate the support for open shift on on Eclipse chair and so what we are going to do now We have been the the review of this pull request has lasted a couple of week now and So Yesterday we we got the approval. So we are going to just Merge now the the pull request. So since Tonight the next the the nightly build of tonight will have open shift support for eclipse chair So this is the pull request as you see we we had got a lot of Discussion this is as these are that's a pull request that has been opened by by Ilya That is one of the redout developers that is working on shit. Okay So there is a check that it's failing but it's just bug on the On the check for the the IP validation the eclipse ID validation So what we don't have to make a mistake here or the wise will be Alex that won't be happy So I will rebase and merge Let's do that Okay So we we have finally merged that so what we have seen today will you will be able to to do that? tomorrow we have just using the The night and the nightly build of the eclipse chair image But we're not going to To stop here Because we we still need to to finalize the Open shift implementation. There are some Docker API that haven't been replaced For example the some API to build images that are inside. So we shape build Docker images So we are we are now this the last week We are working on that We are working also on removing the OS path. So we are going to use persistent volumes and volume claims and We are also going to use to change the Architecture of the networking architecture of the workspaces so that they will use port 80 To communicate with with the browser So there will be just one port that will be exposed and so that will be will allow Che to be run behind firewalls and With with open shift without without privilege So this is the team actually I think that it's there are a couple of people more that I Need to update that but We are we are growing and we need more people. So if you're interested just you can you can ping us and I've I've also added some some links. There is a little link to the to the pre-quest If you're interested in what we what we are doing There is also a block pass from last year on the integration of open shift and and Che and So the the shade the template that the template that is that we have used to Deploy Che on open shift before that's something that's not on the upstream project yet. So you the the this This Jason file is not yet on the on the on the upstream project because what we want to do is we want to extend the CLI that we saw Before so we will be able to to like use a flag When we start it like start on start dash dash open shift and it will deploy that on a on Open shift instance using the template to deploy Che Okay, so that's it if you have any question. Yeah. Yeah, exact. So Yes, so the question is what what does the integration means in Respect respect to the poor request that we just merged Let's let's just see that Because what we our margin is exactly the same code that I'm running now so we can we can see from the Year we can just have a look to the service So you see all the services so these services Is created with all these port exposures. So this is automatically done for from the code that we have so all this is so we create a deployment config service And Yes, and and and the route to So probably what we saw the next step will be to have a different route for every workspace and And so to to avoid exposing ephemeral ports Yeah No for yeah, we're thinking about that, but you probably need what you need to do today is you have to integrate with some kind of reverse proxy to put in front of that like e-clock or engine x so but there is on on the the The upstream project there is no support for authentication now. So but that's something that's a good question That's absolutely something that we want to want to address. But first of all, we want to be able to run Che as a completely Non-privilege application on open chef. That's the first thing we need to do Yeah, yeah, so the question is how Are we dealing with persistence? for The workspaces so if we switch if we turn off if we destroy Che now So the pod etc. And we were started we will find again all the All the workspaces that we had created before We are using now. We're using a spot Volumes so we should see that here. Okay, so you can see that we have all these volumes Event we want to so one of the three point that we want to address in the in the next week, so it will be probably at the end of the month or Of this month or the end of February of the beginning of March is to Have a second for request That will remove the need of the OSPAT and will be using So the persistent volumes to do so and and remove also the Volume for the Docker socket, so that's something that we still need because we haven't implemented all the Docker API We have we haven't removed the need for all the Docker API So we're going to remove that as soon as we have implemented All the open shift connector and we're going also to use persistent volumes for the workspace data so that Because the the drawback with OSPAT volumes is that you need to Run Che on one host because OSPAT is tied to one or so it doesn't make it scalable yet As soon as we use persistent volumes We we really can run it on the cluster and so it will be Exactly so the question is if there is a plan to to distribute Che as an open-shift application with with the template so yes the the the answer is yes, so the we have a We have a task that we should start working in In the next weeks that will extend the CLI that we just did we saw before So that's that's something that is in the upstream project So currently what the the upstream project does is when you do a Eclipse chase start it creates a Docker compose file on the fly and Run a Docker compose So that's how it works. So what we we are going to do We are going to extend that and we're going to generate a che template for open shift with with the parameters based on the current configuration instance of Che and We're going to deploy it so we we already have some script to do that So it's just a matter to include that and merge that integrate that on the upstream project CLI so yes the question is we we're going to have it have it really soon And we we need it because it makes easy easy to deploy Che on open shift. So the question the question is our How much code is reused from the desktop IDE Eclipse IDE And if we can reuse plugins Unfortunately, not I mean we can't reuse plugin There are some some parts of Eclipse code that are reused but these are really tied to the Auto-complete or some function some feature of the of the IDE and the architecture is completely different We have a plugin system for eclipse Che to but that's not OS GI that not into do with With the desktop eclipse or unfortunately, we can't we can't reuse them Yeah No, there is no The question is the if there is a way to Have some workspaces that just a group of people can see and other workspaces That can be seen by other people. No now. There is no such a thing. So there is no authentication So there is no there is not there is not the Conception of a user inside eclipse Che So that's that's something that we we we cannot do but again if we put a rare sprox in front of that we can Filter the the the user So we can authenticate them and then filter what they can access Yes, and I mean if if you want to share your URL of the workspace that you are using you can do that So you can you can deploy? Che on on the cloud for example an open shift and then you can just say to somebody I've started working on that. Can you have a look at that is going to the your colleague is going to work on that and is going to Change some file and when you access the next time you're going to see the changes the problem is That's if you access together at the same time things won't work. I mean you are going to the the The Changes won't synchronize at the same time. So you will see later the changes of your colleague so there have been some work and there are some demo of patched version of Che that allows to do Remote pair programming so with two cursors so you can you can see the two as a as you when you're editing a Google Doc but That's hasn't been included on the upstream project yet because it like Doubles the size of the of the art of the chair artifact. So That's not something that we want to do yet So but eventually that's something that we were thinking about And yeah, that's that would be would be cool But now so what we can do you can share a URL of What you're working with but you can't access this together And if you share with somebody if you share this link everybody can be can access to To your workspace Okay, I guess Okay, thanks, so we'll have like a break of ten minutes and then we'll start the lightning talks for today Project So so it will be part of