 the session. Let me give a brief introduction about me. So again, my name is Chamod and I work as a software engineer in an Australian company called Industries Software Group. And other than my technical background, I run a few communities in Sri Lanka, which are KCD Sri Lanka and Golden Sri Lanka GitHub, and I'm also a GitHub bus expert. So and I'm leading the DG Sri Lanka as well. So these are the things today I'm going to discuss about. So the first one is what are the containers and then what is GitHub Container Registry? Then why GitHub Container Registry? Then I'm going to move into the what is Kubernetes and give a brief introduction about Kubernetes. Then what are the benefits of using Kubernetes? And yeah, we move into the demo and the Q and A. So what are containers? So containers are packages of SOFRIA that contain all the necessary elements to run any environment. So it doesn't matter what's the environment. It can be run on Docker. So as you can see in this meme, so previously before coming into the container technology, people have to set up everything from the sketch to run a certain application. For an example, let's say we are running a Java application on production. We have to set up it for, we have to install JDK and everything to run a Java application. But if we containerize the application, we can run it anywhere because it's easier. So let's move to the Container Registries. So GitHub is not the only Container Registry offering platform. Actually, GitHub is a source, source repository management system previously. Now they are coming into the GitOps. And there are other Container Registry offering platforms like Docker Registry and from Google, we have GCR. It's Google Container Registry, Nature, we have Azure Container Registry and AWS got another one too. So what are the benefits of using GitHub Container Registry? So the key benefit is it reduces the maintenance by keeping everything together. So which means we can keep the source code and the build as well as the distribution in the same place. So before we talk about the need of Kubernetes or container orchestrator, do you know the meaning of monolithic and microservice? Can someone tell me? Yeah, that's correct. So as he said, so monolithic run as a single application but in microservice, we can split the application into different parts and run it in the same part. And it's easier to maintain and easy to do everything and deployments as well. So when it comes to managing containers, we cannot do that manually. Let's say our application got 1,000 containers. How can we manage? So that's the main reason Kubernetes is coming into the scene. Because of the Kubernetes, we can manage, actually orchestrate so many containers at the same time. So as you can see from the definition, Kubernetes is originally developed by Google but now it's maintained by CNC, a cloud native computer foundation. Yeah, let's move into why we should use Kubernetes. It's actually highly available, which means simply means application has no downtime and they are available for 24-7 and accessible to every user. And it's very scalable. So with the need of a resource, it can be easily scalable to we can maximize the resources. So when it comes to the Kubernetes, there are some few things you need to know. The first one is nodes. Nodes means working machine that runs container. Actually, we don't need to have a cloud environment to run Kubernetes. We can do it in physical machine or even hybrid or cloud. So the second thing is ports. Ports are the smallest deployable unit in Kubernetes. And the next one is deployments. It's actually a declarative update for ports. So when we do a Kubernetes deployment, it's actually creating port. So the next one is service. We can use services for expose our application to external or internal. And if our application has some secrets or configuration and stuff, we can use config maps or secrets. And the another one is namespaces because namespaces provide a way to divide our cluster into different parts. So this is actually a Kubernetes object YAML definition. So as you can see, first we have to specify the kind. So this is a port YAML definition. If it is a deployment, the kind value will be a deployment. And most of the other parts will be same. And as you can see in the image, we can put the image name where the image is located there. And as well as we can specify the port of the image. So actually we can run more than one container in a single port. So there are two ways to create a Kubernetes object. The first one is imperative. That's my personal primary. Actually we need to install the Kubernetes CLI into our machine or whatever the environment we are in. Then we can run some command and create Kubernetes object very easily. And the other one is the declarative way. So maybe we will have to remind this definition or we can go to the Kubernetes docs and copy and edit. Then we can do the create Kubernetes object. So I will show a quick demo about building an image and doing a deployment in Kubernetes as well as exposing it to the outside. So here I have prepared a simple Go application which, you know, for Stacia 223 when we hit the API call. So and I have actually localized it in here. I'm actually using a GitHub action. I have pushed this image to GitHub container registry. So let me show the GitHub action for that. Actually we just don't need to add anything when you are doing this. You can go into actions and new workflow. There are tons of templates available so you can easily do them. So as you can see. So now I'm going to do a tag release. So the action, GitHub action will be trigger and it will create an image and push it to the GitHub container registry. I'm going to name it as version 3.0. All right. So now as you can see, GitHub action is running. Since we have only a few minutes left, I'm not waiting until this end and let's move into the Kubernetes cluster side. So create a Kubernetes cluster. I have, I'm using a Google Cloud Factory and you can use any cloud provider you want. You can use either Azure or AWS. So using this setup, you can easily create a Kubernetes cluster. It's very easy to setup. So I have actually created the autopilot one because I don't need to specify the nodes. Depending on my workload, the Google autopilot will take care of the tracing, creating and deleting the nodes. So here's my created cluster. When I want to access, I need to go to the connect and copy this command. So I'm going to run this command in the Google cloud shell because it is very easy to use and it's running on cloud environment. So it's very fast. So I'm simply pasting the command. Okay. I have already prepared all the declarative commands to run my deployment. So to view all the names faces, I need to hit Coup CTL, get NS. I have only default and the other Coups names are created by the Coup system. So let me create new names face to view the NS. So as you can see, the names face is here. So let's create the deployment. So when I hit this deployment creation command, it will create deployment under this name for stage dash 2283. So here I'm specifying the port and the names face as well. So I can actually view the deployment in here by running Coup CTL, get deploy and I have to specify the names face as well. So yeah, as you can see, it's not ready yet, which means it's still the deployment is creating. So when it's come to exposing this deployment to outside, we can use this command Coup CTL export deployment and we have to specify that I pass a load balancer. Okay. So everything I have in this git repository, I have shared it later. So let's move forward to the slide in my presentation. So we are to next. So if you are new to Docker, you can try Docker and GitHub content registry and Kubernetes. So if you want to do some labs about Docker, you can go to the play with Docker website and try out the actually, this is the place where I've learned about Docker most of the time. And if you want to upskill your GitHub skills, such as GitHub actions and GitHub content registry, there are those, those tutorials are available in skills.github.com. So if you don't have cloud kitties, you don't need to worry about that because you can always use minicubes. It's a local cluster. You can practice Kubernetes in your local computer. And so other than that, you can stay in touch with my community, Kubernetes Sri Lanka and KCD Sri Lanka to learn more. So do you have any questions? Feel free to ask. Actually for the free users, they offer 500 MB. And if you are for a user, they will offer 2 GB. Okay. So thank you. You can follow me on my social media. Thanks, Shamu. It was a really wonderful session.