 Okay, we're here to talk about how OpenShift is Kubernetes. Let's go and dive in. Actually, the first thing I'll show you is Minikube, because let's go ahead and set the baseline here, like kubectl version as an example, and then kubectl get nodes. There we go. Single node for Minikube, kubectl get CRDs, and of course, there are no CRDs in Minikube, because it is a bare bones Kubernetes. So let's go now and flip over to an OpenShift, right? I have my OpenShift running on Google Cloud Platform. Let's do it and check the version real fast. Fantastic. It looks like it's 116 as well. You can see I have three master nodes and three worker nodes, because you want a nice, highly available environment. And then if I say kubectl get CRDs, all namespaces over here, we will see there's a bunch of custom resource definitions, of many, many extensions out of the box. Let's explore that a little bit more. Get pods, all namespaces. You can see there's a bunch of pods that are coming with an OpenShift right out of the gate. So if I say grep, and let's look for SDN, Software Defined Networking. We have a Software Defined Networking solution. Maybe if I look at monitoring, you'll see things like Thanos, Prometheus, Grafana, all of that out of the box. And there's a bunch of other components already available to you. But for now, let's just go and deploy an application. Let's just see how that checks out. kubectl, create namespace. Let me create the namespace and what is called this thing, stuff. Yep, that looks good. Create stuff. And then also I need to, I was going to make that the default namespace. So kubectl config, okay. Set context. We want to basically set the context here so that we can, let me, whoop, let me type that correctly. Set context. Current. And, and we want to say dash dash namespace stuff. Now this is of course a lot to type in this case and I often forget it. But there's a nice little command for open, in the case of OpenShift OC command line tool. I could have just said stuff as an example. And then it makes that a little bit easier to be on the right thing in this case. Okay, so kubectl get pods. There should be no pods running. Nothing really here at all. kubectl get all. But let's go ahead and actually fire up something at this point. In this directory, you can see that I have a deployment, a service, a ingress. Let's go ahead and deploy those. So kubectl apply dash f. And let's go ahead and deploy, run my deployment. And so that'll get going. And there we go. kubectl get events. If we look at our event stream, we should see that the pod is being scheduled. It should do its pulling and pulled. But let's look at that deployment while we're waiting for the image to be pulled. So look at it real quick. You can see basically it has my spring boot image coming from Kwi.io. I did set it to all ways so we can always see the image pull. And some configuration request and live and readiness probe. Pretty standard stuff there. And let me go back and check my events to see how things look over here. All right, we see the pulling. We see the pulled. Get pods. Let's see if our pod is up. Okay, let's see. Fantastic. Let's go see if our spring boot application is alive and well. So kubectl exec. We're going to just dive right in and check it out. So there we go. Curl localhost 8080. Oh, there it is. My little spring boot application, alive and happy. So that is fantastic stuff right there. So let me exit out of there. And let's go ahead and add now our service. We have that file down here as well. Ply-f and then the service. There we go. Get that service created. And then let's go ahead and get the ingress created. So dash f ingress. Get that ingress up and running. Let's kubectl get the ingress. See what it looks like. And there we go. So now I should be able to just curl and curl that guy. Let's see, curl. There we go. Fantastic. So if I say while true, do curl, paste that in. Let's go to sleep. And then a done. We should just better hit it, right? So there we go. We're actually interacting with the application. Now all of this, of course, could have been done with the console. So if I come back here to the console and maybe go to my developer mode and go check out the project called stuff. Okay. That's the one we just created. So if I come over here, I can see that there's those pods. And if I actually want to crank up the replicas, I could just click the button here also. So I could have done the replica thing if I wanted to. And we can kind of check that out and see that now we're going to have additional pods. Additional pods. Let's do watch kubectl get pods. Spinny life. Based on that, you can see they're going through their container creating phase and making sure that it does the pulling and the pulled and gets those things loaded. And then, of course, once they're there, they're going to be part of the load balancers example. So those guys will get loaded here in a moment as my system is very busy at this time. But we'll let that continue to occur. And I do want to show you one more little thing. So while we're waiting for that, let's do this real quick. kubectl edit. Let me double check something. Edit kubectl editor. Yeah. Okay. It's set correctly. kubectl edit deployment. My app. Okay. Let's, uh, there we go. We're starting to see the load balancer work, but I'm going to edit the deployment and pull that out real quick. So here it comes. All right. Now it's mapped to Visual Studio Code. I'm going to edit my deployment by just simply doing this with a, I'm going to just map it to a whole different image. Quarkus demo. 1.0.0. Hit save and close. And then let it do its rolling update. So basically it's got to go out there now and make that adjustment to that new image doing a rolling update across the three pods that we had before. So in this case, you kind of see how the deployment was behaving, how the replica set behaves, because again, this is all standard Kubernetes behavior, nothing unusual in this case. So we'll just wait a second for it to finish. And there you go. You kind of see now that the supersonic subatomic Java image is now right in play. And we didn't actually see any errors or anything like that because the rolling update is nice and smooth based on our liveness probe and render's probe. But that is open shift is Kubernetes.