 Good morning. Good afternoon. Good evening. Wherever you're hailing from welcome to another edition of get ups guide to the galaxy I'm joined by the one and only Christian Hernandez the get ups guide to the gods Admiral get up Christian take it away, man. Yeah, so we yeah, so we've had so much fun last time We decided to invite Cornelia and Scott again to talk about to kind of dig a little bit deeper about flux and And how it relates to open shift and kind of just take apart the pieces Just a quick kind of quick a funny note. I'm actually wearing the Cuttlefish t-shirt today So I kind of want to say there was a There's a little you know funny story. I guess I don't know just smiling about I actually Attended one of the flux webinars right like the hands-on webinars and You know at the end, you know, you're supposed to get a t-shirt right when when when you do the Workshop and but it since it was virtual. I forget who was running it from from we've works But they're like, oh just stop by the booth at kube con in Amsterdam and you know pick up your shirt And then obviously So it's been two years two years coming but I finally have the t-shirt so It's gonna history and also last time it was It was on the way Before the last episode right and it's got delivered. Yes, right So I was supposed to so the last episode I was supposed to wear it And but it didn't come in time and then I checked the mail that that day that after we finished streaming and it was there Yeah, of course it was there. Of course it was so So yeah, so I'm I'm ready for for today. I got my t-shirt on and And yeah, so I guess I'll hand it over to to Scott and Cornelia. I guess Scott's gonna be driving today Getting deep You don't mind I'll I'll I'll I'll chime in really quickly Just some context for those of you who don't know us who didn't come last week I'm Cornelia Davis CTO at Weaver's Scott will introduce himself as well But for those of you who didn't make it last week I'll And even those who did two weeks ago. I should say is that two weeks ago? I did some demos I showed you for example the operator For flux so showed you how you can go to the operator hub and you can download and you can install flux But I really focused on once flux is in there. Let me show you what you can do with it Let me show you these different get-offs flows that you can build Whether you are doing it in production or you're doing it in development You might want different flows and I showed you a little bit of observability on that So it was more from the the perspective of what you can do with it What Scott's gonna do today is he's gonna back up a step and say how does this all work? So I didn't show you kind of the innards of flux all that much He's gonna show you a lot more of the innards of flux and of course He'll tell you in a moment that he is a helmet expert And so he's gonna sprinkle a bit more helmet than I did. Well, I did none. So Recently awarded something from the helm team, that's right. We should wish it you were okay. That wasn't you? No, no, no, he's he's being modest, right? So I was I didn't have any kind of a word or anything I'm just you know He's he's got the one of the top contributors, right? No, I don't think so Yeah, the the the award winners right helm contributor award winners 2021 This is name on the list. I forget. I honestly don't think that's me I completely missed the memo and that's cool but uh, but yeah, um Uh, yeah, I mean, maybe if it was commits or something like that in the in the Maybe I'm putting I'm putting the tweet putting the tweet in the chat Well, anyway, uh, yeah, um, just you know, I'm on the helm team. I right. So Scott would be DX it Developer experience at we've works. I work with Cornelia who leads the tech vision, you know for for for we've works Um, I I was hired mainly to focus to focus primarily on open source. I'm super interested in open source communities um, and and different kinds of structures including, you know, the rules of how we do things governance and decision-making and Just, uh, I think it's a really interesting way to help Think about our future as a species, you know, how we can live and work together So I like code because it kind of like puts all that in code in some way and we get to play with that Um in ways that that uh, that we can kind of prove it out. So um, yeah, yeah, I'm also part of the part of the helm team. Um and uh, uh, I don't know if I could call myself an expert but I but I you know, I have a lot of things to Show and and to help with and I'm trying to help reach some of these communities. So especially the the get ops and Um, uh, and kubernetes packaging like the helm related stuff. So Yeah, I like using the term general enthusiast, right? Like I don't maybe maybe I'm not an expert, but I'm definitely a general Definitely Areas of expertise, I guess, you know, but yeah, I guess yeah Yeah, yeah, um, no, it's really the the all these the teams that really make all of this work. So I'm super It's thrilled to be to intercept these um Yeah, so right so, uh What I was just going to do was show not really so much about open shift. So I hope I'm not I'm actually going to do totally fine my demo on a kind cluster. So no offense to open shift I just didn't really set it up. Um, but the the main point was to to to show how How you how you can install flux and it really You know currently again showed how to use the operator if you want to do that Or for when you do that an open shift and you and you want to get that going but even just to understand how the components are get in and and even just what a what a basic setup might look like for You know taking something that your most many people are probably doing now Uh, a get ci ops approach where you've got, you know, maybe you could have actions or circle ci or whatever Jenkins or whatever um making event driven, uh Responses to the things that you do inside of your version control like currently I said last last time um This is just it's how do you migrate that to a different tool and we're going to be focusing on flux Of course, there are other projects in the get up see ecosystem. Um, but we're going to be focusing on this one. So Sweet awesome, I'm by the way a big fan of kind I yeah like I use it all the time It's it's so convenient right to kind of test something real quick Really just like yeah, let me get this operator working. It'll work right. Yes. Okay ship it But it is but really it is an important part of the whole sdlc because all of this This whole get ops thing is about the entire sdlc And what we want to do is we want to have the same practices Backed by the same tooling regardless of where you are in the sdlc So actually showing it on kind is a really great place to start because that will be a starting point for a lot of people Definitely, that's a good point. Yeah, exactly Yeah, I think there's also a wonderful project in the sense that I was able to contribute to it by yelling across the room at cubecom A couple years ago right before the contributor summit when it wasn't working on anyone's machine And that's how it works. Yeah, that's right I love it. Um, cool. Well, so should I We didn't actually rehearse this but I made a gist and I have some things to do it Yeah, I know we're all doing this life. Yeah, yeah, all right. Uh, oh well Um, what I'm gonna do is sorry first do a kind of leak cluster actually meant to do this Oh, well, you know, let me share my screen here We should probably show that because so you can show how easily it's tear down and I'll show it. I'll show it Okay, well, we're like out of the hall of mirrors for a second here and yeah, no worries Uh, can you see my screen? Okay Can you make it a little bit? Yeah Yeah, increase font size. Uh, okay on which one the browser or the terminal both Oh, okay. All right. Boom. Boom. How's that? All right. That's that one's good. Yeah. Okay now Trying to make it match. How does that look? For terminal is that I don't want to make it too big. Does that look okay? That looks fine to me. Yeah. Okay. I mean I can blow these up like crazy Yeah, yeah, well, we'll we'll see we'll see what uh, if anyone Okay, anyone says anything from the chat Yeah And you can send some glasses to us in the that's right. Yeah, thank you. Yeah, so okay, so I said keep going Yeah, that's okay. Maybe a couple more. Yeah, so as as as you requested boom Kind of lead luster. I deleted it. Uh, and if anybody wants to know it's it's the it's the uh, the kubernetes kind sig um Is where you find it So so yeah, so what I was thinking uh as this title might imply that hey people want to know how to do some Fairly basic things things that are that they usually have to write Some kind of scripting around doing um, and I was thinking here's a really good example. So, uh on kubernetes People want a team wants to deploy apps with ingress and they want that ingress to be a tlst and uh You know, so this is a fairly common setup. You've got an ingress controller, you know, whether it's like, you know ingress engine x or traffic or whatever else, um, and I just chose traffic for simplicity and uh Really could be anything. I'm just showing you how really how it installs and works I'm not going to be demoing all of these applications. Uh, and then serve manager to help you automate your your certs. So, um This is this is primarily, uh, this is just a very a very common setup and um, I mentioned this because I myself have written scripting around this and I've seen many other people do it. So, uh, so I'll show you how you can do that without this So, um, what I should have done actually I'll do this in a sec while I describe this It'll only it'll take less than 30 seconds. So I'm just going to create a little kind cluster right now. Um Nothing, no special setup. Uh, you know, just make sure you've got the, you know These probably aren't the current versions. I didn't look In the last week or or two. So, um, anyway, just just make sure you've got some versions that work and, um, for the for the The kind installation I'm on a mac. So I'm just doing a brew install. Um, but you know use, uh, use what what you like and, um What what I'm going to do right now just super fun is, uh I'm gonna Not show you my actual github token so that you can't like so Hopefully the audience is not gonna be like yeah, be very careful here Hopefully the audience is not going to destroy me. Well, you wouldn't be able to so again So basically what what flux requires that the cli is you you want to set a github token environment variable And this is all in the read. This is all in the uh, the getting started guide So I don't need to go in in depth here, but this is just why i'm doing this It's so that flux, uh, the bootstrapping the bootstrap command that i'm going to show you will Both create a a source repository of different kinds right now. I'm going to say it's a github kind Um, and I'm going to put it in my own In my own personal github user and I'm going to make it private. Um And uh in order to do that it needs a it needs a personal access token and I just gave it repost scope That's all you really have to do. You can see it in the in the guide, but um, so I'm gonna I'm going to go ahead and And silently read this take note demo gods, okay? I'm just uh, I made a bootstrap, uh Token um, I could show you all how to do that, but I don't think you really need to To learn how to do that and then I also need to export it because uh, I only did the read so that I could show you Without exposing without showing you. Yeah without show you without showing you So, okay, so what I'm going to do is I'm going to use this flux bootstrap command real quick. Um, and I just mentioned what it does Uh, there's a lot of other things you can pass to this. Um You can also specify specific components to add. I'm just going to do the out of the box defaults at which which, uh Which installs the um I didn't really bring a diagram with me. I could show it, but we did last week. Essentially it's going to install the flux components, which is a microservice style or let's say a multi service style, uh tool. So it's going to install, um, a customized controller a, uh, a flux customized controller or flux helm controller, uh, flux notification controller And those are what we're really going to look at. Um right now So And for clarity those controllers That's the part so flux bootstrap doesn't just install the controllers What you can think of flux bootstrap of doing is at the at the root of get ops for kubernetes Is that I need some automation and those controllers are the automation that we're installing on the cluster I'm going to do some stuff over in git and for those of you who, um Maybe are a little bit newer to get ops in the beginning. I really focused on what was happening on kubernetes I focused on the automation And it took me a little while to realize that a big part of what we do with get ops is we do a whole bunch of magic on On your behalf we automate not only what's going on in the cluster, but we automate what's happening in git That's why you need the github token and then we establish the relationship between those two And so It's really that whole bunch of things that's happening here. And so I'll let scott continue Those controllers are really that if you're thinking about get ops get ops is about declarative configuration version controlled with Software agents that are keeping things in alignment with what your desired state is He just talked about the controllers that ensure that are alignment. There's the other parts of get ops as well Thanks cornell. Yeah. Yeah, exactly that Hey, uh, hey scott, can you there's been requests. Can you make the the fonts actually even more big? increase it even larger Yes, I can you must have a highly high resolution screen there. Is it like a Yeah, you got like a Which did you change? So no Change my browser. So I have a split screen here. Um, oh, okay. Yeah, uh, yeah I'm gonna just the browser maybe a little bigger. Yes The browser a little bigger There we go There I don't want to get the terminal and crazy. Let's let's do that and then I'll make the the uh See if that helps Okay, yeah go like yeah I just wanted you to be able to see what I did as opposed to being like three letters per uh per line. Yeah per line. Yeah They're they're saying perfect. So oh great. All right. Thanks for thanks for letting me know Um, so yeah, this is what cornelly. I just with just like followed up on what I said I just mentioned that this is just this is one of the diagrams that stephan uh drew at some point and it's used in The flux documentation. I know we showed it last week. So I won't be labor this but essentially You've got your your sources right now where I'm using github for this demo. You've got a flux source controller That's that really is watching that that source sources can also be S3 compatible Storage buckets. They can also be you can use a helm Repositories of source which I'll which I'll be showing you in this too and so on. Um Oh, so that's interesting. So you can actually have Your manifests let's say stored in s3 in object storage and the controller will watch that Yeah, correct. And and the reason for like so so one of the github's principles is is for um, I won't I want to get into the details of her now because they're being hashed hashed out Yeah, yeah In the get ops working group, but um, you know, again not related to flux in any way specifically but just that that's vendor neutral across the board but one of the The principles is that you have your your declaration of your desired state of your system or whatever part of the sub system that you're trying to get ops in uh immutable versions immutable version control and so, you know, uh get We probably say this almost every time but but get ops is just a name that's stuck It's almost who said that it's like a super ugly name in a way But it's just it's just such an earworm and it really just it really just stands in for It's definitely an earworm, right? Like it catches your attention. Yeah immutably. It doesn't have to be version control system It just has to be immutably versioned Um declarations of what you want your of what your desired state should be of your system So so this source controller in flux looks at that and watches for changes and it and the other controllers interact with uh The source that it um inspects So that's how that's how that works home controller customized controller does I don't want to get too deep into it at the moment But you'll notice you'll note in a moment that we use customized controller to apply plain yaml manifests for this Just because I did this very recently with a helm demo I'm skipping over all of the other like cool things that you can do with customize and I'm only focusing right now um on uh on on its use of applying Plain automatically applying plain yaml manifests to your cluster Hope that helped a little bit. Um All right, so so I'm back here and uh, you know, so we just did the bootstrap I don't know if you lost place, but but I'm gonna what I'm gonna do is I'm gonna do github repo view Well, so actually scott before you Will you scroll up just a hair? And so um, I just want to point out that the that you know the kind of hand wavy description that I did You'll notice if you look at all the things that bootstrap did It created repositories. So that was the gift part It installed the stuff on kubernetes and then it established connections between them So all of that stuff is is reported for you through the flux bootstrap now When you do the open shift install flux, we also set up some of this stuff for you So we're not I don't think we're running the flux bootstrap command, but we might be I don't remember my mood or colleague my mood Built the operator So but that's effectively what we're doing So you can see kind of under the covers what's happening when you install that the open shift operator for flux Cool. Yeah, exactly. Yeah, I think and also also it's important to point out that the the bootstrap is not only your bootstrapping the the The cluster but also your repository that you're going to be interacting with Right, so yeah, you have that the so it's that kind of like end-to-end of bootstrap not necessarily one or the other Yep nice Yeah, yeah, and so uh, you'll see in this in this uh, right now you've just got like a really bare bones read me and you've got a file directory structure oops I'm sorry I uh Did not mean to do that. This is actually just like what I had set up before this Whoops. Okay, so um, it did in fact do bootstrap, but let me get into a um, let me go somewhere where This didn't actually do anything locally yet by the way It only created the the uh, because I told it to create github um, it only created that um Uh in the cloud and um Or sorry on the github service and inside of the cluster and did the connection that or any of you was talking about so, um I actually um I'm going to uh To run this again because you can because I just realized that I didn't pass pass Well, you miss you miss the miss the path. So here here's something kind of fun So so let's actually let's actually go to it for a second and go code github scott ridby and then i'll do uh Michter, what did I say it was ggg demo? um Yes, it's either two g's or three g's. We'll see. Yeah, get up the guide to the galaxy. That's what I was going for but um, Okay, there you go. So now I'll do github uh github repo uh view um Oh, no, I can't do that. What am I talking about? I need to I need to uh, I need to clone it So let's let's clone this thing Sorry folks This is how we know it's real. You're fine. Oh, it's real. Yes, you're fine. Yeah I can just do uh gays, all right I'll do this It's how we know it's real That's right. That's right. All right, so Now I'll go in here and now I'll do a github uh uh repo view Website browse. Okay, so the default is to put it in a in a folder called flux system And that's it. I'm going to change that for you. Um for fun I just want to show you how disposable some of the stuff is You're going to go into the danger zone of I'm actually going to go into the full on danger zone And just leave repo Recreate the thing you don't have to do that, but this will just be the easiest to show you um Boom. Okay done. All right. So now Um, or I could have probably done that uh at the same time I probably could have pushed that because you you can actually your repo Um, you can bootstrap an existing repo so I could do that next but just to keep keep on topic here. I'm going to I'm going to put that extra line in and um Just make sure to specify the path. It's not going to show you too much magic here. It's really just um uh Oh, no Am I am I dying here? Maybe you know what maybe I'm so sorry. Maybe uh I actually don't know the easy bootstrap. Uh Revised I I would almost like just delete the kind cluster and do it again. Yeah, I was going to say I think that's fine. Yeah, I think you just kind of this that's what kind's for right and maybe um Well, what while we're waiting for that. There's actually a couple questions in the chat. Uh, so maybe we can address So, um with shari, uh, actually he's asking when is flux to operator? When will that be ga? Yes, so I can answer that real fast Uh, I'm going to go to just the flux cd.io website go to learn more and then I'm going to go to Let's see the roadmap is a good place to get an idea of what's happening But we had made this link very recently to get to give a timetable and I hope it helps people Um, some people said it was very helpful. Other people said it was more confusing for them And I don't know which is right. So let me let me take your temperature Here's a table with dates. Some of the dates are tbd Because we can't know but it is actively being worked on and so it's you know imminent The dates are, you know, what happened for each part of the flux project on that date, so October of last year flux when I went into maintenance mode There's some details about that I won't like waste the rest of our demo time with that flux to cli went into development mode um We were at that point working to finish parity with flux one And people were encouraged at that point to test flux to pre-release is a non-production which many people did The get-offs tool kit kit by that date was all alpha so, um This is just a This is just like a slightly more complicated answer because with flux one we could it was really just um We didn't have it separate. We didn't have versioning separated because the system wasn't as multifaceted as it is now It's now. It's a multi-service architecture. So The flux the flux to cli uses cement semver and the tool kit apis follow kubernetes api versioning pattern and we're even a little bit more You know, basically for us when we go when we go beta. It's production ready for the apis So so scott Flux to get ops tool kit. Can you kind of explain those two things? Yes. Yes. So flux one So so so these these are two columns because it just had to be that way flux one is really just one column It's easy to it's more. It's easier to describe or at least it's it's less faceted to describe for flux two We've got we've got uh flux two is really It really has two parts one is the client or the cli and the other is um is the get ops tool kit, which is the um what we I think at at some point had called an sdk really it's it's the controllers and it's the other controllers and um uh and packages that on which um Excuse me on which on which flux controllers are built and on which um Other people can build controllers for flux. So it's a it's a tool kit to build to build um to build flux components Almost almost like a library, right? Like if I wanted to create uh a plug-in for flux, I would just use the toolkit That's in order. Yeah, that's exactly right. Yeah, and it could probably be improved. Um, you know The ecosystem isn't gigantic out there if people building controllers for flux yet But there is a lot of interest in it and people are doing it. So yeah And the so let me also add it another element to that description go even a little bit higher level So what flux one did was flux one did several things All together so it did things like it watched image registries that watched get repositories It would do updates from the the uh image registries out to the get repositories Then it would also, you know, deliver over into kubernetes. So it did all of these things And as we as an industry became better versed at what get ops was we started to want to build Have a little bit more control over exactly what that Get ops flow looked like from get over into the runtime environments and those types of things and so Flux one had all of that kind of baked into it had those That the get ops flow and that was something that I showed two weeks ago The get ops flow wasn't something that you were able to really change all that much It was all kind of baked into flux one What we did in flux two is we said we actually want to be able to control these get ops flows So we're going to break flux one into various components And then what the cli does is it does it first of all it gives you cli But then what we're also doing with the cli is some of these commands like the flux bootstrap and so on Takes those components because as soon as you break things in the components, it gets harder like how do you get started? Yeah, so what flux bootstrap does is it takes those components And it reassembles them for you in such a way that you don't have to take on that burden of understanding all these low-level primitives just to get started So that's why we have the two columns the flux cli As well as the components the components are a set of components You can extend that set do all sorts of cool things and then the flux cli is Was part of what we have in flux one and it allows you to kind of put those things together and leverage those components And scott's going to show more of that today Yeah, the timetable links to it too, you know, so Someone commented scott that you could have ran flux uninstall Yeah, I hope that's someone from my team saying oh, thank god. I should have really done flux It probably is because we ye buy in ye bayon. Um, I don't know what that But Yes, well either way, uh, thank you very much. You're right. Yes Hey, at least you got to see kind of how it how it works otherwise. Um, and and Finish there is also asking if um, how you get the unicorns in your uh, in your cli. So, oh, yes That's uh, that's top secret. No, I'm just kidding. It's not um, it's well real quick Let me just answer this question first because we we gave a little bit of setup. It didn't really drive it home. So the the the next The the most recent date was um, was when flux two reached feature parity with flux one in february um, we did and uh, and because of that, uh There's a partial migration mode that have been announced in february For flux one users that people are encouraged to migrate to uh, to the to the v1 beta to the beta apis If you only use those features. So for example, if you do flux one read only mode and use the helm operator, you're good to go um the The image automation at that date image automation controller the image update automation controller, uh apis are an alpha only and all the others had reached beta. So basically if you're not using automated image update, um Functionality from flux one then you should be good to go as they're ready to go. It sounds like yeah Yeah, um Now the very next the very next date is when we're going to say that that um That flux one has has been superseded Um, so that that on that date, which is tbd We don't know exactly when it's going to be because it's uh, you know, like flux is having improvements Really primarily being released every week, but this actually was a two weeks release and there were a lot of improvements So, um, but we're still very very careful with versioning. So uh, the helm operator We're also be archived then when when flux one is superseded just because there is a It's it's unrealistic to at least for for public use here It's unrealistic to upgrade the the helm controller to um to current versions of kubernetes I really I really like the fact that ease the word superseded instead of deprecated. Yeah Um, so I mean kudos to whoever wrote that because that's actually uh, I think a better word for it than saying deprecated, right? So, um, it was it was me But also it was a collaboration between other members of the team. Um, a lot of conversations with stefan A lot of conversations with with with with michael and hitta and other members of the team to really make sure that we can commit To these things because even though we have some tbds on dates These alignments are are commitments That we are that we are making to users nice so, um, really really so so basically like what this really means is that um Is that only the cli may get breaking changes from that point forward? And the primary reason is because it will need more testing. We want we don't want to uh have to go to You know flux three just to like change some really obvious and important cli CLI uh command so, uh, the the thing that really matters the most in the superseded, um, period Which is the the next one is that um, is that all the the flux api Apis are our beta so that means they're production ready Got little footnotes here for people that want to understand that okay. I described it before but just uh, Just just please look at it. Um, and then the very next one will be that um, will be the public release the ga And I think that was the the op's question. Yes So that means that cli will commit to backwards compatibility. Um, we'll then follow Ctl style plus one minus one minor version um for the simver and then also similar for You know the apis controllers and the validation webhooks and stuff Uh, and then there will be a period of time after that Which flux flux one will be archived So it goes through cut sort of the normal well not normal, but like pretty well understood stages of um of that process Now this has been documented by the way. This isn't new This has been documented all over the uh in different places and has been mentioned a number of times But it was never really put in one spot. So that's why it's here and again you can get to it either from the migration section Under migration timetable or get to it from the roadmap and it's just linked right there I hope that helps a little bit Cool. Yeah, no, that's great. Thank you for that. Uh, very thorough explanation. Thank you. Yeah, um, maybe too thorough But in any case, uh, I'm back here and and as you can see if people were paying attention I just like just deleted the stuff. So I didn't use flux uninstall which I could have. Thank you Um, but I uh, I actually just now now pass this through So, um, what I can do now though is I can kind of I can go back to what I did before And uh, and just do my get clone and get in there Oops uh And then uh, and then you can see, you know, what it really did is this didn't really do anything super special But it just gave me a a uh, you know, you can really set up your file system However, you want but the most important thing is when you do the flux boot, um It opens, uh It opens, uh Sorry, let me do one second Flux system, it puts, you know, it gives a uh, an okay an opinionated Structure when it starts at least where you tell it to go and this is just Uh represents a namespace and all of these, um, all these components are in the namespace So if you wanted to take a look at there's a single customization file, which by the way is not necessary Um, but it just kind of shows you what what is installed that these other two resources Uh, you can not do this if you want And then, uh, the gotk sync the get up to toolkit sync We'll show you, um This is really the, uh Representing the source that currently I mentioned that it does the linking between it's in the cluster and what was just created in your source repository This is the the, um The flux source controller get type source And it shows where you're getting the information from so that's the source There's a customization Object that the customize controller uses when looking at that source Um, it uh, and it uses the source ref. So it uses the get repository type in flux system, which we created um And uh, and what it does is it looks inside of the dot flux or sorry flux boot directory So anything in there That is a a kubernetes style manifest will get automatically applied to Your our system every 10 minutes And you can specify that interval with the commands you can also just Modify this and edit it right here So that just gives you a sense of how that works And then if you wanted to see all the components that were installed you can look inside of Um the components and it shows you all of the uh the cluster components For yeah, which are the things that you saw scrolling by when you did the flux bootstrap You saw all these things getting created. Those are all the things that are in that that third yaml file But there's something here that I want to emphasize because What we've done here Is we've installed flux But we are get opsing That installation So that's what bootstrap does is we're get opsing the get ops agents And so if you want to change the get ops if you want to upgrade the get ops agents you go You know some of the components you go and you edit the yaml file that has the components Do you want to edit the get ops flow that brings things from get over into the cluster? All you need to do is change that in get and commit it and we will Sink that into the cluster. So what we've done is it's got the auto update stuff So now all auto updates are just commits into the get repository Yeah, it's kind of as and someone says someone chatted Hillary chatted get ops inception almost right so you exactly the the the bootstrapping process Basically just creates the manifest applies the manifest and then and then flux uses itself essentially just to keep those in sync Right, so if you wanted to make make changes to the crd's for whatever reason, right? Or like you said upgrades, you just make a you know, you you you don't have to do that outside of the the get ops Framework, I guess I'll use it for lack of a better term. You could or paradigm, right? You don't you do it actually within the own paradigm itself Yeah, exactly within the own paradigm and that's super key because it auto update stuff isn't That unusual. I mean I have stuff auto updating on my mac all the time or on my phone. Yeah, my phone's doing it right now So yeah, right, right The mechanism to do the auto update isn't the same as the application that's being auto updated What we're doing is here is the mechanism for doing the auto update is the thing that we're auto updating It is totally inception solely inception. Yeah, so it is really cool. Yeah, yeah I'm using this to show as well What we just showed that flux that source for this excuse me that that custom resource for the that's defined by the source controller You can use flux commands to get it. You can also just use kuddle commands to get these but The flux commands are kind of nice because it can it can help you with discovery a bit If you're not exactly sure what to look for in Kubernetes yet, it will tell you So Go ahead Well, I was going to say you get you kind of have to hunt around for like, you know, you have all these Manifests everywhere, you know, they have to and you have to kind of piece it together in your head You know labels help a little bit, but it's it's nice to have like a point of entry It's like just give me everything related to x, right? Yeah, and it saves it saves you the trouble of doing a kubectl api resources Oh, yeah, the api resources this and now doing a kubectl get in that api resource name Flux just says, okay, we'll do we'll do that stuff for you Exactly and you can see that in the sort this the source in kubernetes believes that it has synced this shop Of the main branch And this is my just local. I'm not ahead in any way. I'm right there Um, so that just gives you a sense of there. Um, so what I was going to show you real quick again The tools themselves like like it's not really that critical for me to show you this But I just wanted to give people a sense of how they could do all this stuff that they normally kind of Usually have scripts to wire together and have weights and checks and so on So I was just going to follow a similar Pattern just put it inside the make a namespace for this just like flux system where all the the flux system stuff is installed oops And then I was going to use this flux create. Oops, sorry I'm just going to echo A very simple namespace object, you know, just write it out yourself, right? Um In fact, uh, actually, I think I probably screwed that up one second I as a as a vi fan. I'm glad you're using vi I don't know why I I thought maybe I screwed up the tabbing Okay, it's good. Yeah, so so right. So it's just like a simple namespace object, right? And the reason that this matters is that, um, you know, helm does have a uh, the helm Helm does have a You know, it helps read didn't initially Have the the namespace creation functionality, but then by popular demand it was added back with with the command. Um, this is just using um This really just is a similar thing. It's just using a namespace to in order to install your helm chart so I'm gonna I'm just going to do that. Um, in this case, we're just using the the uh The customized controllers to do that because since it's in the flux boot directory when I push this up It's going to create the namespace. Uh, in fact, I can even show you But why don't I do that all together Just for fun. So I'll I'm going to use these flux, uh, create the commands as well to create I'm going to create the helm repository source that I showed you. Oops. Can you see this text this better? Yeah, that's better. Okay. Well, you're seeing me paste it into the the terminal anyway, and I wrote this stuff. So You can see it twice now easier. So yeah, so so basically I'm going to create a uh, uh, a helm Excuse me a a flux. Um Helm repository, uh type source And that for for the source controller and then I'm going to give that a URL and I'm going to give I'm going to give it a namespace because I want to put it in there Uh, I want to put it in that namespace that I was just about to make and I want to for now I'm going to export this as opposed to imperatively creating this. I want to export this into a file Uh, inside of that same namespace directory. So oh so you can create it via the cli Yeah, or or just have it Exported and then you know do it with git. Yeah, I'll show you how to do it without the cli too I just wanted to show you that this like gets you up and running quickly. Um So instead of instead of having to memorize yaml, I think yeah, this is exactly and this is what Yeah, what it looks like and I mean truly the components are quite um Under the source controller. There's the git repository crd. We saw the helm repository crd It's fairly clear of how how to I mean not fairly it is very clear how to do this But you don't you don't need to you can um, you can just use these commit excuse me use these commands To help you but this is what it looks like. Um, I gave it a one minute interval of uh I'm not really sure why I did that but you know, uh For helm repositories, you probably want it at like a 10 minute interval or whatever. So whatever Or less, you know, once every hour what it really just depends on what you want If you're if the helm repository updates very frequently, you might want to bump it up If you don't deploy that frequently that maybe it doesn't matter to you So you get to change that but luckily you can do that get up style at this point and do it all within Within these files. So then I'm also going to create a a helm release object and flux to And and while you're cutting and pasting there, I want to clarify a little bit what's going on with that export command so the export flag says Go ahead and stick that, you know, pipe this to a file. So he he, you know, had it sent to the file If you don't have that export command, what it's going to do is it's going to take care of sending that over to get for you Yeah, that's what I was actually, um Oh, I was thinking about that that automation like how it gets back to us So that's good to know that I can just create it from the cli but since it has the get help token It can take those pieces and then um, I guess retroactively I don't know how how what what it would be but it would apply, you know, what that the state of the cluster to The get repo. So now they match Exactly. Yeah, so so that it's actually really important to make the point that when when we do these creates even if you didn't have the export in there The command isn't what's applying things to kubernetes. The command is sending things over to get and then The controllers that we already saw the controller that's pulling things over from the boot directory Is what would bring things over? Okay, okay Ever apply to kubernetes directly Gotcha, gotcha. Okay. So now that makes sense. So yeah, so now the workflow makes sense, right? So when you're doing the flux CLI you're actually Doing stuff to get and the controller's job is what's actually applying it. So exactly Yeah, and and that's uh Except of course for bootstrap because how else do you do it, right? So yeah Exactly, but the nice thing about the bootstrap is it can be rerun Uh, so for example, if you If you already had you already have your your get repository with all of your definitions in it and your cluster dies I can show you that at the end if you want you just sort of spin it up again and run a flux bootstrap and then you've got everything uh Should be if everything works properly set up the way that you have declared in your new cluster Which is which is basically what you did at the beginning of this talk. Yeah Because you had the get repository already. Yeah, I just I just sort of started from scratch too, but yeah, so this is the helm release. Um, you know Helm users will notice this if you're not a helm user. Maybe just just realize that this is metadata that relates to how that tool Does package management and kubernetes or applies Different app packages of application manifest to kubernetes. So I don't want to assume the audience here, but uh, okay, we actually have a have a question about helm and the helm controller So, um, what does the interval do check for file changes or run helm repo update every minute? Yeah, so so what so so it really depends on what we're talking about So there's an you can have intervals for these various things. So when you're talking about the helm, uh Excuse me the the um the source the helm source um For that for a helm repo that for that the source controller will use that interval to check if there were any updates to that helm repo Uh, so it will essentially, you know get the, uh Excuse me get the the the helm repositories index.yaml file And see if there are new versions for any of the any of the metadata for the different charts that it describes And the the um the helm release the interval this is this is actually the helm controller now. Um going back over here Oops This is now the oh my goodness Right one of those tabs Almost did it. Okay. Here we go. So so so on the source that's when the source controller says, oh, let me check sources Let me check it again. Let me check it again. Let me check it again, etc That's the interval for source controller. Whether it's a git um type whether it's a helm repo type whether it's a bucket type The helm controller interval says, oh, I'm gonna I'm gonna ask source controller if there were any changes um to my To what I need for my helm release If there were any changes to the values that were sent, um, etc And that what's in the source controller is Give me just a second here Uh, when I was showing you the helm release object um Geez give me one second here There we are when I'm showing the helm release object. It's this you may have A value section here that overrides helm values You may have values from for a config map from a config map or a secret, etc. All of that is described in the in these, um Uh, this is the helm repository crd, but in the helm release crd definitions There's a lot of information about that. It's kind of maybe a bit more than we can Show right now if we're going to get through this stuff, but um, but that that's what that is what the interval represents So you may make different changes to your chart for deploying like people do in other and get ci ops often Change the value change something else change the dependency um And but rather than your push to to your version control system Um being what triggers the change. I mean, we can also do that this polls and it says it's just constantly looking and says Um, all right, you got a change. I'm gonna I'm going to do my thing I'm going to deliver that change um Hope that helped a little bit. Okay. So so now if oops now if you check it out um, you can see that, uh You know I've got so I've added this trap this this thing for traffic. Let's just like show you what get ops looks like now So i'm going to do a get add um You do this get the way we do get status first Just to remind everyone the files that you added so you added that directory that you just showed Okay, correct. Yeah. Um lots of demos just for for ease. We'll say get add period get ahead or get ahead Yeah In demos, I'm just going to try to not do that in demos because in the real world scenario, please don't do that Yes, yeah, I I've actually been People tell me things when I do demos about the get add chris remembers that but Where I actually bit me so um, but yeah And if you're doing and if you're and if you're adding even a path like this, please do get Diff stage just to see what you've got staged. Anyway, I don't need to do a get, uh PSA here, but um, but yeah, thanks for earlier. Um, yeah, so so now I've got I've got this I've got local stage changes. So I'm going to do get commit a ingress controller All right, I got my GPG stuff going. I'm just going to do a get push Actually, let me do a get remote v Just to make sure it's right. Okay. Yeah, that's right. Do a get push. Um And you're going to see uh, there we go, uh Let's see First I want to do a flux get Well, um, get uh, oh my gosh, sorry get log Uh, just to sort of get that full Shaw and then I want to do the uh once again a flux Uh get source get and it's going to show hopefully Oh, no, it hasn't reconciled yet. Oh because I think I have it on every 10 minutes So I'm actually going to do a flux reconcile command Which is pretty much just poking the bear and it's doing the same thing that this would do and say, okay, instead of 10 minutes from now Go ahead and oops. I'm sorry What did I? Oh flux reconcile source. Yeah Oh my goodness. What is the command so and don't Uh, uh flux reconcile source. Is it is it uh, all right get and then Under the name I guess wow clearly I am uh Uh, I think it uh flux Yep, I think so There you go Okay, thanks Okay, so now it uh if I do flux get source get It's going to um now it's going to show me the revision that I'm actually on Um, and now let's take a look at um, what did we do we added? Um We added traffic namespace. So I'm just going to do a k get ns Um it added the traffic namespace. Well, let me do a helm ls all Oh, I didn't add my helm stuff. Let me do a flux. Um, get hr Oh Did I do this right? I'm so sorry. Let me see This will be where observability helps. There you go. So flux, uh traffic. I've got a helm Uh I'll read you set the namespace Yeah, what namespace did the traffic go into? Yeah, I did uh, I did dash a so it should be all namespaces. Um, let's see. So Oh, oh, oh flux get hr is just looking in the flux namespace It's not finding the helm release object in there because I think you put the helm release object in The traffic namespace namespace You need to dash me dash and I think on the flux flux get hr I think There it is. Oh, yeah, you were correct. Thank you. So reconciliation and progress. Um, That's great. So I can I can if I want This is kind of cool. So now I can do if you want to see like, oh great. So there's now a traffic Helm release I can do it Okay described just like you would all right kubernetes administrators or or operator or human operators Percure ears up. So it's just uh, it's just this Okay, come on Do I have a lot of You need the namespace again. Thank you. Wow Thanks, right. So so you're starting to get um the the basic observability here as messages on the on the flux uh custom resource um If I probably do this again, I'm going to It's just not ready. So I'm just gonna take a moment oops You're just gonna take a moment. Um in any case any case we can see it. We can see it happening. We can see happening. Um, uh Yeah, the controller is currently applying the um, yeah, I can do I could do a uh Uh, so it actually so it actually the the controller maintains the helm um Like it's not doing a helm template right and piping that to apply. It's actually using the helm Uh, correct. Yeah, it's not using Helm templates using how so I'm actually gonna I'm gonna get out of this Because I think uh, you know what it looks like and we can look at it in a bit I want to show you real quick. Um How you can you don't actually need to use these commands to do this Do we still have a moment? We don't we don't have that much time But yeah, it's well we you you guys have we we don't have a a hard stop. So Okay, let's go back to this time. So basically As opposed to so so we use the bootstrap commands to create Uh, or sorry, not the bootstrap commands. We use the the the flux create commands to to create these um These resources Right now, um, you know, and I just like you Don't add it a normal You know just echo for this and that's the same that's the same for any other Kubernetes resource exactly the same as these the flux create commands are just we're just helpers So I can just copy that into a new directory called cert manager and I can do a a literal find and replace and uh Let's go crazy Oh look at you okay, so What we so the namespace is now cert manager say we're going to install cert manager in the cert manager namespace Unsurprisingly, um the hell we hope is not going to be um correct here So let's just go ahead to jet stack or actually let's go to artifact hub Because that's where people should be looking for packages The cncf artifact hub so um go to cert manager Check out the installation Okay, so I'm actually just going to Keep it sort of manager for now if I wanted to I could call it just actually why I don't I do it Uh, I'll keep it sort of manager for now for fun. If we had more jet stack stuff We could we could name this jet stack. We could really do however we want. Um, and then inside of the home release um I am going to change the version to 1.3.0 And there we go So ultimately I've got everything set up. I don't really have to do anything special um I really just want to see this Oh, they're they're um, they're asking if you can encrypt the font size and the vs code as well. Oh damn it Uh, yes, I can There we go. That's right Okay, so hopefully you got what I was showing you is that these are just the the files that I showed you in vi before Um, and all I was doing is copying pasting and I changed the uh, sorry about the font size folks And then I changed the the url to be the actual url of where the jet stack Uh Helm repo is for a cert manager. Yeah, so I guess what you know, essentially what you're doing is you you copied the traffic one And you you changed it and then you're just going to apply those same Manifests. Yeah, it's just I'm you're installing cert manager. Exactly. It's just kind of an easy way to do it You can also um, just go to the these these uh the spec um inside of the documentation to and go to the helm controller helm Both the source controller helm repository crd and the helm controller helm release crd. That's pretty much all I just did You know, you don't actually have to use these these commands at all. They're just their helper commands so, um, so anyways, we have that and um, and I just got the right I got the right version Um, note that I'm specifying a pinned version. You can create version ranges Sember ranges as well Um, so that is interesting. So so in the meantime, um, the helm chart had installed. Oh, it didn't install Something failed You know, I am actually very curious to see what failed reconciliation failed why Sorry, I'm gonna bump down the The font, uh, it's waiting for something. Tell me I'm waiting for resources waiting for the condition Do you not know why it's waiting for a condition? What condition it would be waiting for? But I think with what the time we have right now, I'm not going to look at that. I have just done this and it's fine It's trust me. It's fine. Um, so, uh, so now what I'm going to do just to show you this part of it Is I'm going to do a get add, um flux boot cert manager Yes For example, you could name only it if you want to right so and then I'm going to do a get commit um sort managerial and then I'm going to get push oops kind of actually push it and then, um You gotta make an aliases for all your typos so that way you're working Because that's what I do. Yeah, I just make aliases for that Exactly, um Okay, so then um, so then, you know, uh, again just to show you, uh, you know It's it's like too instant I should really have multiple windows open with watches like currently was doing before but if I do a, you know a um, you know a get log a get log and one And get that get that Shaw and then just do a a flux get Source get and you you see where we're at It's not correct because it's on an interval and so because you know in order to instead of just talking for a few Minutes while I roll these reconciles. I'm going to trigger that so it's as if the time period had evolved had elapsed. I'm going to do a Flux reconcile source for the name of my source And now it should It should match and it does now. Let's do a cube a cube cuddle saying that Uh get namespaces Um looks like sort managers there Just for fun. I'm going to do a helm and sir manager installed, uh Quite fast. I'm not really sure what I did with traffic. I probably screwed something up, uh in some little typo somewhere, but um Anyway, you can see how that worked out pretty quickly and it just does what it needed to do So what you would do at this point? I was going to show. Okay, so I was going to show, uh, right now you get your file structure um And now you're going to go ahead and do the same thing for the example app And I was just going to add pod info as the example and add an ingress I mean, uh An ingress statement to the to the chart for pod info And then just like port forward traffic because I'm a kind locally Um, and you could see it running, but I don't think I need to show you all that I'm not really trying to demo what ingress looks like um I hope this gave you a sense of how um How you can really interact with or basically how you how how you how the flex components work in general How you can set up your repo? It can be set up all differently I had mentioned before there's no gold standard of how file structures can be set up You can have the infrastructure for example in one get repository and you can have your applications in another You can separate them by team You can separate them by namespace, of course to match your your organization rules and RBAC in your cluster I'm just doing a fairly simple one right now that just puts it all together So it leads asking a question So I just need one flux deployment for several namespaces and a single repo with directories for each namespace Um, yes But yeah, that that that is correct. Yeah, you you invite when you say one flux deployment. Do you mean um Like a one flux operator managing multiple different namespaces. Yeah, it's so yeah one flux controller Or one source control ultimately one set of flux components is the optimal way you can scale of course. Um, but uh, and it really just follows. Um, uh Excuse me, um Sorry It really it really is built on top of um, uh What's what kubernetes is using already for controller runtime. It's like sick controller runtime Yeah, and so let me add to that. So I don't know whether the person who asked the question It was familiar with flux one But flux one they are was if you will okay Flux one was was single tenant if you will. Um, it depends on how you you know Define tenant but what you did with flux one is anytime you had a different repository You needed to have a new flux controller. So there was a one-to-one mapping between those And so this is a common question that we get which is hey the more workloads and the more different repositories I have the more flux controllers now the flux controllers really lightweight Um, so it actually wasn't a big resource hog or anything like that But what's happening now with flux two is that it's not that there's one controller anymore Remember, there's these we've broken down what we used to be in one controller into a set of controllers But you don't need a separate source controller For each one of these you have one source controller. You're going to have separate source objects Per repository. So crs. You'll have separate source crs source get, you know Get repository crs or helm repository crs That's what you saw scott doing just now with separate crs for the different helm repositories Or the different helm releases, but there's only a single each of the controller types. There's only a single one in their multitenant Yeah I'm so sorry No, no, I said what shari said, you know, he got it now. So okay good Yeah, and to be clear, you may have one source one defined source per repository Or per source type even if it's not a get repository. It's one of the other types But you can have multiple customized objects that then are responsible for applying Manifests within a specific path that's specified You could have multiple of those per per per repo depending on what you want those rules to be You may want to be on different time intervals. You may want them to have different etc So there was a question. I'm trying to find the exact question and I can't find it but I remember the the spirit of it is how helm updates work With with flux meaning like if there's like a Oh, is there a like if the chart is updated Yeah, the chart gets updated. Like how do I yeah, how does the update work? uh Yeah, so Sorry, just to be clear. Do you mean in term you mean the helm? Do you mean the helm upgrade commander? Do you mean updates to a chart? in a Well, yeah update both essentially, but yeah the the initial question about the update to the chart But then the actual helm update command as well. Got it. Yeah. So so if you um Maybe I should share my screen again. Actually, maybe I'll have to but If you remember if you want me to I will but if you remember the because I pinned a specific version of that chart Even if new chart versions are pushed to that helm repository It won't um, it won't do anything Chart uh charts are intended helm charts are uh supposed to be um item potent and so If you make a change to your chart and don't bump the version tough luck, you know, you really should Because otherwise you're really screwing your own your your excuse me. You are really um, uh, not following best practices Uh at that point or whoever would be doing this, right? Would would would have been make would be making mistake at that point And not following best practices. So definitely bump your chart versions when you want those your Changes to be made to each chart. Even if it's a read me change That's a recommendation Now if in if in the manifest you had put a semver range And somebody bumped it from and the semver range allowed you To have anything you wanted in the patch patch part of the semver the third part of the semver Then what? That's correct. You then then it would do that. So if right So then if you if you if um the source controller was on an interval to check every Half hour or 10 minutes or whatever one minute whatever you want. Um, and it sees it a new A new version that matches the semver range rules that you've set out Then it would say okay, cool I'm gonna go. I'm going to uh go grab that We uh, we have uh Different different techniques for for pinning those and I would really suggest people that are really interested in in Exact disaster recovery to to pin versions and to look at the image automation update functionality for That's being worked out for excuse me. That's being Moved from worked on from alpha hopefully getting to beta and not too distant future very soon for other aspects of flux which allow you to Set different policies and then and then the image update automator will write back To your git and actually pin versions based on based on annotations that you want to set You can also do that that kind of thing Like this without Um using image update automation controller Um using ci, you know, you can you can for example Uh, I mean, I would say you could write your own flex controller to do this If you wanted to but that's kind of what the image update automator is supposed to do But one could for example do that and pull, you know Say say your your your help you weren't doing a helmer post or if you were Looking at something else or it was a helmer post or et cetera and you could you could have that pinned back to get If you get if you wanted to um, so semver ranges are really good Basically if your policy doesn't need you to be at an exact specific point If you want to be at a specific point and don't have automation to to help you set up that pinning Then you want to just keep it pinned We showed the image update automation last week or two weeks ago On the last episode. That's exactly what we showed Oh, okay. Yeah, so it's really more of a comp. I'm just mentioning this in the same breath because the concept is similar you you Yeah, you If it's very imperative That you have a specific a specific version, which it often is Then you want to you want to do whatever use whatever tools are available to make sure that you are pinned That's it, you know nice awesome Yeah, okay, there's no, um, I don't think there's any more questions I don't know if you guys have anything else that you guys wanted to touch on Before we wrap up here people expect a blog post about how you set up your terminal is what it looks like Yeah Everyone's loving your terminal. There's like Upgrade their terminal. Yeah Yeah, definitely. Um, I would actually speak to it. It's it's a project this name I can't remember at the moment because I am jet lagged really bad. Um, yeah Yeah, no one knows but Scott took a uh a red eye just Thank you for doing that. He's flying Yeah, somebody's flying I know I wore a mask. I was very careful. Um, but yes, it was uh, it was a risk, but it was one well worth the cost Um And uh, I'm on an hour and a half of sleep, but hopefully that that didn't hamper me too badly I didn't use flux uninstall but that's part from that Pretty good part from that. That's right Um Nice, uh, so just real quick Like we mentioned last time we are putting on a uh cube con day zero event The get-ups working group is putting on a get-ups con. Uh, we are cfps are still uh, still open, right? I'll put in the chat I'll paste it in here for all those. Thank you. I was trying to grab it Yeah, I tried I made a bit leave for it. So it's easy for you to remember. Um Uh, I put in the chat there, uh, please if you have any ideas if you want to share some use cases that you guys had or done Um, we're we're interested in users and end user stories, right? Um, anything you want to share with the broader group Um You know cfp still open till next week next friday closes and we'll be uh, you know contacting those that are That are selected. So, um, yeah, these are a bit doesn't cost anything, right? If you're going to cube con you might as well check that mark check that a box, right to get registered for a get-ups con And and on behalf of the uh, the big um get-ups con programming committee Uh, christian and I um, don't be part of the hockey stick. Get your uh, get your submissions in sooner rather than later I can review them the better. I feel like yeah. Yeah You know, um You know, I'm guilty of submitting cfps at the very last moment But now but now i'm on the other end and i'm like come on like So now maybe i'll start submitting my cfps earlier now that i'm on the other side. Yeah waiting for them. Yeah Yeah, good And it's probably worth noting that there are other events We don't probably have a lot of time to get into I think we've we mentioned them the last round, but but um, There there's uh, there's get-ups days. There's there's the get-ups summit at cd con Um, there's a there are this is the year of a lot of a lot of uh, hopefully not the only year but A year where a lot of this is happening. So get your cfps everywhere not just to this And really welcome cross-pollination and collaboration between these different communities. So hopefully definitely In any way competing communities I mean, maybe we can make each of each event can try to be the best it can but but hopefully we can we can We can intersect more So folks from cd con can be involved in get-ups con and and vice versa and so on So we're hoping to really get a lot of good um synergy here That's awesome. Definitely. Definitely. Yeah, there you go. It's a community and we even cross like you said cross-pollinate communities as well. So um, yeah come share wherever you can and this is The year of get-ups, I guess right we can say since all these are popping up So, um, the the year of the linux laptop wasn't here, but maybe the year the get-ups is so Definitely year of the get-up finally. Yeah All right, nice nice anything else you want to share or chris you're ready to I mean Well But uh, yeah, no, there's no other questions. Uh, looks like well lead might be sharing something with us. So that'll be great. Um Yeah, there's nothing left on the air today folks. So thank you for joining. Thank you cornelia. Thank you scott Thank you christian thank you to the audience and We look forward to seeing you all soon Thanks for having us. It's super fun. Yep. Bye everyone. Thank you