 Welcome welcome. We're going to get started in a in a few seconds So if everybody's logging in and joining us welcome to open source Summit North America 2020. So let's get started. This talk is going to be about k-native and tecton will be Creating an application and showing you how to use both and this is about a tutorial Just have a a couple of slides very quickly and then we're just going to go deep into the open source Tutorial that I have with a Kubernetes cluster My name is Carlos Santana. I work for IBM and IBM cloud architect and this is my Twitter handle see Santana PR if you tweet this talk I can reply back with the slides or the key how repo if you're watching the recording afterwards So with that, I'm going to give you a quick overview of what is k-native K-native is to make developers more productive basically serverless Containers in a way that it can run in Kubernetes and they scale to zero So that's a big difference between Kubernetes and maybe out of skater and maybe the Kubernetes K-native are a skater and the Kubernetes HPA Horizontal cluster it doesn't go to zero this one goes to zero because he scales on based on HTTP traffic It's portable because it works on any Version of recent version of Kubernetes and it's open source and that's the website and you can find it You can find all the open source code in get up.com k-native Continuing so that they're a very high level very quickly We're going to be talking about today about k-native serving k-native has two buttons serving and eventing So in serving we have a service that we want to provide you should it's an HTTP service and then this has Configuration so as you change the configuration these will start creating revisions think of it as versions And then it creates a route it handles all the tracks a route configuration including the DNS and also traffic spading to configure a Networking layer like Istio contour or courier. We're going to see that one Next one is a project tecton tecton is about automation automation for DevOps and CICD So it is for build test and deploy similar to Jenkins. It works very well with Jenkins and other Open source tooling and DevOps, but basically tecton was created to be cloud native and in Kubernetes That kind of standardized the way we define pipelines and tasks and as tasks have steps I'm going to see that a diagram of that same thing as k-native is open source is Portal because we worked on on on Kubernetes mostly recent versions of Kubernetes I mean the the source code is on github.com tecton CD This slides is about tecton k-native We have Steps that are Composable in order and then you can put them in a task And then a if you want to create a pipeline You'll be creating a set of tasks that can run sequentially or they can all run in parallel And we're going to see an example in the tutorial. I'm going to go over the tour very fast But this is the link to the tutorial and like I said if you tweet To this link I can give you the link or you can copy paste it and Also, I don't feel that you have to keep up the pace This is going to be a very quick and short tutorial just to give you the highlights But then you can sit down and go over the tutorial Once you have your Kubernetes cluster set up and then get a feeling of how to put all these things together So with that, let's switch and this is again the the k-native To tecton tutorial that I'm doing That's not your handle and I work for IBM. So this is cloud that IBM account This is where you and you can get a Kubernetes cluster for free. So with that, let's move to the Tutorial And for that, let's move to the terminal and open the websites here This website is located here the read me basically follow the instructions in the read me to All the instructions mostly it's just copy and pasting into the terminal If you don't want to make typos and things like that to set up the environment I'm not going to set it up here because that will waste a lot of time But you have to set up a kubernetes cluster. I have here information of Basically three options, but there could be many k-native and tecton runs on any on a recent version of kubernetes and The one I'm going to use today is the IBM free kubernetes cluster You can get a free cluster and you can ask in our booth on how you about more about the 200 Dollar credit that you get when you open an account But it's it's free and it has the latest version of kubernetes. I'll be using that But if you want to try a mini cube or catacoda step by step, I also have that you can check it out there Well to see a line we're going to be using the command line interface So you're familiar with linux or unix. We use the linux interface heavily In this cloud native development process So you will need the kubectl the k-n which is k-native cli and tecton and An account in git some sort of an account in git and then I contain a registry I'm going to use docker hub I'm not going to show that you can go step by step and configure that and set up the credentials as environment variables That we're going to use later for the container registry Installing k-native is pretty simple You grab the the yaml files There's also an operator that you can use but in this case I'm I put here in the tutorial to obstructions You can copy paste this version 15.1 Installs the crd's and the cores. This is standard practice to install software in kubernetes Then you install a networking layer. This could be istio or it could be Corior contour glue any it doesn't have to be is to used to be that it needs only we support a istio But then recent version. This is pluggable. So this is a pluggable network interface Network like networking layer that can it will be programming. So in this case, this is a very light way It's called k-currier so you started with the And yaml file the same thing will create the resources will be created on the core system The k-native will be in k-native serving In this case, I'm using a free cluster. So I don't have a low balancer ingress But we can still play with kubernetes same thing that you would do with something like mini cube And such we're going to use extract the external ip Of this cluster that I have already logged in already logged in with kubectl. So I run in the kubectl programs cli We're going to use nip.io. That's this is a nifty way of getting a a domain name out of an ip address Anything below before the nip.io. It returns back the ip address So that's this is a trick that I like to do and then we're going to configure Kubernetes with that domain name already did it. So I'm not going to do it again And then configure courier, which is our ingress to get traffic into our cluster And I'm going to configure one that is node port on that external ip already did it So I'm not going to show you that And then you're going to tell k native to use courier. So you need to patch the class and give it like if it's istio or it's a glue is it courier that information To validate that everything's running I can I can do that and check that my cluster is ready Running this command the bots should be running For both courier and k native and then this is the service that I created to get traffic into it Let me check how we're doing with time So Next one is So k native is already installed. It's out of the way. It's super easy to install. You can install under three minutes For running our first application in k native I'm going to be using the then the default namespace. You can use any namespace that you want But since I'm using that one that will be part of the domain name So the our domain name will be the name The name of the application namespace dot and the domain name that already we already set up with nip.io So I just setting up environment variable. So everything works out of the command line So I created that and then I'm going to create a our first k native application Our service is going to be called hello And I'm going to use an image that is already available a sample application a sample Container that is available from the office source project. So let me create that and and this is a your first k native application So it's a configure and Is available there And then you can list it to make sure is Ready so you want to see something like here ready and then we can use curl to execute it, right? Or you can just access the from the web browser you have available. So this one is a hello world And it should print that the nisty thing with it is that once traffic stops On the website or users visiting the website or an api calling it There'll be a pot running If you have more traffic more pots will come up But the the the trick about k native is eventually this after a a minute and it's configurable. It will go scale down to zero So after a minute as you can see the pots are terminated if I check For the pot there's no pot but check it out if I go back to the website and I run it again I will have now pot running So it started very quickly and my app is application So that way you can use your Kubernetes cluster to Have a bunch of apps and the ones that are not used they're scaled to zero. They don't consume cpu and memory So that's what k native is about And some people call these serverless Or or scale to zero serverless. So that's pretty cool So with that we just finished with our first hello world I just wanted to show you how to get started with k native and now This next section is around Updating k native. So that application return hello world So let me run it again return hello world But what about if I want to update something with it? I can use the cli again around k n service update Hello and change the environment variable to hello world v1. So I run around the application again It changed to v1 So that's a way of changing the configuration basically changing the yaml It or the information associated with that service and just change the environment variable if we continue Now we're going to go do a An example that is a little bit complicated But I think it's pretty cool because this if all the ways if you're going to do it in a different way It gets more complicated. But I think this is A an easier way of doing it. So right now our application is running. It says v1 But I want to update it and leave 75 percent of the traffic to that version and 25 percent to the new version So with the k native cli, I can specify that I want 75 to the new version and keep 25 of the users to the old version So I updated the application and then I can I can describe it and then you can see 75 percent goes to the old version and the new version gets 25 percent So now if we run the application back to back, right, we execute a bunch of requests it will start printing v1 and v2 So you can see about 25 of the requests goes to v2 the rest the majority goes to v1 and that's a actually a Very quick way of doing Traffic splitting in kubernetes And this has been a complex way of doing it So this is where we say that we want to make our developers life easier We're running out the updates to to the cloud. So in this example, what about if I want to Keep 75 percent 25 percent, but I want a new version To be out In this case, I'm going to dark launch a v3 So no one will get that version It's going to be dark launch and it's going to be like the latest version will be zero percent of the traffic So now if but what about if I want to access that because I use a tag Like I'm using tags v1 v2 v3 This one created me a a url Domain name with v3 dash in front of that my my url So if I run that I can access v3 because I know the url specific to it But my users don't know about it. They still continue using v1 and v2 So but uh, let's say that we're ready to make it into production and make this I like this application Right, this is application This is the version that I want to do and they says hello from open source summit north america 2020 And I with this is the version that I we want to put I can configure it with Ladies I say I want a hundred percent of the traffic to go to this version and now if we run the application Everything will goes to v3. So as you can see in a couple of minutes, I was able to deploy Uh an application do traffic splitting between two Dark launch the last one v3 and then make it available to everyone. So, um, that's a Workflow that you work with kubernetes and k native If you want to do this in in yaml format, and I'm going to I'm going to show you the yaml This is a practice that we're going to use later as we use tecton to deploy the application So in this case, I will I could define that the whole application or just the latest information With yaml. So in this case, this is how the yaml will look like and specifying a service a Environment variables the image that I want to use and then how do I want to Shift shift the traffic With other if you want to do this in a in a different way or how it used to be Before k native you have to write a lot of configuration Files just to achieve this so comparing these 20 about 20 lines of code Of yaml compared to I don't know 60 on all these resources That's what k native does it orchestrates Other all the things created in kubernetes for you and you just give it simple instructions So I'm not going to show that that example, but you can give it a try when you do the demo When you try the tutorial yourself in mini cube or the free cluster in ibm So that example, we're done with that. Now we want to deploy our application So if we go back to our application Let's see So we are done with k native. Now we're going to do Tecton so tecton remember that I said is for build deploy and test So it's automation for devops and cicd and the most common scenario is that you have source coding git um In source code could be any language or any program and convert that Into a package that you can deploy in the cloud native environment such a kubernetes. So to install tecton Let me see if I I don't have tecton installed. So I'm going to install tecton You copy paste these yaml file and this should install it in the k tecton pipelines namespace And I have some error. So let me run it again So I run the command second timer and this time it worked so Tecton should be installed one optional component of tecton is the dashboard. It's a it's a web ui I'm going to install it just to show you how it looks like. So let's install it Here and installs in the same namespace as tecton and then Since I'm going to access this as a as a website I have to do the same thing of exposing it as a as a no port It depends on your cluster if you have a low balancer or ingress if not Then you can access iam exposing as a through a no port and using that external ip address that I've been using for the k native application I use it for the dashboard. So I'm going to extract the The external ip address the no port and this should give me a URL that I can open here and load the pipeline. So this is you can see the pipelines pipeline runs And I follow that so I'm going to show that in a minute. So we go back and it's and it's optional So that was the tecton dashboard tecton pipelines and if we want to verify that everything's running We can check that the pots are running So the pots are running in that in that namespace and then our our dashboard Um with the no port is available. So I know that everything's running and tecton dashboard is running So with that out of the way the same way as k native under three minutes you can get tecton install pretty simple to install software and kubernetes Uh, and this is one of the the things that makes a kubernetes Attractive it's easy to install easy to deploy I'm portable. Uh, so with that already installed the tecton pipelines I'm going to check on Number five, which is a building of application Which is I think this is what we wanted to get to in this in this talk To configure access we have to give some access to kubernetes in terms of we're going to be taking code creating a container and pushing it to the container registry And for that you have to create a a secret with your in this example. I'm going to use docker hub So my registry namespace and password And and that way tecton is going to use that to when it's going to Create containerize your application and push it to a registry But this could be any register tecton works with with any register basically is that tecton is the utility Such a canicle or build that that you're using In your scripts to build the container and push it so tecton basically just You're configuring shell scripts at that point. I'm not going to run it because I already have it What I need to do is create a service account That it has enough permissions to run these utilities and also push To to um To docker hub and also create resources such as k native applications I wanted to deploy k native applications. So for that service account, I'm going to give it that those permissions of Be able to edit and create kubernetes resources Anchoring them them as roles and role bindings Because I want to just just work with one namespace. It could be that I could be using a share cluster And I was giving access to one namespace So this is a way of you can configure it only on one namespace and give it enough permissions To the person using it there. So our first task is to build and like I said before a task in tecton is composed of different steps And a task is something that is going to be reusable. So in this case I have a a simple node.js application in In github in this web. Actually, I'm using the same github repo repository You can see here is something in a folder called node.js And and it's a simple application of web browser web api sorry Using using node.js, but you can use any language you want go python java It doesn't matter at the end of the day gets packaged into a container And it's deployed to the container registry If you want to see how that task looks like the name of the task will be build So as you can see it's a task in kubernetes Resource it takes a few parameters. For example, the github URL where the source code is Which branch or or githash do you want and then the image that I want to put great and push to a container registry So if you can see down here the steps are basically two scripts This is just standard shell scripting. It could be pro scripting or shell or whatever you want to do So the first one will do get git clone of the of the source code And the second one is going to use in this case I'm using build up Which is a in an utility that it takes the source code in a directory and then Creates a container image and then I'm pushing it With a push command and pushing it to the container registry. So with that, let's create that task In kubernetes, so I have my task now tecton has to see a lot that I can use for that to lease my task So I should see Oh, I'm in the wrong in the wrong photo, so let me move to The repo that I just cloned and I should move it. I should run it here. So Run that Actually, I didn't the other ones failed. So let me go back and create those Ones, I think I already have them but the double check Let's put them there Yep, so now I already have one of them and my task is there So if I want I want to see the task, let me run tecton task alas here And I should see my build task and if I want to describe it, I can just describe it here Um, these are the parameters that I'm going to pass to that task The steps that it's going to take and there's no task runs because I haven't run it yet And then to run it talking about running it I'm going to run that task by creating a task run resource But the cli is kind of nifty because it helps me Create that with a command called start So I'm going to run the command start with the name of the task The repository that we want to take the image that we want to generate And then the folder where like my application is located on the service account So with all those commands, um I can create the yaml or I can use the cli doesn't matter how you create the resources in Kubernetes The cli's are nifty because that's a way of you can task things quickly. You can develop things quickly Um, so in this case, I'm using the flag dash dash show log as you can see here So basically this is going to start the task and then follow follow the logs as it's building the container image and then pushing it to the registry So after a minute Our image is is it built into my source code from From javascript And it's building a container image the space city is the standard output of when you run Uh an image and in this case is doing the push. So it's pushing this image to docker hub So let me go to docker hub Or or whatever register you're using you can be even using the the one from IBM we have a container registry which that one is private secure We do code scanning and those type of things But in this case, uh, the the stat is a standard and it's open source So now I'm here and as you can see this image has some tags. Um, if we check The the image it should be it should be there now. So it just pushed the image to to this location Uh, let me see. I think it says a few seconds last push a few seconds ago. So that image got pushed to Uh, docker hub pretty easy like uh, when in one second you can use the cli to check that it's there But I already did through through the ui. So it doesn't matter if it's written 200 But it's a nifty way of checking if you're like programmatically When you work with tecton, we show these people that are doing DevOps and that's um, uh, the automation So that's it. That's the task that takes source code and creates the container and puts it to To a container registry from git. So that's the basic concept of of tecton But if we want to take it a little bit further We want to deploy the application Why can you be using things like getups and doing a a sync? Or can kubectl apply it? Or I could use tecton to run kubectl in this case That's the use case I'm going to show So let's say I want to run kubectl every time somebody pushed to get Um, and I can take the yaml file which is located in this kit repo So this is the the the task that does that work. It's called deploy again from a yaml perspective The parameter that it takes is a github repository similar as the other one It takes a directory where my yaml files is what is the name of the yaml file? And in this case, I made it a tweak to say if this task takes an image url or including a specific Tag go ahead and replace in the yaml file before you Install it and and this is how I do it with a simple script checking if you're passing that image Go ahead and edit the the yaml file and replace image with the So I'm here this specific the way the the k native do the k native yaml file And replacing the image url now with a specific image url And then deploy the application with kubectl apply, which is Running inside the container. So each step in here is running into its own container So this is a way that it's super easy to get any tool that you want to use in your pipeline kubectl maven Shell script build that like any utility that you want to use you can use it there And let's deploy the application and see it Let me move this up here So we deploy the same concept as the build task, but I should have two tasks now the build and deploy one So now you have a build and deploy tasks If I want to describe it, then I can describe it here and the same thing it takes some input parameters the task of tecton It does some steps in this case. It's going to do a git clone, but it's going to run kubectl Not like the other one. So this is the second step our second task Sorry, I'm going to run in in order in a minute or so So if we want to test it, uh, let's run it. Uh, this is the yaml file that is located in the repo I can show the repo again There's a folder called k native service.yaml and that's basically this is the the one that I want to deploy Into my my application So let me see Let me start that one And this the same the same deal It should Start pods and start the containers that run this this task with a task run. So a task run Corresponds to one container. So that was super super fast In this case, um, I made uh that yaml has a different Information. So we'll sit in it. We'll sit in a minute So now if I do k native service list demo, this is this is the the The k native service that got deployed 18 seconds ago. So, uh, the tecton was able to take the The yaml file update the yaml file and then um Deploy the application and it should be uh open live Uh, I'm going to call it again because we already saw a k native demo What we want to show next is I have two tasks the build task and the deploy task So now I want to run build and then deploy and if I want to compose that I can compose that into a pipeline So that's why we're going to look right now. Uh, the the pipeline in tecton So the the pipeline you again you define it with yaml you take the yaml file And define it like what are the inputs for this pipeline that is going to run the two tasks The first task is going to be the build task and the second task is going to run Is the deploy task and as you can see here This one will wait for the build task to be done. So, um, but you can configure pipelines to run sequentially in parallel, um, uh, the tasks within the pipeline. Sorry, I meant tasks And the parameters are going to be passed to the pipeline. So I want to deploy that pipeline I can take it and then apply this yaml And my pipeline should be there if I want to list it with the Kodakton CLI I can just list it here and this is my pipeline No status because I haven't run a pipeline yet. Uh, to run a pipeline. That will be the next step Uh, if I want to describe it, I can run tecton, uh, describe As you can see it will take certain parameters. I don't I'm not passing other parameters Some of them are default, but the ones that I could be reusable is if I have a a, um, I can use this pipeline to deploy a java application, a go application, uh, or an application or multiple Node.js applications that are in different folders or it could be in a different totally different repo, uh, for example Uh, that I want to deploy. It doesn't have to be the same Everything doesn't have to be in the same repo as the best practice Everything should not be in the same repo. You should have separation of concerns of source code and code for your microservices versus your ops and versus your pipelines So in this case, this is the pipeline and if we want to start it, um We can run the the tecton cli you can create a pipeline run But the cli is a shortcut to get that pipeline run created I'm going to start it and and that's basically I'm passing two Two input parameters. I'm passing the image That I want to apply The same same image as before and then the repo the repository that I want to deploy like I said This could be a different repo. It doesn't have to be the same for demo purposes I'm putting everything in the same repository. So it's easy to follow if you sit down and go to this tutorial Um, step by step. I'm actually reading versus me telling you, um, you will follow along and find everything in one in one place So in this case, it's doing the the tecton build. Remember taking the source code Come and package it into a container image and and then pushing it to um docker hub So it looks like it's making some progress Uh, building the image and now it's pushed the image Uh, to to the container registry, uh, which like I said, I'm using docker hub But you could be using the internal registry like for example open shift comes from internal registry or you can be using, um Any cloud provider provides container registry ibn provides a container registry that you can use And also it can scan your images for security problems as you push images and then even block you from deploying an application Uh, that has security issues, uh in the image or the base image not necessarily your code So in this case, it did the two tasks. Um, the first task was build Um, and then the second one was called sorry build and then the second one was called deploy with two steps The git clone and apply so it applied my yaml and if I want to see Uh, like the status of um that I can I can list the pipeline run So a pipeline run was curated by the command Uh, it run the pipeline called pipeline build deploy as you can see here. These are the status of those two tasks I can also show you in the tecton Uh, ui or dashboard Um Open shift comes with the pipeline Uh, with a sorry with a ui embedded. I showed you similar information as the status of your pipeline This is just an open source project just to Navigate make it easy to navigate Um, if you want to see a ui And so with that said, uh, we can also see Our image uh application is still there Uh, and it got deployed if I want to run it now i'm deploying with a pipeline instead of deploying To separate things build and then deploy and taking pipelines and storing a build and deploy on this application so Let's run it Um, and it should print uh a message so as you can see now it says my first service application Open source summit uh, november 2020 And some emoji. So that's the the version that is uh, that I showed a minute ago Uh in the yaml file Here that's the information that is uh, what was there and was not the original Image So with that, um, that's that's um The pipeline and lastly if I have a few minutes, let me show you An example of automating these from git because we don't want to run all these things manually So for that what we need to do is use tech We could use tecton to create some of the resources that will handle A uh github sending us a a trigger. So we're going to install The tecton trigger components. Um, this is that this is a Different components. It's not based with tecton. But um as a core want to be want we want to keep the core small So the triggers are are um a sub project of the tecton Of a source project and next we want to create a trigger template So this template is going to be used as a template to create resources So anytime a a new change happens in git. I want to create a pipeline run And I can put the specification here. It's like which pipeline that you want to run What is the service account and then what are the parameters you want to pass? So in this case, I'm going to pass the the url of the git the revision and probably an image tag And then we can deploy the the template Uh with qtl and that will create the template. The second one is the trigger Trigger binding the trigger binding what it does is when that request htp request comes in I want to extract information Um from it. So this is binding is reusable across multiple use cases. It's not specific to this pipeline So I'm going to um, this is the ammo file that is going to take the body of the htp request Extract the commit extract the repo url And then I'm using a nifty extension that it says take the the the chasm and then give me the seven characters I'm going to show that in a minute how that works in the venly center. So we're going to use the qtl to apply the trigger binding for that. So I created the The template and the binding uh using uh tecton triggers So after the binding is created we created the template and we created the binding now Um, but that doesn't run any pods. That's just definition of resources sitting there. Um for configuration only um Now what we need to do is uh create a trigger event listener And this is a way you can create your web server or anything But if this is a composable framework in tecton that we can use Defined in yaml have Basically given instructions like create a small deployment That would handle those htp requests coming from git and then what do I do with them? So the idea is that these event listener will create that pod that listens Is a service to listen for htp request coming from git and then we will put the two things together the binding and the template So it will take the binding extract the information from the htp request And then instantiate the pipeline round using the template The interceptor is something that you can program into Doing some filters and overlays in this case I'm showing an example of a filter that I want to only handle a push request. So from git you can receive Uh Events like a new comment a new pull request. I just want to know that it's pushed Especially to the main repository If there's other report, sorry main branch not all the branches So if we have all the branches making changes, I want to ignore them And then lastly, this is the the next thing I was saying I want to distract the seven First character of that git hash because I'm going to use it as a git tag Sorry as a image tag So that way every image that gets created and I can associate it with a git change With the first character instead of the whole thing and that looks even better So with that, let's create the Uh tecton trigger listener and that should start a pod With a service So if we want to see the pod and the and the service the agakerator, so this will consume Uh, let me say in a minute. We see the deployment Should be there Let me check Let me check Um, it looks like something happened. So if we run the command, uh again, we should see a pod running In this case, it's a deployment. I can do k get pods grep for l That's c i c d because that was enabled the Listener and I have one pod running. So this started a pod that's going to start receiving that is ready to receive those http requests from git So that's what's going to we're going to look at next is Getting that request into into this pod So for that, uh, we are going to use We need to get the url In this case, I'm using a a cluster that doesn't have an application load balancer Because it's a free cluster in ibm, but you're using the standard cluster We have an application load balancer ingress all those type of Standards. I'm using kind of a development. Uh, very one node Cluster, so I'm going to configure with the node port This way, um, I'm able to expose the service to a node port and the external ip address So talking about that the next command is going to Again grab that external ip I've been using for the dashboards for the k native service And then extract the node port that I got assigned and then now I have a url that I can send I can give to git to send those triggers for git webhook And take into account that this is HTTP in real products of production. You want to use HTTPS So I put I put a big warning here that you should configure it with For example, the ibm application load balancer and tls termination or open shift using routes So take into account that this is HTTP and everything it goes off the wire It's open. There's no security on it. So the what you need to do is You can do it programmatically. This is when the setup Environment you can set up an access token then programmatically added I'm going to show the ui on how to do it and explain it here So if we go back to our repository, I can go to the main repository to do it on this Go to settings and you can be a bit different for every Git provider. It could be a private git provider commercial one Like the git lab big bucket IBM has a a a git service Then you can use I has a free tier And also those webhooks I have a tutorial on using the DevOps and using that also that's a different tutorial That I have in one of my websites in cloud native one on one dot dev Let me Wait a second here for the page to load So the page loaded and you want to go to webhooks So I don't have any webhooks here. I'm going to be adding a new webhook I'm going to put that URL there. So this is where I want git to send the request. So let me copy this Into here and then change it to application json. These these event listener is expecting application json not That XML not form The secret is also something that you can configure tecton has an interceptor that can be used to validate that this Git event It's it's signed. I'm coming from github and you're not a trusted source I'm not going to show that because this is a demo kind of the tutorial just to learning But take a look at the documentation on interceptors and using for git lab or github how to those are signed I can select push event I'm going to select push event you have a default or I can send send me everything comments Pull pull request creating of a tag And my my my trigger event listener as you saw my interceptor will not ignore them But in this case just use the default and that's a simple a simple thing to do This green check mark means that the github did a ping to my service So if you don't see a green check mark here There's something wrong with your event listener or the routes to your event listener. So with that I have my Web hook done and I can make a change and trigger the the Pipeline so this is where it gets excited To the all of this point I can go in here And I make a change to my git I can do it from my Code editor or I can do it from the web browser. It doesn't matter where I do it. I do it from So I'm going to edit something about my application. I could be editing the the node.js or I could be editing the yamo file So I'm going to edit the the yamo file. So I'm going to edit here Bigger and I'm going to change the message instead of my first service app North America. I can say Thank you For assisting at this tutorial or thank you for Thank you for watching And then Update the k-native k-native Service This is for demo purposes. I can create a branch review it merge it into master But I'm going to commit directly in there And then I'm going to Watch What happens? So At this point There's a pipeline should be running and if I go here and do the last log The logs would just start coming in if I check the pipeline That should be a status. So you see the circle here that pipeline is running If I click on it It's running my pipeline. I can see the status. I can see more details about The pipeline is already the the clone is doing the the build image And it will take about a a a minute to be done And then we will be able to Describe the the pipeline When when it's done So now our application is done The Logs are done and then the the task is completed and I have a status that everything got deployed Um, I can test it to see if he's if he's ready. Yeah, and he says thank you for for watching Uh, let me run it again So to test that here And I can even uh go to Uh the application here and call it What would we call it demo? demo And yeah, thank you. Thank you for watching and I'll be answering questions if you're watching live On the chat or I think they will put me live Or uh, if you're watching this recording probably in in youtube go ahead and Reach out to me in my in my twitter handle And also open an issue in the github issue in the github repo If you find a problem or you have suggestions for the tutorial and I appreciate it and this makes the community better So, thank you. I think we're live. So we are live. Um, I think we have like five minutes to take Um questions. Um, we have a couple of them already in the in the system uh, one of them is around, um render.com packages An app into a container and provides containers URLs and the client code Which consumes the app called uh case ml models Impackage does tecton provides similar service on open chip flavor Of kubernetes. Yes tecton um is supported on any kubernetes system In particular on open ship. There's an operator supported by red hat called the pipeline operator. Um, we Um, we use it in ibm. We also have an open shift as a service Um, and it's supported in open shift in kubernetes. Um, there's a render that come and not familiar with it But tecton is a composable automation api So it it runs um shell scripts. Um, and it basically you're running Uh containers. So it's a serverless um automation tool So, um when things need to run they run and then they stop so you don't consume a lot of um, I don't know a lot of resources. So um Not familiar with render.com, but tecton can be used for containers or it could be used for automation for example, you want to build all the type of software uh, like npm packages or maven jar files It can be used for that the same similar way as you can think of of jenkins, but uh tecton uses that composable api So it can be used for kubernetes. Also in ibm cloud, we have this uh tecton as a service So you don't have to have a cluster We take your tecton jam files and we run them for you. So, um, you don't have to manage kubernetes to run tecton And that becomes an api um another question um We have one saying that istio, uh and k native. I didn't see you running istio Um, uh k native now Supports more than istio. Istio is the networking layer. So k native programs the network networking layer So I use courier, which is a more lighter way of Just to run certain things of that network networking layer Then if you want more advanced use cases, then you may uh use istio But istio is now it's not a hard requirement. You can use contour You can use glue or um service management networking layers I use courier because um, that's kind of like light way also supported by red hat and it comes with it would open shift um More questions, I think I saw people saying that they liked the session Oh, uh, there's another question saying is the video uh available to download Um, you I don't know if it's going to be available download I believe it's going to be posted in the youtube linux foundation Uh at some point um in the future. So all the all the videos like like last year That should be in the linux foundation youtube channel um later Uh on this platform for a year and you turn on this platform also So you'll be seeing the interaction of of also on this platform. So it will be available in both places um Any more questions? Uh, oh, uh, there's something here. Um Is there something about multi-tenant if there's a multi-tenant dashboard solution so, um in terms of of of tecton That dashboard that I show is a web UI. I believe this in react.js. So, um, you can configure it. Um I don't know that much of the of the details for it, but tecton is Build and tested to be multi-tenant. I believe You can you can have it in that way, but for the most part it's an automation piece. Um, so the multi-tenant comes from the service service account so, um For example, a namespace will have a service account and your pipelines will run with that service account And then it depends what permissions you give that service account to do Uh, so for example with that service account can only touch Um, read certain namespaces, but not write or deploy to certain namespaces, but not others Then that's a way you can manage kind of the the multi-tenant and Kubernetes by by the service account and giving the the Role bindings and our back. Um, so that you can achieve that in terms of of tecton is through the the service account Let me see if there's any other questions Uh, people said that they liked the session Um, I don't know how the video looked like, but hopefully that it looked okay on the other side I think that's that's it. I have another question Uh, I mentioned like yeah, um, if you're doing open source development, and maybe you have a um, I did I was an open source committer So there was always difficult to find build systems For free, uh, because you always have to have VMs running all the time to run build system So tecton is could be a possibility of running that serverless So, um, and also I call isolating based on containers So if you're running an open source project, uh, take a look at using tecton as a way of having serverless, uh builds So that way you can run more builds Um on demand and being and being servicing in in that aspect Um, and then you don't have to burn CPUs and And memory and for that matter k8 if it's also serverless. So you have applications that, um Are not running or not consuming that much Uh resources they just just go to zero. So they don't have to be running all the time How we're doing with time and the questions Uh, people said that the the sometimes the the resolution of the fonts didn't came that well, uh, but um But having the git repo help directly. Yeah, so the the git repo is available. You can sit down and go through it Uh, I recently updated it, uh with minicube. So you can test that on minicube. Um, The the trigger github it's kind of tricky to do you can do it with tonami or Inlets I have instructions there. I also have a short version maybe a lighter version of the Tutorial on karakora. So you can try that or try the one that I I did with the free cluster in ibm I also put it videos on how to get a free cluster in ibm for demo purposes So, uh, yeah, I think we're almost about, um out of time and we can continue the conversation in In slack. Um, so we'll direct everyone to slack with a broadcast message Uh, once just uh, I say goodbye. So I think that was the last question. I reached me in twitter Uh, also I can do similar talk or more advanced talk in twitch. Um, or um, I think a k native is planning a meetup Or I can do a similar talk, uh, or Do the tutorial in github. Um, I put all the instructions in there step by step If you have issues open open an issue or or now, uh, we can slack. Um one slack So I think we're good to broadcast the typical message