 We are on our second to last session of the day. Hopefully you've enjoyed the sessions up until now and the keynote and all throughout the morning and afternoon, at least morning and afternoon here in the US in the afternoon into the evening in Europe. So this next session is going to be simplifying containers in Kubernetes on your laptop with Podman desktop. Stefan and Cedric will be presenting. So I'll turn it over to you guys and I'll let you take it away. Thanks. Fantastic. Well, cool, cool, cool. Thank you all for being here. Today has been super exciting with all the sessions that we've had, the great speakers talking about AI, ML, OpenShift, Kubernetes. And at the core of everything, right, is the basic fundamental of container technology and that's what me and Stefan are here to do today is to kind of talk about Podman, to talk about the newest tool, the newest development that is Podman desktop that Stefan has the pleasure of working on. And we kind of want to address this whole journey of simplifying containers in Kubernetes on your laptop with Podman desktop and kind of go through the process of going from a Docker file to an image to a container and then taking that container and actually putting that and deploying that onto Kubernetes. So we're going to kind of show that flow and we're going to break up this presentation half into talking a little bit about Podman, which I'm sure you already know about. And then we'll be talking about Podman desktop and delivering a demo. So happy to have you here. Please feel free to drop where you're connecting from. Myself, I'm out here in lovely California. Stefan, what about you? I'm not in France, so in Europe. Nice. A little cold over there, I bet. But yeah, feel free to let us know where you're from and then we'll go ahead and start up this presentation here in just a second. But yeah, just waiting for everyone to get in here. So and before we even begin, I'll introduce myself real quick. My name is Cedric Labyrin. Developer advocate at Red Hat, I cover all things developer tools like Podman, of course, but also Tecton, Odo, Argo CD, as well as OpenShift, of course. And I also work on some of the labs. So we've got labs on Podman that you can find at developers.redhat.com. slash learn, as well as other technologies for container fundamentals and more for OpenShift. And yeah, happy to be here. Stefan, how about you? Yeah. Yeah, thanks for having us today. And very happy to be here today to speak about Podman and Podman Desktop. I'm product manager. I'm working on various developer tools and I'm focused primarily on Podman Desktop at the moment. So happy to be here and join the cool party of Dev Nation today. Exactly. And you couldn't get a better lineup for this presentation. Stefan is the PM, of course, for Podman Desktop. So if anyone knows, you know more about it, it's him. So let's go ahead and kind of dive into what you all are here for to talk about Podman and Podman Desktop. So firstly, you know, what's Podman? I'm sure you already are pretty familiar with the project. And that's the most basic question. But before I want to get to what it is and the technology and some of the architecture, I want to introduce some of the fun mascots that you've probably seen before if you've worked with Podman and kind of give a little bit of background on the project. So Podman, it's a really, really cool and neat tool for working with containers as we see here on the bottom left or the bottom right, sorry. But it's for working with one or more containers and pods and Kubernetes concepts. So a group of SEALs, as we see here, we've got these three guys are called a pod. And this brings into the conversation the name Podman. What does that mean? Well, Podmanager. So managing multiple pods, managing multiple containers, images, volumes, networks, whatever it might be. And so there's these cool, cute graphics that you're going to see throughout this presentation. And of course, since this is Dev Nation Day, we had to give them some cool fedoras and some swag. So, you know, they're looking pretty fly right now. But enough about that, let's kind of talk about Podman. And Kevin, I do want to address your question. We can share this presentation with you so you can have all the contents and also share with you the demo resources if you'd like to check it out as well. But I also want to ask, before we dive into Podman, to kind of learn more about you guys and where you were at with containerization technology, I'd like to know, are you a beginner? Maybe you're just getting started. You're familiar with Dockerfiles. You can build images or maybe you're intermediate. You know, you're working with debugging containers. You're working a little bit with selecting the right base image for your images. Or are you an expert? You know, you're working with advanced container security. You're working with the multi-tenancy. And you're working with deployment of these containers into production, maybe on RHEL or something like that. Please let us know in the chat so we can kind of, you know, tailor this talk more towards your specific interest. And we'll give it just a second here. But, you know, are you a beginner expert or intermediate in the middle? And then we'll continue on from there and kind of try to tailor this presentation in that aspect. So we'll give it a second. And I mean, we definitely get a variety of different audiences when we do this presentation. So it's always good to know. But as that comes in, you know, we'll also be talking about Kubernetes. So whether you're a beginner with Kubernetes or, you know, more advanced with working with different resources, pods, deployment services, ingresses, we'll try to cover that as well when we actually get to the deployment on the Kubernetes. But let's go ahead and start in talking just a bit about what Podman is. So Podman is at its core, a CLI tool open source that manages container resources. So everything from the images to, you know, containers that are running processes of an image to pods working with these Kubernetes concepts to volumes to networks and more. So it's supported by Red Hat. And at first off, it is pretty lightweight. So there's no background daemon running these containers. What's happening is Podman is forking itself and that process is then becoming the container. So it's very small, very portable. We see Podman use in a variety of settings from on-prem to machines to the, you know, edge deployments where, you know, we can take advantage of some Podman capabilities like auto rollbacks and auto updates, which we'll talk about as well. Because of this daemon-less architecture, it's also rootless. So Podman is able to reduce the attack surface of security threats onto your system. You can build custom SE Linux policies. You can support seccomp profiles. You can leverage all these cool Linux kernel benefits for security. And a big thing is the multi-tenancy for enterprises that can't give their developers, you know, root access to do some of, you know, Docker's functionalities, you know, they can do everything within their username space. And so Podman has a huge advantage when it comes to security. And if you come away with anything from this presentation is that Podman is hardened by default, right? On the bottom left here, you know, Podman is very open source first. It's from Red Hat, you know, where we do everything in this open source fashion and culture, you know, it's no lock-in. And Podman desktop is really cool because it supports even Docker or Clolima as an engine. So it's really flexible for developers who, you know, need to either bounce between both and use these tools as they want. And it's also compatible. So based on the OCI, the Open Container Initiative, back in 2015, you know, all the commands that you're doing in Docker for a Docker run, Docker push, Docker pull are pretty much the same when it comes to Podman. It was kind of designed as a drop-in replacement. So all your familiarity as well as Docker compose support comes with Podman. So it's very cool because of this standardization that it's occurred. And I'll kind of demonstrate that Podman runs on any operating system here as I'm on Mac here in a second. But what happens when we're using Podman is it's setting up a Podman VM that uses Fedora to allow us to do all of our container actions, right? So this includes the pooling, the building and the pushing of our images, you know, the mounting of volumes, debugging our containers, pushing images to registries and also working with Kubernetes. So different Kubernetes resources like deployments and pods and being able to say create a pod within Podman and then export those Kubernetes manifest to be deployed onto a cluster. So there's a lot that you can do. And I just want to check out the chat here. We've got some intermediate beginner to immediate. We want to learn more about containerized databases. Fantastic. The demo is going to include a containerized version of Redis running in our two-tier application. So can't wait to show you that. A little bit about images, you know, these are just these essentially, you know, sorry, just Docker files that, you know, allow you to layer on your application from a base image, whether it's, you know, Apache or any other kind of foundation and then layer on what you need your code base, your different variables, parameters and then build that image to be ran as a container. So the container is just this running instance of an image sharing the OS kernel. So it's able to start up extremely fast compared to a VM and it's ephemeral. So we, you know, close out our container, we remove it and the data is gone. So this is a very, very cool concept for scalability being able to quickly bring up resources and scale them down as well. And then pods. So pods is a concept that we'll be taking a look at today with Podman desktop, which is, you know, a group of one or more containers that share the same storage and network that can talk to each other on local host and you can do commands such as podman pod create to create one, generate the Kubernetes manifest, or you could take a Kubernetes manifest for a pod you already have and play it directly on Podman. So it's pretty cool. But I do want to back up just for a second just because, you know, it's kind of important to explain how we got here in a little bit of the history of Podman. So red hat in general, when it comes to containers we've got this unique perspective where we kind of realize that there's no one size fits all solution, right? We need a Swiss army knife to be able to approach all the problems that we have with containerization technology and provide these different solutions in these kind of modular tools. So all the tools that we cover today, Podman, Podman desktop and we'll kind of introduce some of the others have open standards, there's open development, you know, Stevan's community on GitHub for Podman desktop, you know, you can create a PR you can, you know, create an issue you can talk to the developers it's very open the communication there which is pretty cool because it leads to more innovation, more interoperability and a better workflow in general when it comes to this. So you've got Podman and Podman desktop. Thanks Stevan for dropping that link in there that's where you can learn more about these different tools but you've also got Builda so say you're in a maybe a CI situation you're using Tecton where you want to build an OCI image well you can use Builda for that which is pretty cool. You could also use tools like Scopio to say I have an image on Docker Hub and I need to pull it down to a different, you know, private registry I can do that there without even having to download it to my local machine and then push it again or CRUN which is a OCI runtime the performance benefits there are pretty impressive if you want to check that out there but all of these are linked and we'll drop the slides for the link for the presentation here as well so you can check out these slides but go back quickly to the Podman 101s the most important things I want to emphasize are these secure rootless containers that are mapped on the user's name space which is pretty cool reducing that attack vector there's no daemon process because of this fork exec model there's the Kubernetes support because Podman actually came from Creo which Creo, if you haven't heard of it before is a Kubernetes container runtime and so when we were developing Creo we kind of, this kind of came from it Podman, what it is today and since day one, you know Podman is kind of focused on this rootless support and being container hardened, sorry, security hardened and then it's platform compatible so I'm running Windows today but if you're running Windows or of course containers are Linux so natively on Linux you can use Podman wherever you are but you're probably wondering yourself I've been using Docker before what's the differences between Podman and Docker and we get this question quite a bit and it really comes down to these container engine differences when it comes to architecture so here we've got Podman on the top and Podman is kind of implementing what's known as a fork exec model so container is a kind of fork exec model so containers run simply as child processes from the initial Podman CLI commands that you're typing in so there's no Daemon there's a container monitor here in the middle that's known as Kanmon which starts before each container and it stops after and it's just for monitoring metrics things like that and there's a system deintegration that's going on in the background for all of this so there's no Daemon process going on so these containers they're just running as pod processes you can even upgrade Podman and it's not going to interrupt some of your containers that are already running which is pretty cool and the differences between this and Docker are Docker's commands are kind of communicating through what's known as this client server architecture so the Docker client either it's Docker desktop or Docker CLI you're doing your commands from a rootless perspective but then historically due to kernel requirements you know there were these security implications for running the Docker Daemon as root so maybe if a container broke out you know it could run as root and that's a big security implication it's difficult to restrict that you could mount Docker Daemon access in containers for volumes and get full system access and it was kind of much more challenging to run it in this root fashion and you can run Docker in a rootless fashion you lose a little bit of functionality but I feel like it's important to know that but Podman it's you know big advantages it runs rootless by default and there's other differences if you check out this video on IBM Technologies Channel there's a really cool guy who made a... That's a cool video Yeah, it's a cool one It is a cool one about the differences and so definitely recommend to check it out if you want to learn a little bit more and then I'll kind of finish up talking about Podman when it comes to deployments and production, right? So we know that Podman it's very lightweight it's standalone and it's perfect whether you're a developer or if you're trying to put your containers into production and so I kind of want to talk about this new tool called Quadlet which actually allows you to do declarative Podman container deployment pretty similar to say Docker Compose or to Kubernetes manifest but natively for Podman so you can generate these system D these unit files that we see right here to kind of specify what image what volumes any other parameters and run that all through system D which is pretty cool you could also take advantage of things like if we're working with Podman in the edge auto updates and rollbacks while you know keeping high availability for our containers but that kind of wraps up sorry I had to speed through it but the intro to containers and Kubernetes and kind of how Podman as at its core as a CLI you know focuses on facilitating both of those now I want to hand it off to Stevan to kind of talk about the next step right you know working on these container workflows and moving to Kubernetes so Stevan thank you so much thank you very much and so yeah I think we've been discussing exhaustively about Podman and so you understood that it is a container on-drain for managing and running OCI containers on your environments but with Podman desktop we are trying to make running containers and working with Kubernetes easier for the developers and in fact from its inception Podman was designed with a keen awareness of the Kubernetes ecosystem and its prevalent role in the container orchestration landscape so in fact even the name of Podman desktop is derived from Podmanager so in this context Pod refers to the concept of Pod in Kubernetes so as a result you will see that what we try to establish is really making Podman and Podman desktop a fairly practical platform for developing and testing Kubernetes applications and bridging the gap between local developer environments and large-scale Kubernetes deployments and there's reasons for that in fact we believe that developer environments have become boost in practical and they lack of consistency with production environments in fact there are a lot of complicated setup to get a local developer environment up and running and your laptop naturally has limited resources compared to your production environments as well it lacks of consistency also because the way you are going to run things on your local environment are unlikely to be the way you run them on a live environment especially if you are targeting to run that onto Kubernetes or OpenShift in fact there's a lot more pieces at work in a production environment that are very difficult to reproduce on a developer environment so there's discrepancies in the way containers are getting created but also in the way we are creating composite applications in the way each of the containers are going to communicate between each other and in fact we all fight configuring a network between multiple services so to solve this we end up using tools different tools to group application together but in fact those tools are bringing you you in a dead end in the worst of the booth world where you need to then translate your application to be able to run it onto a onto a production environment so when you are targeting to deploy your application onto Kubernetes as a developer you are exposed to an additional complexity and an additional overhead and there's also a challenge with the skills as well and in fact if you take the tools and the different solutions that are used in your local developer environment you may be pulling images that are occurring from different sources which will have low to no security constraints and different different ways to create your composite application maybe you will be using a Docker compose but then when you want to go to the other side of the spectrum to production in fact you are asked to use a different set of base images you need to use Quay maybe or you need your images to be a rootless and then you have to under Kubernetes because that's the way you are going to package your application to run them onto on to production so there is a gap from to move from local to production and then there is another challenge which is how do I reproduce an issue which is happening on production into my local environment so all of this is creating an an adoption barrier of Kubernetes technologies and it's complicated to reconcile developer environments with the target production of our non constraints and in fact oftenly we can hear the ops are are getting burdened by having to convert the developer artifacts to run them on to production so that's that's really a challenge so for us on the next slide what we are trying to do with Podman Desktop is really providing a simplistic onboarding as you Cedric mentioned with Podman you can build containers you can run them locally and then you can run pods as well so you can create your objects that are going to be the the deployment unit of your application and run them locally exactly the same way then what you would do if you were going to target a Kubernetes environment so it's a perfect solution in fact to bring simplicity into and a pathway for the developer to get start with Kubernetes objects and with the paradigms of Kubernetes and then with Podman Desktop you can also go one step further you can then lean toward Kubernetes environment that you can spin up locally on your developer environment in fact from Podman Desktop you will have the ability to spin up a kind environment so for those who are not aware kind is Kubernetes running inside of containers or you also could use a mini cube as well so and you can connect to to different Kubernetes environment as well so that's really what we are aiming to do with Podman Desktop helping the developers into bridging the gap between what you are doing locally and the way you are going to run your application onto production and providing you a simplistic way to move from an application to containers and then to Kubernetes objects Pod services deployments and then test that into a Kubernetes environment but I guess that's the demo from Cedric no? Yeah I guess so I guess it is maybe we should show everything that we have been talking about all the way yeah as Devon mentioned from the beginning to you know actually deploying onto a Kubernetes cluster through the help of his fantastic tool and Teams fantastic tool Podman Desktop so this is great timing because it looks like we are about 25 minutes and we didn't want to do too much presentation so let's go ahead and hop over to my local development environment to show you all of this behind the scenes so I'm going to go ahead and hop out of here to my desktop where I can see you know a project that I'm working on and the project that we're actually going to be using with Podman Desktop here on the right so I'm going to go ahead and open up Podman Desktop here full screen so you can see everything maybe I'll make it a little bit bigger and here we are so this is Podman Desktop if you haven't seen it before as you can see we got a kind of intuitive interface where we can manage our containers our pods images volumes we can use extensions as well and we also have some other features like the kube config here on the bottom left where we can select Kubernetes context that we're working with that are loaded in from your local machine we can ensure Docker socket compatibility so maybe we're using extensions on VS Code that are tapping into the Docker socket we can do that there we can automatically update Podman as a container engine on our system which is pretty neat and we've got some more troubleshooting and tasks so we can see what's going on in the background when we're using Podman Desktop I also want to show you that you can you see the resources that Podman Desktop is using of course I told you before that we're using a Fedora VM that's running on our system that's able to manage these containers we can specify all of that here we can also create a new kind cluster which we're actually going to do a little bit later which is kind of signifying Kubernetes in Docker or of course here using Podman as a provider but you can select that we can connect to the developer sandbox you know this is the Dev Nation family here that we're a part of so we could use the developer sandbox that you can access on developers.red app and Compose Support which is a new effort that Stevan's team has been doing for supporting Compose files in Podman and we'll also take a look at that a little bit later if we're a little bit in a hardened environment we can set up a proxy we can set up a custom registry or use some of these default providers authentication use extensions that we already have here such as Compose Docker Lima Podman Sandbox or maybe we have an extension that we are already using with Docker desktop and we can just import that here because you know at the end of the day they're all based on this OCI compliance which is pretty cool and then other settings here that we won't take too much of a look at because it's time to go from the beginning of our examples so we've got essentially this really cool Python application and you know this Python application what it what it serves to do is just work as a kind of guestbook where we can refresh the page and see how many times the page has been visited which is pretty neat and we're going to be storing that inside of a Redis database for cache so we just have a hit counter here and so every time that the counter has been hit we're going to update the Redis database cache and as you can see we can connect to it here with Redis on port 6379 so we're going to set up both this container this application in a container and also the database inside of a container as well now if I wanted to kind of go ahead and start the application here we could do it with you know with Flask but we're not running a database either on my local machine maybe I'm a new developer to the project and I just started you know setting up my local environment and that's kind of where the fundamental concept of container comes containers come into being able to quickly set up a database or get this container application running on my machine that someone else has passed over to me so I'm going to go ahead and delete this here this is just some old containers that we had running an old pod we could either delete this or prune any containers that we're not using which is pretty cool and we've got this fresh blank state and so what I'm going to go ahead and do is build this image so we've got the Docker file here we're starting from the UBI which is Universal Base Image for Red Hat Enterprise Linux so we have all those security hard-end features compliance governance for Red Hat Enterprise Linux on this Python container which has all the libraries and runtimes that we need for this Python app we're copying in the code we're creating a new code work directory sorry we're putting in some environment variables copying in the requirements .txt just Flask and Redis nothing too crazy and we're setting up an entry point and so this entry point is essentially going to look for the host file for Redis and then import or export sorry an environment variable for this app host so that Python that this Python app can connect to it so all in all this is just our Flask application let's go ahead and build it from podman desktop so I'm going to go ahead and select the folder that we're working with so we've got this podman desktop demo I'm going to go ahead and call in the Docker file here or container file which one do you want to use and I'm going to give it a name Python app so I'll call it Cedric Python app so what we're going to go ahead and do is pull down this base image copy it down to our machine and it's going to create all the layers that we need so everything we talked about here exposing ports and making sure that this application when we run it can start up and start the sentry point to start this Flask server and I'll show it really quick as this is downloading the base image if I go ahead and open up terminal if we do a Flask run well let me cd into here um primary project okay cd front end all right cool if we do a Flask run you'll see that we can start up this server locally but you're going to notice internal server error where it can't connect to this Redis database so what we're going to do is we're also going to run that database containerized as well and so while that's still pulling down the base image I'll show you that we've also pulled down this Redis containerized database image so I'll go here quay.io slash centos oh that's MongoDB but we'll do Redis five centos seven to show that we're also using this Redis database that we're going to we've already pulled down the image and we're just going to run that as a container so and it looks like actually I already have a Python app that I've built from the Dockerfile just because it takes a little bit of time what we're going to go ahead and do is since we can use this image that's already been built we can see that some of the same instructions are already here such as the environment variables for this Flask app such as creating the work directory so I'm going to go ahead and use some of the tools in PubMed desktop such as being able to rename this image so I'm actually want to specify it for my container registry so that's going to be the Pyburn Python app so then if I change the name of this image just from PubMed desktop we'll see now it's quate.io slash cclyburn slash Python app I could directly push this you know to my registry share it with others so they could pull this down and run this same containerized application but the first thing I'm going to do is to start up the database actually so that we can pull in the host name for this and have this Python app connect to it so we don't have this error here that we have on the left side so I'll go ahead and stop that application we can go ahead and start this container so we've got this nice screen here where we can see a variety of different options such as the container name entry point command volumes you know as a database we want to be able to persist our data so we could specify a certain volume so that even if we stop this container we remove it you know we could start it back up with the same data on the database but I won't work with any of that but I'll show you any of the other settings here that we can also work with and let's go ahead and start this container so this is just Redis here so we've already got it running we can see any of the logs the Kubernetes YAML so if we wanted to you know directly just copy paste this and drop this into a Kubernetes cluster we could do that and we could also oh well it looks like we have a segmentation fault let me see what that might be from we could also do any kind of Redis CLI commands in here as well I might need to restart this here in a second one second y'all quite a lot of CentOS CentOS 7 all right one second let me try to I'm gonna rerun that um all right processing this password okay all right I also want to show when we were taking a look at the inspection that we can take a look at some of the metadata that this container provides right and so we could do this from Podman's you know CLI we could inspect some of the metadata do a Podman inspect the name of the container and then query for some of this we could do a grep or we could just do a you know control f look for the ip address here we have it and we're going to use this to connect our Python container to this Redis database container that we also have running so now we just have the Redis container I'm going to go to this Python app that we renamed here I'm going to also start this call it Python app we can see that already specify the entry point directly from our Docker file we won't do any volume but we will set up an extra host to append to the host file so we're going to call this Redis we're going to put in this IP address and now we've got both of these containers running right we've got the Python app and we've also got the Redis container and so we can try to go back in here still got a segmentation fault not sure why but if we try to use the terminal connection refused Stevan I'm not sure if you know what might be going on here we'll see if we can still access it from the Python container fingers crossed yeah otherwise I can probably run it you should need okay we'll see we'll give it a shot we'll give it a shot Python app has in its you know host file within that ephemeral container now has the the IP address of this Redis container fingers crossed to the demo gods for this one so we'll see if we'll see if we can open up here through this little icon the external route for this Python application and see if it'll run one second and yeah I might have to have you show this part of the demo because I'm having a little issue with with Redis here not connected one second something up with this container image if you already have it ready we can try this is the fun debugging part that you guys get to see maybe I could import a different version of Redis and we could do this really quickly up to you Stavon just I'm just cleaning if you need and I will be ready if you if you want but otherwise you can just maybe team your two two containers yeah I'm going to try just just the the vanilla Redis real quick from Docker hub and see if we can do that really quickly but if not no worries this is yeah the fun part about maintaining you know the versions of containers and everything so we'll see I'll pull this really quickly we'll try to run it again let's give it a shot okay so I'm going to stop this Python application in order to restart this Redis container so I'll go over here we've got Docker IO slash Redis the vanilla one we'll go ahead and start the container fantastic this looks a lot better right so what I'm going to do is I'm going to go back here pull the IP address for connecting from back here this Python application so we'll try it again Python app we'll add in the Redis host name start this container thank you isn't it I appreciate it fingers crossed guys definition family that now we'll open up the external link and fantastic so a little bit of real-world live-action debugging here that you guys get to see looks like well done thank you looks like we've got this connection into the container you know this Python app has the host name for the Redis container that we have we can see the logs just as we would when we were working on it in our local IDE but now in a containerized world you know now we can share this with other developers that we're working with within our organization we can see Redis you can check out the terminal here now if we do Redis CLI then we can you know do any kind of Redis commands hello hey definition and do get hello cool so everything's working how it should be we've got the containerized database it's completely ephemeral just for the demo but now we also have the application running here but this this is fairly simple right because we've got these two containerized applications and I think what we should do now is streamline this workflow and get these applications running onto Kubernetes so we've got this fantastic ability here that you can see in podman desktop where if we select multiple containers at the same time what we can do is podify this so create a pod with two selected items or whatever it might be and so we'll go ahead and select this we'll do DevNation pod we could select which ports we need to be exposed so obviously not the the Redis one and we can go ahead and create this pod so what it's going to be doing is we call it podifying but it's going to be stopping these running containers and restarting them with all of their settings in a pod that's running on the podman engine so here we go it's been running for just a couple seconds here but you'll see we have the logs from both of the containers we've got this Redis logs and we've got the Python app logs running now interlaced in the same kind of unit and we could take this and run it on Kubernetes which is pretty cool so we've got the Infrapod and the two containers we've got the Kubernetes manifest so I could drop this into my cluster and it would run both of these containers which is pretty cool and we can also I'll go back to the application on my local host I go on cool yeah you can see now if I bring this over here you know still run everything but now you'll notice that the containers aren't running anymore it's just the pod which is pretty neat and this is pretty cool right but we're running this specifically on podman as an engine right let's say I need to start testing other things I need to test services and load balancing and making sure that everything is connected right kind of solving the issues of working with a tool like Docker Compose where we're kind of blocked to going to Kubernetes and actually going directly to Kubernetes this is where I want to introduce you to our good friend kind so kind allows us to create very quickly a Kubernetes cluster within a container that we can then do all of our commands with so we can use kubectl to make these changes to test out things and pretty similar to Docker to Minikube you know it creates this local environment you can see that we're pulling down this version of Kubernetes so 1.27.3 we're preparing the nodes installing the control plane and bam just like that we've created this running Kubernetes cluster within podman which is or podman desktop which is pretty neat so you know we do kubectl get pods of course there's going to be nothing nothing there at the moment but if we go back down to our pods we click on this one specifically we can do a deploy to Kubernetes directly from here from the interface so we see the YAML that we were talking about earlier right about deploying this into a cluster and this kind of takes away the headache of actually having to do that because now we can specify our pod name you know create services to do any security context restriction we can expose this service so we'll do I think it's port 5001 right Stavon yeah probably I don't remember as when believe I believe so believe so no it's probably the other oops we'll give it a second when we can redeploy it but you'll see as this is going on we've got the containers that are creating so pretty familiar if you've you know been working with Kubernetes you know the pods are pending here in a second but they're first pulling down the images inside of this Kubernetes cluster that we have here so we can see that we've got this pod that is now being created you can see it's not ready just yet but we give it a little bit of time once it pulls down the images and we'll have that running locally which is pretty deep so we'll give it a second and you can also see you can manage all the pods here that have been created so we'll go back here give it give it here just to just a little bit of a second and while this is happening I also want to kind of show the developer sandbox where we can take this this kind of local environment we can do all the testing on it here on podman desktop and actually deploy this to a cluster so we could we could do that in a variety of different ways we could take our pod and we could deploy it directly just from the Kubernetes context that we have here so if we have a remote cluster that we're already authenticated with we could do that and that's pretty neat but if you don't have a remote Kubernetes cluster that you have that you're working with we've got this completely free one that you can use called the developer sandbox you probably DevNation family you probably used it before and so I'll open up the link here and this is just the shared Kubernetes OpenShift cluster that is included with your Red Hat developer membership completely free for 30 days and you can use this sandbox to do experimentation to test out things to deploy your applications because there's actually 14 gigabytes of RAM and there's 40 gigabytes of storage on this sandbox cluster that you can use I'll use the default name for it here and what we're going to do is we're just going to copy in the OC credentials so I'll also set it as the default and so here once the web console opens this is like any Kubernetes cluster we're just going to copy in the OC login token or the you know we're sorry any standard OpenShift cluster so I'll go here actually I'll open this up a little bit copy login command authenticate with developer sandbox and use this token in order to connect podman desktop to my remote cluster that I have here so now if I go back to this pod that we have here I could actually take it select this new developer sandbox context create the OpenShift routes as well and create this pod so you're going to notice here when we go back to the topology of my cluster that we have in this project now this new pod that's being created right that's containing both the Python application and the containerized database we can view the logs see that Redis is starting it's ready to accept connections we'll give it a second it looks like it's already running we can also open up we'll give it a second to kind of finish the routing but we'll be able to access the pod here or from the ports here as well so we'll give it a give it a second to finish creating those routes but yes that's kind of the flow from going from local testing here with this kind cluster that we have you know to be able to do a kubesio to get pods now this DevNation pod is running and we can work with it from there to actually taking it to an external you know remote Kubernetes cluster here and working with it adding you know if we already have a database running into our cluster whether it's Redis, MongoDB whatever it might be connecting it from there and doing all the cool Kubernetes you know abilities that we have on a cluster as well so that's kind of the quick flow that I have here there's also other really cool extensions that you can use such as being able to for example scan my image which takes a little bit of time so maybe we'll come back to it and Stevon I think you had a little bit of a demo you wanted to share when working with Minicube so do you want to do that I can stop sharing so yeah I'm going to share my screen now I think we need someone to validate the screen sharing I will yeah I'll let you know if I see it still waiting okay cool so similarly this is Podman Desktop but this is a slightly newer version than the version that said like weather weather running that's the one we are working on at the moment so as Cedric mentioned you have the ability to install different kind of extension within Podman Desktop and here we have a new one which is for Minicube so from the resource screen you can then create Minicube environment that you can be running in a container directly from Podman Desktop and similarly to Kain you can access your cluster you can get a terminal and you can also run directly kubectl common from from there actually not so that you are able to interact with your Minicube cluster directly from here and use it for development purposes there is one other extension that I wanted to show you is the extension for OpenShift local so if you are targeting to deploy your application on OpenShift you can actually spin up an OpenShift environment directly from Podman Desktop and use it within within Podman Desktop as well you will see the different pods you will see the different objects that you are deploying there as well and what is going to be very convenient is that if you are looking to deploy an image onto your OpenShift environment we are also going to have an image checker which is basically going to test your image and check if the image is going to be compatible in terms of security for running onto OpenShift so here you can see that this image that is coming from Docker Hub for Redis is having one fairly bad trouble which is the user is set to root and if you really want to deploy your application onto production you should probably not do that so this is what we are working on those are some of the capabilities that you will be finding in future releases of Podman Desktop which will really help you to transition your containers and your application onto a Kubernetes production environment so maybe I should get back to the slides is it okay for me if I should share okay so as a summary as a summary Podman Desktop is available for Windows, Mac and Linux and it will do the setup of Podman and all the different tools that you need in order to easily work with Kubernetes we have support for OCI registries as you saw during the demo the support for Pods the way it is built is that we have the virtualization stack which on Windows relies on WSL on Mac it is using QMU and on Linux it's running natively obviously and on top of that the desktop client is Node.js an electron application and the UI framework that we are using is Delrin and ZLat so that's highly productive technologies and pretty fun to work with but what is interesting and important is that everything is accessible inside of the UI so you can customize actions, menus, you can add tabs as I showed as I demoed for for the image checker so all of this is free to be extended and actually we already have a few extensions for Kain, for Docker, for OpenShift local MiniQ and all of this if you are targeting OpenShift so you have the OpenShift extension which allows you to spin up an OpenShift environment locally either one which is built with MicroShift or another one with OCP but you also have the support for DevStoneVox and now we have this OpenShift image checker as well that allows you to check the compliance of your image against visibility to run on OpenShift so what's next and how do we how to get start so on Podman you can go to the Podman repository on github.com.container.podman right now we are working on improvements for the Podman machine to support the native supervisors from Apple, Windows we are looking at faster container startup as well this is a strong requirement for edge devices and improving the support for Kubernetes ML as well on Podman desktop we are improving the onboarding experience so that it gets easier to configure your environment to run and run your environment locally get a Kubernetes environment setup we are also working on extending the support of Kubernetes objects in the UI today we have pods but we are adding a deployment services and ingresses and we are still working on improving the support of OpenShifter as well to get start it's easy on the web you can go to podman.io or podman-desktop.io on github it's easy as well it's github.com slash containers and slash podman and we have a lot of different chats available in the community so that you can engage with us we have desktop channels we are also on Kubernetes so you feel free to join the community and to ask questions and eventually to even contribute by showing how you are using the tool as well OpenShift Sunbox the developer Sunbox has we have been using during the demo it's available for free you will have a free account to try out OpenShift you will have a 14 GB of RAM 40 GB of storage so you can really get deep inside of OpenShift and discover the technology as well we are really right up against the end here at a time we will have to wrap up the transition over I think any last words Centric or Stefan we have got about two minutes or one minute actually well yeah real quick Stavon there might be a good question for you from Kevin about Kubernetes standalone version that runs on Windows like the desktop version of all the requirement software yeah so that's podman-desktop.io to get the desktop version of all requirement software I think okay so basically what you want to do is running pod locally if you want to do that there's two ways either you use podman and you can just do that straight with podman or you can spin up a Kubernetes environment that is going to run inside of containers locally within podman and you can use that to also run pods in those environments and that's the kind extension or the mini-cube extension but in fact podman-desktop allows you to set up those type of environment locally easily smoothly and yeah it will run on Windows in your virtualization environment exactly all right great well thank you guys so much for having us I appreciate both of you and the content today a lot of good information etc get posted the links to slides here in the chat I'm sure they're more than happy for you to follow up with them afterwards these slides will be the content will be available on the Red Hat Developer Channel in a handful of weeks so you can go back and watch this and watch other sessions we're going to stop the stream here real quick and switch over to our last and final session of the day and we appreciate it thanks guys thanks for having us