 Hello everybody. My name is Natale Vinto. I am developer advocate at Redatomage Shift and today I want to talk about CodeReady Workspaces, which is our in-browser IDE for rapid cloud application development. So I want to show you that CodeReady Workspaces can be used to enable distributed developer teams on the platform in multiple projects in a very faster way, support many deployment way, support also the disconnect installation and it is OpenShift native development tool. What do we mean for this is that you can have CodeReady Workspaces installed in OpenShift cluster in a very easy way and consumable by your developer team. So let's try it out from an operational perspective, from the ops perspective. We can log into the cluster as admin, to the OpenShift cluster as admins and we can prepare the CodeReady Workspaces installation for our cluster. It's very easy to do in this OpenShift for that five cluster. Picking from operator, have marketplace any operator of our choice that we want, but in this case we just want to install CodeReady Workspaces. CodeReady Workspaces we can just look for CodeReady Workspaces here operator, just install it for this demo it has been already installed. So you can review your installation in your installed operator in this case we just created this operator here and we created also custom resources for the CodeReady Workspaces instance. So very easy to install it, you just create this custom resources, you can drive the custom resources also from the UI or just drive them through the YAML file. So here in the spec side you decide which kind of authentication you want, the database side, the persistency type and the site of the workspace. Remember those CodeReady Workspaces are just put inside the Kubernetes OpenShift cluster and that is all add and developers start working from that. So the operator is in charge of installing everything automatically this for you, the result for it is this installation of CodeReady Workspaces. This is the topology view, if you see this is the code server with a database, a single sign-on with key clock, plug-in registry when we save the plug-in for the IDE then the def file, so those are the manifests for describing the workspace and the operator itself. The only thing you need to do is to give to developer team this URL, this route from the CodeReady Workspaces installation and in this example here I want to show that how it's easy to enable developer team. So let's let's imagine we want to enable a GitHub organization, in this case the Red Wine software and we want to enable only those people here accessing and working on CodeReady Workspaces in a multi-tenant isolated way, right? This is really simple in OpenShift because you can take benefit from the OAuth to authentication of OpenShift, so you can add as admin easily an authentication provider, identity provider from here, so you just have a GitHub authentication provider in this case and you can also select which organization you want to use. In our example here we are using the Red Wine software organization, so only this organization is allowed to access the cluster as developer, so we are enabling only those developer team and this is really easy to in fact as developer and we can demonstrate this straight away. As developer we can access the cluster, the OpenShift cluster with the GitHub integration, so we just access the cluster here and we can also access the CodeReady Workspaces instance, so if we go here we access CodeReady Workspaces and we go into the OAuth to authentication here, so we are authenticated, get it automatically thanks to this authentication and we can start coding straight away. So, let's pick our favorite programming language here, we can select from many of these, those are the runtime supported by the product here that we have, we can pick Java or .NET, C++, Node.js, Python, whatever we like, so for this example let's start from a Quarkus Java application. When you click here what happens under the hood is that you are generating a workspace pod that is creating for you all the runtime environment that we need and we can verify this also from the dashboard here, from the OpenShift dashboard, so as developer user we can also verify that we have something that is happening under the hood in our project that we belong, in this case this project has been configured automatically by CodeReady Workspaces, so some workspace is, some pod is creating here and some storage has been created automatically for us, so the CodeReady Workspaces server is creating the persistent storage, so the persistent volume to save our settings, our builds in the workspace and when this finish we will have a pod containing all our settings, so you can also monitor this from the developer console in OpenShift, this is a Mavin workspace containing a Mavin container where we can start coding and if you go back to the dashboard here you can see this look and feel very similar to Visual Studio because this is powered by Eclipse TIA which is the UI engine used by serving the container start coding in the in-browser IDE of CodeReady Workspaces, which upstream project is Eclipse Che, so this is the product around Eclipse Che upstream project, right? So let's start seeing the code here, we can start looking at the code, we can start exploring the IDE here, so if you see we have some bunch of container, those containers are the, for instance this is a Mavin container containing a Mavin command containing the Java compiler, the Java runtime and we have also some welcome intro that explain us how to use the Quarkus tool, so this is a Quarkus application. So let's start coding, here in this example we have already a rest service with a slash yellow path we can use to print something, I want to show you that you can pick one of these already available tasks and those tasks are being configured by the dev file, the file is the manifest descriptor for the workspace, so we can start testing our application right inside the workspace, so we are working only inside the workspace, now we are resolving, we are running the Mavin command to start the application, this is defined and also we have a pomxml in this case defining all the Mavin goals and what happens is when you start the process and you are in developer mode here in a Quarkus developer mode, you can access this embedded terminal here and you can access your web service, this route that you see here is also available outside OpenShift, so this is really nice because when you start coding you can tell people okay verify this web service and building and you are working only inside your workspace, remember you are not pushing anything to OpenShift directly, you are implicitly using this workspace on an environment reception for you by the OpenShift admins under maybe some quotas, some settings, some rule, okay now let's start coding, let's start doing our modification, let's say hello youtubers, for instance we do this change here and we don't have to restart anything, this is Quarkus right, automatically available our change, we don't need to restart anything, so we are okay with this, let's start also putting new content, I want to show you that we have also the language server, the Java language server in this case, if you pick another programming language you have the language server for that, so we start coding, we start saying anything, we want to create another sub path on the rest end point here and return something like another command, hey youtubers, so this is another path we are picking here, let's put some annotations, so this is a kept request and we want to produce, if you see this is auto-complete by the IntelliSense, we want to produce in the instance a plain text content type and we want also to change a little bit the path, so we are integrating this and we want to go to that slash youtube, so when you use this on the path that is going to be an annotation of course and you resolve your syntax here, you are ready to test everything, so we can test here as you know, you can do hello youtube and this is your change but also you can do from here, which is much better, so you can give this URL to your collaborator and start looking at this in order to try to do other things, so this is our one tire example with a Java application we are using, we are coding locally and after this, after we code locally, we test it locally, we can also build our application, so we can package the application and we can start providing the jar file, we did some modification here but we didn't really touch the test, so we can also test locally before pushing our code, we want to test and we want to ensure that everything is fine before releasing the code, so let's update this test here, we modified the string, if you remember from the beginning, let's add this to the test, so we save it and now we should be fine in releasing our jar file, we're pagging the application, running the maven command and when the testers are ready, we can start having our binary file that can be used, maybe can be used by, you know, we can push to some artifactory in nexus, so we can start some pipeline, so this is our one tire job we can example. Okay now let's see another workspace, let's go to the list here, we tried the one tire Java application workspace, now we want to try maybe a two tire, like a front end database, this is Node.js MongoDB is a good example, we can start from this getting started here, but I wanted to show you that you can also do by using the functionality of the dev file, so you can also customize those workspaces here, in fact if you go to those chat sample and the github repository, those repo contains all those examples we are looking here and you can also customize that, so what I did is forking one of these, then I create a dev file for it and I had this button here, this button will create a workspace using a functionality of code ready workspaces which is the factory, the factory is able to create your workspace, reading a dev file from this gith repository, so when you click here and it's super nice because you can give to your developer team just in the redmi file, just this button click here and it will create automatically the workspace with your customization, I wanted to show you how it's made, basically it's just you have to put the URL of the code ready workspaces, your code ready workspaces instance, factory is the web service used, then the parameter is the URL of your gith repo, so when you do this code ready workspaces it will create for you workspaces, reading the dev file, so this is the dev file we created for this purpose and we say please download from gith from this repository here, from this branch and add those plugins and use those container image, in this case is a node container image and a Mongo container image, so we have two containers in the same workspace and then we had some commands here, so your developer on team can just test, build your application from those commands, you can also add the command to deploy the application into OpenShift or to run for instance a tecton pipeline, you can take benefit from the tecton plugin inside code ready workspaces if you want to do it, but for this example let's have this workspace that we want to code test and then push into OpenShift, we start from this dev file, let's come back to our workspace, so if you remember we have our quarkus one already running, now we generated Node.js plus MongoDB, when everything is fine with the start of the container you can also verify from the topology view, so here we have another workspace, so another pod containing in this case two containers and a couple of routes here we can use to test our application and we can start looking at the code, doing our modification and actively start testing our application, so in this case in this example this is a Node.js application which is a guestbook consuming that MongoDB database, you can very easily verify this, if you in the wild the editor is loading things like an IntelliSense for TypeScript in order to set just the code as we seen for the Java part, we can explore the terminal, so we can access access to terminal, the Mongo terminal, so this is the container containing MongoDB and the Node.js one, you can go here and this is the Node.js container that will run the Node.js application, those are run tasks that you can run, for instance we want to resolve the dependency with npm, so the first thing we start here is an npm install, so this will resolve the dependencies and we are ready to start testing our application, so when the content is ready we can try to start our application, if you remember if the application opens a port you can have the internal embedded web browser here and you can all the nice things is that you can also try it out on the web browser and give this URL maybe to some of your collaborators, so you can say let's use this a lot from CodeReadyWarspaces, so this is writing inside the CodeReadyWarspaces MongoDB database, so you can give this to your collaborator and in order to verify that this is fine, staying in the same workspace, so you are not deploying anything to OpenShift yet. Let's go to the next step, so we want to add our modification, let's modify for instance this test here, we can say hello YouTubers, my YouTuber guest book, the modification is very, you can verify the modification straight away, so when you do your change you can verify this with the git editor, you can verify your, you can do your diff and if it's fine for you, you can add to the staging area, commit locally and when everything is good for you, you can also push to your origin, for instance here we're pushing to our repository, you can put your credential but also you can save those credentials if you want to use multiple time for sure, so now that we are fine and we are ready to, so our code is fine, we tested everything locally and it's fine, now we want to push into OpenShift, before pushing to OpenShift let's verify a little bit the code, so this is a Node.js and MongoDB, so we need a MongoDB to connect with, this is local to the workspace but we want some MongoDB on OpenShift, so let's verify the code here, we have some connection to MongoDB, what is the MongoDB URI, you can see the parameter, simple, sample, username, password, local hostname which is a service in the Kubernetes OpenShift world, so we can use those information to order our MongoDB database and we want just to focus on the code, right, we don't want to prepare any YAML file or make any Kubernetes things, we want just to code, let's try it out, first thing we need to do is to install the OpenShift plugin, so you can do the OpenShift plugin installation from two parts, so that is the plugin list here, you can see there are lots of plugins available, you can also add your own plugin and it's very easy to add those, let's say we want the OpenShift one, so we want to install OpenShift plugin, when you install it you have to restart your work spaces because it needs to be mounted and a refresh in this case the page, you can do by multiple parts, so you can do from that but if you go here to the workspace list for instance, you could also click in the workspace, here you have a view of your workspace, so you can see which project is using, if you remember this came from our dev file and you can also have the list of plugins, so you can pick your plugin from the editor or from the workspace list here and if you see we have added our OpenShift connector, we have the TypeScript and then Node.js, if you want to add another one just click here, push save and this is gonna be done at the same way that we have done before, so once our workspace is ready, so it has been restarted and everything is fine, you can start using the OpenShift connector, so the OpenShift connector, it's also mentioned here in the dev file now, so if we want to report this to our original GetRepo, if you remember we can also add it here, so we will have the OpenShift connector listed for instance has been added automatically here, so let's come back to our workspace, that now should be ready and we can start using the OpenShift connector, if you see the workspace is still running, we have the activation of the component, the TypeScript, YAML file, this is a welcome page, it comes from the redmi if you remember, automatically it's loading the redmi on the repository, our OpenShift connector here is connected to our OpenShift cluster and this is also the Kubernetes extension, so you can look on the cluster information when loaded, what you have to do here is login into the cluster, so automatically this is already logged into the cluster but it's using a service account, so we need to log in with our user that we want to use for pushing the code, so let's do it straight away, it's very simple, we log into the cluster and we give a token, where do you get this token, very simple, you get this token from here, so if you go copy login command top right, pick your favorite login authentication system, display token, so this is in our case it's our token, let's copy this one and let's come back to the editor and now we are logging into the cluster, so we can see all the project that we have here, let's create for this propose a new project, so we want to push our guestbook application in the guestbook app project, when you do this, of course there is an occurrence in OpenShift, so we created our project, now we're fine to push our code, remember we want just to focus on the code, we don't want to write any YAML file, maybe we don't know about Kubernetes, we want just to push the code, and as developer if I don't want to write Kubernetes file or somebody in the team didn't for me, I can be self proactive and I can use the self service way of order component into OpenShift, for instance this Node.js application connect to MongoDB, let's verify what it's doing, let's surf the code here, so it's connected to a MongoDB database which is using a simple user password and this MongoDB, this would be in the OpenShift word and the word Kubernetes word, the service name, so those are the credentials and the information we want to use, we want just to deploy our Node.js application and consume a MongoDB database, very easy in OpenShift, you can order a database in self service way from the catalog, no tick and to open, no waiting time, just click here, the database, use this template, this is a persistent template, so you can put here your favorite, if you remember the information to connect, here I have already used it before, so those are available from the browser history, so I don't have to type them and you can create your MongoDB instance, what happened under the hood when you do this, remember we are developer, we are just focusing on the code, we want just to be proactive and self-service, we are done a database, this has created a MongoDB database on a persistent volume, with a persistent volume claim, so there is a dynamic binding service with the storage class that help us creating storage for us, no need to write YAML file, we just ordered some storage from the template we were using, when it is fine, when the MongoDB application is fine, then we are ready to consume it through our application and how to do it, very simple, we go back to the OpenShift plugin connector, here we can create a new component, so this is a connector that help you creating your application, creating the container automatically from you, from the code, thanks to Odo CLI for developer in OpenShift, so let's decide, guessbook is the name of our application, you can tell to this plugin, okay create my container application from the Git repository, or from a binary file if you create an artifact, or from the wall directory structure, so you have just to tell which directory to work, if you remember here, we are in our workspace, we are using this Node.js application structure, and let's give a name of this, the component name is, the component name is the one we put, the component type is Node.js, let's pick the latest and the greatest version for Node.js, now we are ready to push this into OpenShift, so when you click here you're gonna push the code that would be built and merged inside a container inside OpenShift, this is totally transparent to you, this is the audio plugin, and you can have the list of your plugin available here, if you remember terminals, then you go to the plugins, this is the VS Code OpenShift plugin connector, and here we have an Odo which is the OpenShift CLI for developers, when you do this your code started merged into a container, then our Node.js code, and we are ready to consume it, nice developer feature inside OpenShift, you can also start grouping the application, so if we want to logical connecting this, this is just a UI thing, right, and we can do all these things, so those are logical connected to the guest book application, let's go back to the code, now we want to access our application of course, how to access it, inside OpenShift the way to access is through an OpenShift route, and very simple form the connector, new URL, let's call it guest book route for instance, sacred write node for this time, remember you have to push your change, so you do your Odo push, you are pushing this into the platform, now we have an accessible Node.js application, you can also add this connector which is logically linking the front end to the database, it's just a UI thing, when you click here, here we have our application with our modification, so let's leave another message, like here this is consuming the MongoDB database which is in OpenShift, no, so not anymore in the workspace, but we are working inside OpenShift, so we demonstrated, now it's easy with code ready for spaces, just enable team thanks to the factory and the dev file customization, then it's very easy to start testing locally, and also it's very easy to push inside OpenShift, so no need for knowledge of Kubernetes, no particular need for knowledge, advanced things on the upside, what you have to do is just access with your authentication integration, order some database for instance, push your application from code ready for spaces thanks to the OpenShift connector that you have also in other IDI, if you want to use it, and start testing your things, so very easy to start coding with OpenShift and code ready workspaces, so I really recommend you to test it out, the next step for you in this way would be to download for instance code ready containers, which is our our mini cube for testing things locally, and going to learn OpenShift.com to discover more OpenShift learning for developers and training, so thank you and see you soon for our next video, bye.