 Yeah, oh Can you guys hear me? Yes, we can hear you. Okay. So yeah shout out to Saheem for the nice talk on Github's with Agost CD So yeah, the Agost CD is one two and flux is another you can use either of them They are both open source projects under the CNTF. So my talk is just going to be short It's just going to be an introduction to Github's and flux so Yeah I've done this before but my name is the new creosome touchy I mean the experience engineer at we've works and I work on flux So I want to sort of take it back a bit and sort of explain what Github is and what the need for it what the need for it is so you know with Divine's talk he had like he was deploying an app and he did You know Cube city or apply right? So that's great for like Developments workflow and everything but then how do you take it to production? Like how do you manage is when you have different themes different moving parts does everybody get access to the cluster? You know someone is running Cube city out here and Cube city out there you can see that there is a need for a better way to manage how things are deployed Especially within bigger organizations Right, and then when you make changes to let's say you updated you had a deployment file With a particular tag in it. Let's say you wanted to update the tag, right? So you updated it and then you did Cube city or apply, right? So you can't let's say there was an issue with that tag, right? How do you quickly, you know reverse to the older version? So there becomes issues when you're trying to manage all your manifest using Cube city apply and Kelsey Kelsey Hightower said our keep city out apply is the new SSH You know, you're not supposed to SSH into servers and stuff like that in the same way is not very scalable to keep managing your application and deployments using keep Cube city out so that's when the CEO of we've works Alexis Richard's call coined the term github's so github's is basically a concept where you store your Store your Kubernetes manifest declaratively in gates and then there is an agent Let me see. Do I have it slide for that? Okay So github these are like the github's principle, right? Your system is manage declaratively I want to say declaratively it means that you define what you want and Then something else works. That's you you're defining a state that you want a cluster your cluster to be in Right and you store it in gates gates has of course we use gith. We know that gith has like versioning, you know You can tag commits and then each commit is easily revertible, right? You have a log of changes Of each change has been made to your manifest. So that's where we come about security, you know before So all makes a change, you know, the person has to make a pull request You can get eyes on it. You know if something breaks you sort of can look at your commit log and know, okay This is what we've been doing. This is how the deployments have been progressing And then if you push it to get there has to be something That pulls it in pulls your changes from giths and then applies your changes on the cluster Which you know now brings spins up your application, you know, it applies the Deployment email it applies the services and all of that on the cluster and then you know spins it up and then you can You can continue to access it then lastly we talk about continuous reconciliation, right? You don't just it's not a one-shot operation You don't just push your files to giths and then they get applied once So there's a continuous loop just like in kubernetes There's a reconciliation loop where it's constantly being checked does the state of the cluster match what is on giths at a defined interval like if someone comes into the cluster and like touches something, you know, like Maybe your produce deletes it a deployment, right? On the next run of the the loop The agent is supposed to it could be flux. It could be i go see the it's supposed to realize that okay, um the The deployment is missing is not in the cluster, but it has but it has been defined in giths So it would apply it Or in a case where the deployment is deleted from giths, it would delete it in the cluster So it's basically the gith serves as a source of truth for it So that's basically what github is github is you define your applications in gith I have something continuously reconciling them on the cluster. So, you know, it comes with many benefits. So We talk about security. You have an audit log of each change to your Manifest any malicious changes would be reverted on the next run of the reconciliation loop, you know Then developers it's just like if you require everyone to Deploy their applications using sqpc at all that means the person has to be onboarded to kubernetes, right? It means that the person needs to know, okay, q q this q that deployments this But if you just need that gith that's if you just make it easier and you know, everybody already uses gith, right? So it's easier to onboard people and also because there's changes that easily revertable, right? If you revert your change in giths that change gets applied on the cluster So, you know that you can easily undo mistake, right? So it enhances productivity that way and is also increasingly reliable, right? Just imagine You know a really bad day Where your cluster is destroyed, right? You can easily get back up to speed with all your applications because you have all those manifests stored somewhere, right? You can basically install flocks and point it to your report and say, okay This is the state I want this cluster to be in so you can see that it helps with stuff things like Disaster recovery. So if you lose, you know If let's say your application is detailed by mistake or even the whole cluster if you you are actually using githops to manage things, right? you can You can easily Reconcile and get back your your cluster so Benefits of flocks flocks is split into Six cubanities controllers for those who are just knowing what Who are just hearing about controllers for the first time? That's basically the the the part of cubanities, right? when you create a deployment a Deployment creates, you know pods. So when you create the deployments I mean when you apply the manifest on the cluster There is a cube controller manager on the cube control plane that is watching for, you know, such manifest when it notices the That so is there's a controller that is running on the cluster that is constantly watching the deployments, right? I'm reconciling them to to the pods. So if you Define a deployment that is supposed to have two pods, right? The controller is watching The number of pods and it's like on a loop it will count the number of pods if it sees oh There's one more pod than it should be let's say There's an extra third pod associated with the same deployment. It's deleted Or if it's discovered that there's one less pod it will create an extra one. So it's It fits into the cubanities model where cubanities is already declarative and it uses controllers to manage His resources on the cluster. So that's basically what flocks do for you flocks We will check that your applications are running as they should as you have defined them in git So it comes in support for customize and helm we have a helm and customize controller is easily extensible We built it in a way that you could, you know, take parts of it You know, there are people building solutions on top of flocks. You could take out parts of it, you know You could build your own controller and, you know, mix it up with flux controllers So there's a lot of advantage to using flocks So just in summary flocks develops github for both apps and infrastructure, you know, with With control plane you can spin up you can have a Manager right to have a cluster that creates other cluster Basically, it's still the same concepts of controllers and custom resource definitions, right? You create a controller that understands a new resource So when the controller the controller can you can tell something like cross plane? Cross plane has a cluster resource you can take and when you apply it on cluster Cross plane will create clusters for you and make sure that it matches what you what you've defined So it can provide github for both your apps and infrastructure you push to giths, you know, as simple as that and then Flocks would do the rest for you flocks works with your existing tools like customize and helm It works with all cubanities to lean. It does multi tenancy We also have a notification controller that notifies you of changes, right? if you let's say you make a deployment it sends you a message on slack or Github it could be a github status notification, you know, like all your deployments succeeded or it failed These are trust flocks and there's a lovely community for it to work with So, yeah, I've been through sort of this. So it's basically it's It's basically going over what github says again Is an operating model for cloud native applications such as kubernetes And he utilizes version controlled system as the single source of treats So you it also enables continued delivery. So your apps can be, you know, continuously deliver through Automated deployments and you can manage your applications and infrastructure declaratively So Yeah, there's this is an overview of flocks flocks is a set of controllers. So the way flocks is Flocks is built right now. It's it's it's sort of Breaks out different functionalities into different controllers. So the source controller pulls in your your git repository like the files you've stored in git the customized controller connects to the source controller and, you know Applies the manifest is what has like customized, you know, using customized apply the manifest in cluster We have helm controller for helm also connects to the source controller The notification controller, like we just said is for alerting you, you know, giving you some notifications on what's going on and then the image reflector automation controller is used for Watching let's say your in your ci in your continuous integration You you build an image, right and push it to push it to To the image registry now flocks watches the image registry when you can tell flocks like oh I want for this production cluster I I want to updates for every major version, right one point this or one point that you can tell flocks like I want you to watch with the image reflector controller You want I want you to watch the the image registry and like notice when there's a new version, right? So you've you've you've pushed let's say you've pushed a new version of your app your ci has built it And pushed it to the image repository now flocks what flocks does is that it would update your manifest That is the image automation controller to update your manifest in gits With the new image tag and flocks view and the flocks the source controller will still pull the new manifest And apply it to you apply to your cluster. So basically it takes that's the cd part, right continuous delivery. It watches your It watches your your image registry if you saw in science demo, he had a github action that's sort of tagged that updated the the yaml If you if anyone will remember what's what he demoed so in flocks's case Once there's a push to gits it will pull it and update the yaml itself for you and then deploy it on the cluster So there's also under the flocks cd project We also have flagger which is used for you know progressive delivery Deploying apps with canaries feature flags a b relays and also it can manage any kubernetes resource so Yeah, it's flocks enables application Deployments cd and with the help of flagger, you know flocks and flutter flagger. They go world's they work well together you can also have Progressive delivery and all of this happens automatically, right progressive delivery just to expand on it a bit is when you know, you're deploying You're deploying a new version of your app, right? But you you won't you don't want to push all the traffic you don't want to switch over immediately You know, what if there's a problem? So in progressive delivery, you you know gradually shift the traffic in in in a particular way If you notice there's an issue you can quickly reverse, right? Because you you notice it on time and The other one is still running. You can't easily revert you can't do this gradual process of moving from one version of the app to the other So flocks can push back to git for you Which is what what we talked about with the image registry, right? When he notices a new tag for the image, right? It could do the pushing back to pushing to git for you It would it would update your manifest for you So it works for your tools So for your for your the source of your manifest you can use github, github, big buckets You could use your own self hosted github, github servers, you know For people who are working in like more constrained environments, you know All major container registries to ecr, acr, gcr, you know, all the major providers So it's basically can plug in into whatever like setting you're already using, you know And become this valuable part of your deployment process So It's we've said before it works with customized helm. These are customized at home are to CLIs that people use in helping them deploy Cubanis's manifest So it's also work switch each of them uses um our back, which is row based control to, you know control access So it does multi tenancy you can set Flocks up in a multi tenance switch such that you know flocks is reconciling manifest for different Tenants but in a secure way so for To expand on multi tenancy Multi tenancy is when there's is what we call more than one tenant running in a cluster, you know You might be you know a very large company and you have different teams different Um namespaces assigned to different teams and they're supposed to Deploy their applications in their particular namespaces, you know, they are does a multi tenance cluster You get the one person doesn't own the whole cluster. They are different people Using the cluster so in multi tenance situation you have to be careful so that one tenance In it depends on what kind of they are different levels of multi tenancy But you have to be careful so that one tenant does not access the other tenants You know, you want to lock down the cost that it gets and shots can still help with that so Yes, it's a lot to notify you. We have slack notifications You know microsoft teams github gclabs status bids bucket status notification, you know, you might want a With github status and education you might want like, you know, we github. There's this You can have this little sign behind beside your Your commits to show if it if it if it passed so you can send back the status back to git if your deployment passes, you know, you can Send a notification to github or githlab or whatever gith provider you're using and it will show that oh You might show a blue a green tick and say oh, so you know that this this this commits, you know Was deployed successfully or if there was an issue you could You would you know a lot that okay then an issue you probably now see a red Cross instead so yeah people trust flocks flocks is a cncf incubating projects And it was one of the only two projects alongside help categorized as adopts in cncf ci cd reader So you can check that out later Of course, we are a loving community that is Over we are like I've enjoyed so much working with flocks. You know, we are very welcoming very open We have contributors from everywhere. So we are also an open source project I also open to the new contribution contributors coming around we have Since you can't see my screen we have, you know, good first issues This is the flock cd repo. We have good first issues if you're looking to contribute So You could always take a look at the flocks repos. This is not the the only repo We have a different repository for each of the controllers Most of it is written in go So yeah, so we're also looking for Contributors if you like what we're doing you like the sound of it you can come around, you know, just attend our meetings Figure out what we're up about and if you feel like contributing you can So this slide is basically going over what I've said before the source controller fetches your files in giths The customized controller applies the manifest. You can see that there's a controller assigned for Each step that flocks is supposed to do. So helm is for helm charts notification controller is for the notification dispatch image reflector controller is for you know pulling that's the metadata that's the tags from giths and then the from An image registry and then the image automation controller is for self posting back to giths of this in the giths the the yamels in giths So, yeah, all of these controllers work together to give you a nice outcome If you like pancakes, yeah, it's it's basically like all these ingredients mix up to form something really helpful so, yeah, we work with other tools and All these reasons I love flocks And other people to like to above We hear like stories back from people like oh like this has made using kubernetes so much easier for me You know, I've been able to run mouse 10 and see, you know, we have this if you have an application, right? Let's say you have An application that depends on a database You can define it in flocks so that flocks knows that okay It doesn't deploy the application to to the database is ready, right? So you can sort of have a dependency workflow, right? You can say, okay, don't deploy this app depends on this and flocks knows not to Create the application until the other one is ready. So we integrate with helm We give notifications and alerts and you know flocks manages itself declaratively like you You can install flocks with the bootstrap and flocks will You know, the bootstrap asset accepts a github repository So right from the start like flocks manages itself with github. So which I think is kind of awesome So we also have the flocks cli to make dealing with flocks easier for users So you can get started you can look at our repo You have a get started guide where you can browse the docs You can join flocks cncf slack, you know, there are users there people You know ask questions if you're having any any issues You can sign up for that. We are many on our mailing list, you know, join our meetings and also, you know, discuss with us on github Thank you, I don't know. I'm not seeing the charts. Is the enemy stop sharing my screen for a bit Is there are there questions? Okay No questions yet I think no questions yet But it was a very interesting session and Some toes, uh, Twitter Twitter handle is some to chiama. So if you have any question, you can reach out well on twitter or you can join in on the cncf slack and Start a conversation there about flocks Thank you very much