 Hello everybody, welcome to the first episode of my fancy new show on cloud native TV. This is cloud native classroom My plan for these is to go through the CNCF sandbox because there are a ton of projects in the sandbox I don't know what most of them do. I think most people don't know what most of them do and I think most of the projects would like people to understand what they do and Why they're useful. I am going to be coming at this from like a very very beginner approach so if you kind of only barely know what kubernetes is or You mostly know what kubernetes is but you definitely don't know what any of these like ancillary tools are This is the one for you before we start I have to say that this is an official CNCF livestream Which means that we are bound by the CNCF code of conduct this pretty much boils down to be nice to each other You know be be decent. Don't say anything crude Don't be a jerk Be chill We can see anything that you type in the twitch chat and we also will be Responding to it live. So if you've got questions go ahead and ask I am Kat Cosgrove and today we're going to be talking about Tinkerbell with my friend. I pointed to the wrong side of the screen Jason Jason would you like to introduce yourself? Sure thing for those who don't know me. My name is Jason de Tiberis I am currently with equinex metal working in the developer relations group there building out a lot of the integrations that we have for different things including Kubernetes and What we're going to be talking about today, which is the Tinkerbell project So I'm on the Tinkerbell website and it says provision and manage bare metal anywhere What does bare metal provisioning mean? Yeah, so Folks that are dinosaurs like me might remember that In the past almost everybody had their own little data center I remember the first job that I had was a small Cell phone retailer and we had a you know a room in our main headquarters office that hosted the servers for all of our Web applications or and our POS system and things like that Most folks today are probably running those in some type of cloud provider environment But there are still folks who have need for data centers and running hardware inside of data centers and The goal behind bare metal provisioning is is to help provide life cycle management around that hardware infrastructure similar to what you would have within a Cloud environment around the virtual instances that you provision there Okay so We're we're trying to modernize something that has been around for like Not not really not a literal eternity, but an eternity in like in IT terms is it doesn't feel like it's been that long but It has absolutely been that long so Tinkerbell does this how and also like why would you why would you want to do this like what what is the use case? Why is this better? Yeah, well, so I think the biggest thing to say is well where Tinkerbell came from and The idea was is my current employer equinex metal Used to be the cloud provider formally known as packet We provide automated bare metal provisioning for users Similar to what you would have at Amazon or Google or something like that but you actually do with physical infrastructure and the idea behind Tinkerbell was to try to take that infrastructure management that we had built out To provide the packet now equinex metal cloud and make that available to other folks Because if you look at like the bare metal provisioning space a lot really hasn't changed over the past few decades a lot of the old a lot of the same projects exist for doing things like Pixie booting which is basically being able to network boot the hardware and Install an operating system things like that a lot of these projects have been around forever or they're particularly tied to You know one infrastructure management provider and things like that so the idea was is to throw out a project out there that's more generally usable and enable people to kind of Pick and choose which bits that they actually need So for example Tinkerbell isn't one real monolithic project. It's not just one binary that you install there's actually several different micro services that handle different parts of Kind of the provisioning lifecycle And the idea there was is that you can leverage existing infrastructure that you have and only use the components that you care about and kind of the core of that is the Tinkerbell workflow engine itself and You know while the first thing that the Tinkerbell doc say is you know bare metal provisioning engine It's actually really more general purpose than that If you look at the core workflow engine, there's a worker component. There's a server component that tells the worker component what to do You know in the general use case Yes, you can use it for provisioning infrastructure and putting an operating system on it and Deprovisioning it but you can also do other things like ad hoc tasks on infrastructure that you have around You can kind of power on infrastructure and have it sitting there waiting ready to install something for you you can Periodically, you know go out and use it to automate installing New bios updates on all of your infrastructure systems and things like that. It's really more You know at the core of it. It's really just this idea of Having you know hardware defined and being able to go off and tell that hardware to do something So it's a little more robust than it sounds on the first page of the website Exactly, but if we led with that I think it would cause a lot more confusion because it's like well, what do I need like, you know, this this workflow environment for And you know You needed to do these complicated tasks like provisioning bare metal infrastructure and there's some fun things that we can get into About what that enables But you know, it really is able to do much more than than just installing OS for example Well, that's that's rad. I assumed it was just installing in OS. So Now now we've all learned something. So there's still like a ton of Like legacy applications that are running on like the the old school bare metal that probably want to try to like move into the year of our lord 2021 and Sprinkle some kubernetes on it and So tinkerbell is kind of a way that helps enable doing that but allows them to keep their old Bare metal roots So there's definitely an aspect of that There's also an aspect of you know, why necessarily run a virtualization layer If you don't need to your hardware and kubernetes if you don't absolutely need to and You know, it's always a trade-off. It's you know, there's a trade-off whichever way you go There's some benefits to having that virtualization layer But there are also some drawbacks to it as well. So, you know, there's some really cool things that we can do Around automating the infrastructure when you have this gRPC based API And the ability to find these workflows you can do things like we built a Initial proof of concept of a cluster API provider for tinkerbell and that can actually Fully automate defining the templates and workflows needed to actually provision the hardware into a kubernetes cluster for you But you can also have it running other types of applications as well The possibilities are almost endless We have these things you know, each of these workflows can be broken down into distinct actions and One of the things that we did relatively recently was We built out what we're calling an artifact hub And or not artifact hub an action hub built on the CNC F artifact repository And you can actually find some predefined actions that are available to use there. Oh, cool You know, or you can define your own actions at the end of the day all of these actions really are are basically just calling out to a Docker container that exists somewhere and Some wrapping around what inputs go into it and what do you get out of the back end? so some of the More complicated things are abstracted away for you. You don't have to Worry about it. So If I'm a very hands-on learner when I'm when I'm learning something I can't I do always read the docs first And I I love a good documentation Everybody pay your technical writers more please But I I do start by reading the docs, but I can't actually learn something unless I like try it and The the term bare metal sounds scary and it sounds like it involves specialized equipment Is there any do I need specialized equipment to like actually try tanker Bell myself or? Like how do I how do I do this? How do I if I wanted to mess with this later today? How do I do that? So currently if you go to the documentation, there's a section of the documentation That's called setting up Tinker Bell and there there's a couple of different ways to go about it They're both hosted in a repository under the Tinker Bell organization called sandbox and and the idea is is that We take all of the various different components. We test them together at known versions So that you can have that reproducible type of environment There's one that's based on vagrant that allows you to basically spin it up on on a laptop or something like that We're working on Kubernetes automated Kubernetes based deployment So if you do have a Kubernetes cluster already and you want to try it out there, you can deploy all the components there and You know because we are a part of equinex metal. We do have a terraform based Deployment that you can use to deploy it to the equinex metal environment and be able to use it to automate actual Bare metal infrastructure hosted by us with your Tinker Bell instance as well. Okay Cool rad. How long does it take somebody to run through that? Like if you were doing it, you know what you're doing How long would it take you to spin up like the the vagrant flavor? So as far as the vagrant flavor It takes a little bit of time just downloading all of the bits off the internet You know, but you can get up and going in probably 15 to 20 minutes with With the small environment just with the vagrant up command. Oh, wow, that's fast actually That's that's quicker than I expected it takes me longer than that to set up some of my demos for Other things so that's that's pretty that's pretty dope Yeah, and I mean if you're trying to do some a little bit more complicated like set up the Demo environment for like the cluster API provider. It takes a little bit longer Because you have to make some tweaks to things to be able to make sure that the Kubernetes bits can talk to the The vagrant bits and things like that But you know, the the whole idea was is we wanted something that folks can go to Stand up in a short amount of time and just start playing around with the system Instead of having to like figure out the whole architecture. How do you piece all the individual bits together just to kick the tires with it? so for somebody who has like Very a little bit of experience with kubernetes assume. We're talking to a student here a little bit of experience with kubernetes They're my age or younger. I'm 31 so they have probably never actually touched a bare metal Deployment before they don't they barely know what that is. They might not know what it is at all Where where would you say that somebody should get started learning about? Bare metal as a concept and tanker Bell specifically is there like are there videos that you like or is there a particularly good guide somewhere so I think we put out quite a bit of content on our Streaming channels for equinex metal and I can go ahead and get you those links so that we can add those to the notes later You know a lot of our folks are doing a lot of good work around You know showing demos, you know going through the basic content for it and all of that But really we're trying to make it possible so that you can actually run this on whatever you have Tinkerbells compatible with both x86 and arm64 so cool I Know some folks have actually gotten it running with some raspberry pies in their environment You'll need a pie for to be able to do the network booting needed for it My next question was can I do this on a pie? I have a bunch of raspberry pies just laying around and I was going to take a crack at it on that so Yeah, but like for the demo that I did for Cubecon I had a few systems that are just small Form factor x86 machines that I bought maybe three or four years ago and have just been collecting dust And I threw that together Obviously, I couldn't automate powering those on and off because they don't have any type of a lights out management system But as long as I'm happy to you know push a power button here or there Everything works with whatever hardware that you have or at least it should Okay, so you don't you don't need a big like beefy intel-knuck or something like you can in theory do this on a raspberry pie for Yeah, there's there's definitely better things that you can do especially with some of the high-end notes that do have The management interfaces and things like that But no you definitely don't need that One of the things that we did recently was originally The the operating system component that we had that enables the hardware to run The worker and be able to run the workflows We called it OC operating system installation environment. It was about a four gigabyte OS image that you had to download so spicy exactly and that You know you needed four gigabytes of at least four gigabytes of memory just to run right the OS image To be able to do anything we've recently built out a smaller Alternative to host OC that we're called hook because we're trying to keep with like the tinker bell kind of nomenclature and that's actually built using Linux kit from Docker and That's enabled us to build An OS environment that can run the tinker bell worker in under a gig of memory I think it's about like 400 megs or something like that Oh, that's that's way better than four four gigs four gigs is a little bit beefy Yeah Yeah, good job interesting things is is when tinker bell was originally, you know put out there The idea was is to take the best practices that we learned building out the equinex metal platform Make that available for everybody else and with that came some of the For better or worse legacy that comes along with that so that OC environment contains a lot of tools and a lot of things to enable the things that the ways that we had done previously so all of the bits to be able to do bios update management and All of the hardware support for all the various things that we need were all pre-compiled Into that OS image and when we started building out this alternative hook We were able to leave a lot of that behind and push the idea that you do more of that With actions or some other mechanism with tinker bell. So in my opinion, it's a really Interesting time because we've gotten beyond the official release of tinker bell and now we're getting to the part where We can figure out, you know What do other folks outside of equinex need and and what are they looking to do with tinker bell? how do we enable that and Additionally, how do we improve our internal platform at the same time and how do we drive? You know Enabling those changes through the tinker bell project So we're we're currently, you know looking at the base architecture that we have now and figuring out where to take it Next so even if tinker bell doesn't fit your specific use cases now We're definitely interested in hearing what folks are looking to do with it so that we can you know Help enable those those use cases as well cool for the people watching on twitch if you have Questions you can throw them in the twitch chat and we will we will see them We have one question Let's say I'm interested in contributing code and I want to get into helping How do you go about helping there are several repos? It would be nice to know how people with more experience than me kind of get the initial push or some momentum Let's say as a job. Maybe I could ask for someone's time or mentorship What I've tried so far is cloning the code and trying to run the test and see what they do you might have more insight Especially as an expert. Thanks We are both experts in very different ways so That's a that's a good question contributing is an important thing to do with open source Especially with like with really young projects like like this one People typically do want outside help So please do that, but I get it that it is kind of like it's daunting it's it's a really daunting Task you may feel like you are potentially in a step on somebody's toes or You're embarrassed about the quality of your code even though you shouldn't be I'm sure your code is great It it can be kind of scary to do that When I started contributing to open source, I started with documentation changes As a newbie, that's that's always something that's that's really really valuable like just go through a quick start guide for something and Anything that doesn't like if you if you can't actually get something to run Following the instructions as written make a note where things differed or where things weren't clear enough and then Maybe open a pull request with those changes. That's how I started but Specifically with tanker bell, I will leave that to Jason Yeah, I think everybody's path is probably going to be a little bit different You know, we definitely encourage the doc's first approach for for folks who are comfortable with that I think there are other approaches as well. So we have a bi-weekly community meeting that we have and There's a Google mailing list and I can dig that up to make sure that that makes it into the show notes as well But if you join that you automatically get an invite to the community meeting You know, we're more than happy to have folks come there and ask, you know What they can help with? We also hope that you know, we have some issues that are on the various repositories, you know marked In a way that indicates that their help wanted or potentially good for first users You know, some folks just want to kick the tires with things and and see how they work It's perfectly fine. Just to come in, you know head first with the pull request Just expect that if you do go that way that you may get pushed back on the approach that you took and I Don't expect anybody on the Tinkerbell project would be Overly That's where I'm looking for abrasive about it But, you know, they're generally gonna want to have a conversation around, you know What's the what's the best path forward? And it might not necessarily be your first You know first idea when you're when you're starting out with that way Yeah, and from like a purely like how do you do this perspective the overwhelming majority of Open source projects. I think all CNCF projects are required to have this. There's a contributing md there's like a contributing markdown file that'll go over the actual like Required steps and processes involved in contributing to the project. So Definitely that is something you should read But one of the best things about the CNCF about all of the the projects in the sandbox and incubating is that this this community is really really really social and Really really welcoming and we we do all just want the best for each other like personally and professionally and for each other's projects and that Requires us working together well and Uplifting each other like nobody nobody at Tinkerbell is going to be a Jerk about the quality of your your pull request And nobody in any other project is going to do that either so and if they do, you know, send them to me and I'll Make a stink about it There are also CNCF ambassadors that are always willing to help too, but Tinkerbell is Really, this was my first choice because it is something that is it's bare metal is interesting and that it's it's very old and it's still a thing and It's it's a thing even in like very aggressively modern places like Kubernetes so I think it's also a super interesting place to start contributing you you get to dip your toe into some Technology that can feel a little bit arcane, you know It does feel arcane to me kind of Which I mean in like the most loving way possible in like a cool fantasy novel kind of way Well, that's interesting because if you get down into the the bits of it one of the components boots is the bit that handles DHCP and the Pre-boot execute execution environment pixie booting aspects of Tinkerbell And if you look in there, there's legacy built into those protocols and and how do you support? different things because different types of Pixie implementations in practice are very different So you need to be able to support things like a legacy boot pee Protocol to be able to make sure that you can get the infrastructure up to a bit where you can install a common Pixie environment like iPixie to be able to you know Use a common workflow from that point and and just the way that you know Different things just vary slightly when you're dealing with hardware versus virtual things but I think the the real interesting thing is is not necessarily what folks are doing in the data center But what folks are calling the edge right now and yeah deploy physical infrastructure in remote locations and needing to manage that infrastructure in a way that doesn't require you know this particular box be this particular task and pre-installed somewhere remotely and dropped in and and Being able to actually do kind of that cloud native management of infrastructure in those remote locations Some of the real interesting things that are happening around bare metal so First of all, could you say hello to your dog for us? Yeah, that's very cute Unfortunately behind my green screen and he's located in the office with me today because we have some visitors and He's he normally has the room of the house. So he's he's a little anxious. Well anxious about it. That's okay So we have at least one person in the chat who is who's actually a student and has zero experience with bare metal. So you've you've used The phrase pixie booting a couple of times. Can you explain what that is? Yeah, so basically pixie is stands for pre-boot execution environment and the idea is is that It's a way to sit there and initialize An operation and to be able to boot the system. So you don't necessarily have to In the old days, you would actually go to a data center You would plop a CD into the CD ROM driver even further back plop a floppy disk in and install your operating system that way pixie booting is basically a way to boot off the network using DHCP get an IP address get a OS image to basically boot up into to then do whatever you're going to do it can be install an operating system There are things like you can create menu system So you can choose which operating system you want to install or in our case for tinkerbell It's the bit that just enables it to get into that OC or a hook environment and do whatever you tell it to do Cool. Thank you. Uh, we've We've kind of inherited a lot of like like super old terminology over over the decades now of of computing that sticks around Because it's still, you know, it still exists, but we've we're so far removed from its origins that sometimes we just like we keep using these words, but Don't necessarily explain them as well I'm really bad about that and it's something I try to like keep an eye on with myself So I don't I don't use too much too much jargon But uh, I think it's really cool that tinkerbell is kind of bringing this Legacy way of doing things into The modern work because people still want to do Bare metal provisioning like it is absolutely it still has a use case But it's been uh, something that's kind of fallen out of the limelight over the last decade or so. Um, I remember before like cloud computing became Uh, as ubiquitous as it is now it was it was still something that I heard about a lot in the data backup industry, but Hadn't heard about it. Um In about a decade before I heard about tinkerbell. So well, and it's interesting because Coming from, you know environments where There has been some type of infrastructure run before I've been in places where there was no Infrastructure management and everybody did everything manually Yeah, and then, you know, it generally became Who's your infrastructure vendor of choice? Use their software to kind of automate some of these things or on the open source side You might have something like cobbler or some like that that made it somewhat easy to provide preconfigured options for what you want to do uh at boot time But made it a little bit more difficult for You know being able to automate some of the infrastructure And there have been some other projects that have come in and out during the during the period I think the thing that really drew me to tinkerbell though was um The idea that we don't necessarily need to be a monolithic You know entity you don't need to adopt necessarily all of the project to be able to consume it and kind of You know for lack of a better word modernize Your workflows in a data center You can hopefully just be able to pick the bits that you need and consume things like the workflow engine and rely on your existing DHCP systems for Providing that functionality if you want that um, and You know from my perspective trying to build out some higher higher water like cluster api You know, that's very Appealing because you can tell people hey, you can make use of this in your environment Without necessarily having to rip and replace You know all of the existing infrastructure management that you have for everything else in your data center Yeah, we want a little bit. We want a little bit more control Now and tinkerbell. It sounds like gives us some extremely Uh fine grain control. We have another question. Do you want to uh answer this before we go? Do you have a little bit more time? Okay I'm still kind of fuzzy on this so like how I might use aws or gcp Etc to manage how my application should run. Are we now provisioning the hardware they run on top of? So now I can get my apps out there from home and the person managing the hardware is also at home doing updates um So I don't know if I completely follow But the idea would be is uh, you can manage your infrastructure You know your physical infrastructure in a way similar to you would manage that Virtual infrastructure at a cloud provider um, so You know you could do the same things like uh being able to scale your application to meet Whatever type of hardware capacity you have obviously Unlike a uh, you know most modern cloud providers. You couldn't treat that capacity as Nearly infinite from your perspective. You're going to have some type of Uh hard limit, uh, but you could leverage, you know that scaling capability Or um, you can leverage things like automating your upgrade workflows in a similar way that you could do with that cloud infrastructure Things like that Well, uh, that is about all the time we have um I really appreciate you coming to Teach me about this this thing that I didn't know anything about and teaching uh the people watching about this thing that Maybe they didn't know anything about So it sounds like tinkerbell. It's bare metal provisioning, but it's also more than that. It's uh Whatever you want it to be it sounds like which is pretty cool um Thank you. You have been great Uh viewers you have also been great. Thank you for asking questions Uh Make sure to follow the channel so that you get a notification when uh, we go live next There are shows uh every weekday tomorrow is uh, caslin fields running fields tested And she's going to be deploying a personal blog on kubernetes, which is one of my favorite flavors Of demo. I love over engineering something that Should be relatively simple. Um and doing something that we're all familiar with Well, most of us are familiar with like deploying a blog Uh, but doing it with kubernetes is a is a good way to teach people. I think because it's you know Maybe it's over engineering, but also it is a practical example of how to Use a tool to do something familiar So thanks everybody. We'll see you tomorrow. I will see you personally Week after next because my show is every other week So make sure you follow us on twitch and if you want to you can also follow us on twitter Also at cloud native tv if you want to get a hold of me or jason our twitter handles are on the screen Uh, i'm cat cosgrove. This has been cloud native classroom good night