 Okay, good afternoon. My name is Marek Libra. I am a software engineer at Red Hat and in my talk I will present to you how the mesh of virtual machines with other resources in Kubernetes can be visualized and so better understood and managed Something about me from the Most recent projects I am contributor of I would like to highlight three of them It's definitely the kubbert which brings virtualization to the kubernatis world or overt which enables you to run set of standard virtual machines in a cluster or cockpit, which is a nice-looking single server administrator application for Linux machines My talk will be about kubbert Most of you I believe most of you probably at least heard about it but pro forma It's an add-on to kubernatis bringing the capability of running virtual machines there It will be about okd or kubernatis So the way how to run and orchestrate virtual machines And provision them with resources they need and so it will be about coexistence of containers and virtual machines at the same level Their interconnection to build mixed workloads and provisioning them with resources in a consistent way Thanks to kubert virtual machines are first-class citizens in kubernatis and so they are treated equally with any other entities there Considering you have a cluster with kubert How can you access it as an administrator? The most obvious choice choice you have is the powerful command line hell in form of kubectl or oc commands which are mentioned throughout the documentation They are powerful they Enables you or gives you access to all the features your cluster can offer at least transitively They can be used in much bigger scripting as they usually are But at what cost? These tools were developed by developers for developers There's very thin line between advanced kubernatis user and and and developer If I remember myself coming to kubernatis for the first time I have been Using clinics for many years Developing in different languages for different kind of technologies from enterprise application development to data management from user interface to back end anyway, this was something yet something new for me and I came mostly from imperative paradigm to this declarative one I had to learn a lot about what everything I need to create here and there to achieve the most basic things with kubernatis And it didn't end with the first touch users repeatedly follow Same or similar patterns again and again to achieve their daily tasks and implementation of these tasks tends to be fragile thanks to the nature of kubernatis in terms of complexity And this approach does not scale well in common it departments of enterprises Uh from the human resources perspective Set like that. So what kind of other option you have to access your cluster as an administrator? You can use Another tool which is having your use cases in mind from the very beginning which is being developed With the design first principle And now I am talking about the web user interface which is being developed under the kubernatis project umbrella Uh, which is an extension to okd console for the virtualization view there Let's consider you have a cluster capable of running of something by the something i mean virtual machines What is the most obvious use case you have? You want to know What you have there Was it what is its status whether something is failing if so, what is failing? What can I do about it? What can I do with each particular entity I have there considering its state? How can you do that using standard tooling The first thing One of the first things you will learn from documentation Is the very easy Command to which is very easy to be issued OC kubectl get entities Is it what you asked for no it's just the list To get the more complex information You I asked for you need to query additional objects to pass through through the objects you have to to query them to pick particle bits of information there to put everything together And follow the lead to other objects to do the query sort of gripping there or or similar similar there and Put these bits together to Give you the information you you are looking looking for the very very basic one You will definitely need to understand the the naming behind How is it composed it's ever-changing You will definitely need to understand the structure of each object you you are querying because to find the proper information there to understand What phase the project you are Interested in is currently in what what is the processing actual processing happening Behind for this very moment So you you will you so you are able to follow the lead to query query it there You will definitely need to Understand how the mapping between the related objects Is set Sometimes it's only owner relationship Sometimes it's more complicated using labels or annotations. This is nothing standardized. It's Driven by the developers and it's set for each each entity individually There's there's no Clear system in that and it's it's based on how how someone did it So you definitely need to understand the structure You need to understand the names and how the links are are done And especially you need to understand how the back end works So you can you know how how and what at each particular time to query to get you to get the very basic information Same use case Unfortunately, it didn't Meet the most important part here Same use case different touring At the first glance in the web user interface. I'm talking about you got got the list of the entities Try to minimize that You will You will find The list of the entities at the first glance Their status. They are currently in Thanks to the nature of of web You can very easily intuitively follow the lead to underlying objects Where the actual happening is is At this very moment whether it's What kind the mapping behind what kind of object what kind of pot behind Is happening at this very moment? It's done for you automatically If something is failing you are directly navigated to the point where the the particle fail occurred So you can you you got the access to to the logs there You got access to the logs there And events and you can decide whether you should or can do something about it. Some some fails are tentative Some of them are permanent. It's up to you to to decide that of course you got From the kebab menu possibility to Get the list of actions you can do with each particular entity considering its actual state Of course, you can dig deeper to query additional additional details of each particular entity and follow the links Father you can by following the Following these links to You can Change the view the the ankle how you look at at your system Whether it's from the perspective of virtual machines or underlying pots or from from different angle of of nodes or any other related Objects which are there you can just just change it and see the mesh of the of the the same mesh just from the different point of view different use case You have a cluster capable of running something the virtual machines What is You will definitely want to be able to create that something the virtual machine How can you do that if you check the documentation? It's pretty simple process just two steps Create a yaml file apply the yaml file It's simple unless you start writing the yaml file to do that beforehand You need to understand. Uh, it's the same story for jason's doesn't matter Uh, if uh, if you uh beforehand you need to understand how the how the yaml files are Structured this this for this format has been created for mostly for automation For the tasks where human meets machine Not everybody likes it, but okay. It's uh Might be straightforward. Okay. You if you have no other choice, you will start like it As a daily task to write write that but later on you will definitely need to understand The structure of the object you are creating As it is a declarative way most you will spend most of the time Resolving the relations to other objects from storage from network and similar when doing that You will most probably at least at the beginning find out that you are missing bits of configuration in your cluster And uh to uh to resolve that you will need to create another objects there And same story again. You will need to understand the structure how to do do it do with there Uh, maybe after a lot of Some struggling you will find the beauty of sample application sample Definitions you will find a sample vm yaml file and do some tweaking there If doing this way, uh You you will probably not be You will probably not be sure that uh it meets your Real needs regarding the Intended workload, especially regarding the specifics of further parametrization dependent on on the actual load Same story Different tool You can leverage the knowledge of someone else in form of wizards the only Think you need to uh team to you need to know To create a virtual machine or other entity This way is uh Why what are you creating? Why are you doing so and what is the intended load or workload? Why you are creating that so provide some metadata name namespace where it will live in Uh templates i will talk about it later What is the source of the virtual machine where it will be booted from pixie boot url iso or container image What is the target operating system? This is pretty useful information for the back end how to set things properly not only on the kubernetes level, but On the quem level as well And something about the size Because you know what what will be there. So, uh, how how big the virtual machine should be? The the virtual machine will not if will not live in isolation So, uh Using wizard step steps, uh networking storage These parts are shared with other other Parts of kubernetes. This is fully used with pods When you're creating them. So once this is set for one it can be used by others Select the storage pvcs pvs Storage class which did not make it to this presentation Unfortunately, click click makes next create virtual machine and you will end up most probably with something what is runable intentionally the wizards were created Simple as possible, but still powerful enough. We are focusing on the 80 percent Once the virtual machine is created The object for that You can tweak it further. There is already some edit functionality implemented to To modify particular bits of that If we are still working on adding more functionality in this manner if it is not Good enough for for your particular use case. You have still the fallback to edit the ml files there from the from the user interface Templates Another concept how to use your life with creation of virtual machines It's a Pre-definition prescription how the virtual machine should look like it comes with Metadata it it can be created with the same Wizard as Virtual machine or very similar to to that You provide the metadata the load and what will be what will be there? Uh networking and storage as well And once you have created such a template You can you can reuse it. I'm going back To create virtual machine wizard. Uh, you can use it. Uh use it there And all the data will be copied through and uh you You can uh easily use it Discs networking Is made to make possible So discs are cloned so multiple virtual machines are Can be created and executed simultaneously from a single template As I mentioned before, uh, not As I mentioned before, uh, nothing lives in in isolation. Uh, neither pots or virtual machines Uh, especially, uh, virtual virtual machines So require other additional object storage network services. The virtual machine is exposing some port so it needs to be Covered by by a service. So it is accessible accessible from outside Config maps Secrets and so all these important bits I have there pages in the user interface Uh There is even a generic page for Generic custom resources or cc or crd's Which are not Covered by their specific Pages As I mentioned before, uh, processing of something complex like a virtual machine comes with With other Objects being created in the in the in the background And thanks to the nature of a synchronicity everything can fails at every moment And some failures are tentative some some of them are permanent Thanks to Proper use interface you can be easily navigated to the Particle part of the processing and do something about it if needed Uh Consoles uh yet another cool feature. I believe uh of the user interface you can As an administrator You can in browser access your virtual machines Recently there's a implementation for vnc or serial console If your guest machine is uh windows based there's rdp supported as well remote desktop protocol This is nice. This is working, but has its limitations Given by the by the browser if you Want access or need access to wider feature set Provided by your desktop You will definitely need a desktop based viewer application like remote viewer, but there are plenty more more others This is recently possible, but the desktop requires additional configuration We are intensively working on on Simplifying this task. So it will be possible to just per click to to end up with a window of the desktop desktop viewer and You can you can go from from there If you are interested We will we will be more than happy if you give it a try It's nothing complicated. It just depends on how you provisioned your cluster with cubit. How do you how did you provisioned? The cubit if you follow the recommended path means using cubit ansible project Everything will be there by default the cubit ansible takes care of Installation not only the cubit itself, but additional bits as well from networking from storage and and multiple more And putting that together If you decided to go the Harder way to do it manually by a plan starting by applying The cubit ansible file on your on your own you will need to install these these bits On configure them on your on your own as well Including the web user interface for that reason There's created operator separate project on the github Taking care of installation or reconciliation and configuration of the of the web user Web user interface application. The only thing The installation is pretty straightforward. Just check the readme file there There are copy paste instructions what to to call and then you will need to create a custom resource If nothing else at least provide the intended version of the web user interface We are willing to install and the operator will take care of that and reconcile to achieve the The goal Uh, there's already a walkthrough video available So without an installation you can get better feeling How does it behave and Not not what what's inside in in complexity, but at least the interactions how it is done If you want to stay in contact in touch, uh, I will be more than happy to To respond there's direct contact on me As as cubit we have a cubit dev google group mailing list Uh, if you are interested in additional White and deep details about cubit itself The home page is good starting point and the application I was talking about Its home page is on on github on this very first link That's all from me Any questions, please