What's the sign? Was it the question I did at the end of my last video? And in this video I will answer it, and be sure it's not what you're expecting. My name is Consolo Reinelli, designer, architect, and I'm a PhD candidate with over 30 years of experience. So what is the sign? Aristotle in his book Metaphysics was the first one to point out that the hole is more than the sum of the parts. This idea leads to the foundations of what centuries later will become the general system theory. This theory suggests that to understand the complexity of our reality we must first observe it, in its entirety, in terms of its elements and the relationships between them. Very contrary to the position that I prevail in the sciences up to that point, which was, and in many cases still is, reductionist and mechanistic. Science, due to its evolution towards specializations, lost the capacity of an holistic observation, closing down into countless niches where it can only see a segmented perspective of reality. This is what Nicholas Newman defined as one of the most characteristic futures of today's societies. He called this the phenomena of functional differentiation. You know a lot of one issue and you know very little of everything. Umberto Maturana and Francisco Varela, a channel biologist, stated that realities are built based on our observations and what we are capable of doing. What this means is that only designers are able to construct what we know as design, and this is why we are capable of perceiving it as a discipline, a unit. Industrial groups internally produce the elements and relationships that constitute them. So why are we unable to give a common definition to what design is? Let's do some history. Design as a discipline has been around for a hundred years if you consider the bad house.  But is it really this way? Does it really appear a couple of centers ago? I don't think so. If you visit the Pre-Columbian Art Museum here in Chile, you will find out thousands of objects that were once utilitarian. The word art appears as the denial of their real value and a colonialist perception of reality. They were not created under the European conception of art, and they actually represent a far more complex understanding of their reality. If you go to the Metropolitan Museum in New York, or the British Museum in London, or any other major museum, you will probably see the same. What is alien is barbaric. What comes from overseas can be diminished and categorized as a minor art, or as a myth or not even a religion. It is a practice or a barbaric costume. Actually they usually categorized it as a handcraft. I could go on and on. Do you really think the science started in the 19th century in Europe? Really? Here I'm going to open a parenthesis. By the way, these museums and other institutions should return the stolen patrimony back to the original owners. And I'm especially thinking of the Hoa Hakana Hai Muay, which was stolen from Rapa Nui. Yeah, Easter Island, in 1869, and is in the British Museum. This is no decoration and is a center of family members for the Rapa Nui people. It's not an object, it's a living entity. It must be returned to the Iceland since it has been captured by the British Museum for the last 150 years. If you want a sustainable future, errors must be repaired. Close the parenthesis. Design was classified for a long time, couple of centuries, as a minor art. This has been discussed for a long, long time since the old debate between paleotoric knowledge or the old knowledge, what is classic of the practice traditions, and the neotoric knowledge or the new one, science theory. This was reflected by Jonathan Swift during the 17th century, in his book, The Battle of the Books. Yes, the same one who wrote the Adventures of Gulliver. But recently, last century, it has been de-agreed that design has a presence in both worlds, practice and theory. But you could say the same for every discipline, so what makes design special or different? Kirsten Ries in 2013 presented us with a solution to this dilemma. Theory and practice have usually been seen as exclusionary. She pointed out that there is a situation that would allow the coexistence of these realities. She argues that the incorporation of an internal observer would serve as a relationship between them, saving the delimitation of each of the entities and their operational closure. In other words, designers are responsible of making design what it is, making practice and theory work together, and on the same bram, becoming part of the system or discipline we call design. Edward Wule in 2010 pointed out that there are two ways to define a discipline. The first one would be by defining its method and the set one according to its object of study. Design's objects of study and methodology change project to project. Design in particular is a composite discipline, often involving methodologies extrapolated from other disciplines and incursions into other areas shared with other disciplines. Subsequently, other authors appear and state that design has its third variable. This new variable could be placed in the fields of exploration. Others point out that before and since the opinions of the Bauhaus, we can see the first attempts to explore through the joint works between craft and art. Undoubtedly, the ways in which we can define a discipline and especially design are innumerable. If you remember in my first video, I talked about how each designer has a different definition for design. If you missed that video, watch until the end of this video where I will put a card so you can view it. And if you are new, don't forget to subscribe to avoid missing my future videos. It is clear that the theoretical and practical model assumed so far is not working. An paradigm shift is needed. It is not enough to continue with the way we understand design as we have been doing it. However, it is necessary to ask how can a paradigm change be made without making design no longer be designed? Because we agree we have to change the paradigm, don't we? Francis Bacon, as early as the 16th century, wanted to establish a greater field of knowledge that will allow us to make artificial creations in order to mold and modify nature for the benefit of human beings. This is of paramount importance. On one side had this multidisciplinary idea, but on the other hand did not regard the actions of the human being as part of a larger system, nature, and how this would impact it from this moment on, human beings neglected the environment. It's not until the Brutal and Report in 1987 that we as a society present a new relationship for humans and the environment. United Nations defines sustainable development as the one who meets the needs for the present without compromising the needs of the future generations. The only difference is that through this definition we can recognize the fact that we are living on the infinite world. There's no mention of the environment in this definition. The idea behind it is that we can keep on consuming. But let's not consume at all, otherwise we, they, won't have anything left to sell to the future generations. It actually just promotes a way to sell the products we design. Yes, we design them. Sounds very familiar to what Francis Bacon argued, don't you think so? It also remembers me of Bernard London, who in order to stop with the Great Depression between wars, proposed a law that would oblige users to return the products after a few years. This way they would buy new ones. The law was called Program Obsolescence. Sounds familiar, doesn't it? When products last at lifetime? Or even more, shouldn't we as designers find ways to stop creating unnecessary needs? That is why today design as a discipline must assume its large share of responsibility. In 2009, Nathan Shetcher published a book called Design is a Problem. The future of design must be sustainable. There he stated that designers had created incredible things for human benefit, but at the same time had been the cause in many ways of our environment disaster. Poorly-designed objects, processes, buildings, messages had led to the increasing deterioration of our surroundings. But way before Shedroff, Buckminster Fuehler had published Spaceship Earth, another text which evolved around the same idea, and we can't forget Victor Papanec with Design for the Real World. This authors and many others lay the foundations for what we know now as eco-design, or sustainable design. However, its scope has been almost imperceptible in the industrial development of the second half of this 20th century, and the beginning of this first century as well. I recommend you to read The Story of Things by Annie Leonard. Link of this and the other books below on the description. Design, as we know it, is obsolete. Things that rise from the tradition are useless in our context. Just take a look around, look at the COVID-19 issues, look at the social revolts all around the world, and especially look at the environmental catastrophe we have created, as designers. The model is not working, and Buckminster Fuehler stated that. You never change things by finding the existing reality, to change something, build a new model that makes the existing model obsolete. In my next videos, I'm going to start talking about components that should be present in design in order to hopefully change the way we practice our discipline. Yes, design is a complex system, only practiced by designers. Yes, design is a discipline, only created by designers. Or you really think you are doing medicine when you apply Band-Aid. Fashion, design, design thinking, usually, but not always, trends, and other nonsense aren't designed any longer. But before talking about design components, I'm going to ramble about what is not designed in my next video, so don't forget to subscribe and share this video. Ciao!


Hey guys, it's Nate, AKA The Foot Accountant. Welcome back to the channel. Today I have a sweet video for you guys, talking about the best apps and websites that you can use to help you with your FIFA 20 Ultimate Team journey with your goals and with succeeding inside of FIFA this year. Basically, these apps and websites are huge supplementary products to FIFA Ultimate Team to help you see prices on the market, to help get notifications when players score goals. We'll talk about that. And to follow along with Team of the Week predictions, live football games, and notice some of that stuff. There are plenty of websites out there that you can use to help you with FIFA Ultimate Team. But these three that I have picked out today are my favorites, and I think that they can help you guys out a lot in some pretty specific ways. So I want to look at those websites today and kind of talk about them and how they can help you achieve your goals in FIFA 20 Ultimate Team. So if you enjoy this video, make sure you smash the thumbs up and subscribe to the channel if you are new. Let's get into the websites right here. Obviously, you know the first one I'm gonna talk about. This is my favorite website and also has an app on FIFA Ultimate Team. To go up with FIFA Ultimate Team, this is footbin.com. Now I'm sure plenty of you guys already know about Footbin and I mean, Footbin has a lot of competition in terms of other websites, including FootWiz and Foothead in terms of looking at players, being able to build squad builders, and all kinds of stuff. But I think Footbin takes the cake from all those three websites. This one is the best. Footbin has access to players right when they get added into the game. Like this Pookie card was announced yesterday when Pookie won Player of the Month and boom, all of a sudden they have this card in there, into their footbin database with a sweet image behind it, cool graphics, and the in-game stats already in there. So they have a lot of access to these cards. But the coolest thing about Footbin is being able to follow these price trends and price graphs. We'll go to a FIFA 19 player just so we can talk about this with you guys. I know a lot of people know about Footbin, so I won't spend too much time talking about this one, but I wanna take you through a few things on Footbin that you might not know about as well. So here's the messy team of the year. As you can see, the graphs are kind of the main thing for Footbin. They've always been known as basically one of the biggest, the biggest website for keeping track of player prices, looking at graphs for prices, and being able to see when players are high, when they're low, and just being able to see the prices of players. So I think that's one thing that's very important that I wanted to show you on this website. You guys probably already know that. But some things that you guys might not know, and this is why I think Footbin is like the best in terms of when it comes to foot websites with the database and everything, look at all this other stuff that they have up here. You can look at players, you can look at this statistic called the player game performance. This represents how many games and how well cards are doing in the game based on how many goals are scored. Like if we go back to this messy card, all these statistics up here, Footbin gathers from the cards that are listed on the transfer market in the game. The total number of games, goals per game, assist, and they calculate all these things out for you so that you can see which players inside of the game are performing the best. And this is very important for trading with Team of the Week cards and with gold cards vary on in the game because you can see which cards are being used the most and which ones are technically the best in game. You can sort by goals per game and look at some stuff like that. But there are so many features on Footbin that we could take you guys through today. I mean, basically if you wanna explore this a little bit more, a lot of people just use the graphs. A lot of people just use like the player search feature and the graphs on this website. But there are so many other things. There's SBC's challenges listed. Community SBC solutions, cheapest players by rating, and SBC rating combination, which are awesome. I love this page right here. You can look at the cheapest players by each rating and sort them even if you wanna look at informs. There's a lot of great stuff in there. You can build squads. You can do a foot draft simulator, generation squads, a swap deals tracker, a draft simulator. There's forums, and one other thing that I wanna mention. This is actually one of my favorite parts about Footbin. The player of the month contenders. Now you have Premier League, you have Bundesliga, and you have MLS that we get player of the month cards for. So you can get on this website and without even having to make in a graph of your own, you can look and see who are some of the top contenders for player of the month. Obviously, September just started. You see some of these guys on here from today's games when I'm recording this video on Saturday. But this is really awesome, what they do. And then you have another market tab over here with some indexes, which are very good to look at during the year. And then some more new tools and premium, actually.  I do believe that there is a small cost involved with that. It's a small cost, but it is a way you can support Footbin if you do enjoy what they do. But Footbin is definitely one of the best websites when it comes to searching players, figuring out player prices, making squads, and just general FIFA news all about players. This is your place to go in terms of a supplementary site for FIFA Ultimate Team. The next thing I'm gonna look at, both of these next two things, these websites, and I think they both have mobile apps as well. As Footbin does, Footbin has the website, which is most popular, but they have a great mobile app as well. I would highly recommend downloading that onto your cellular device. The next thing I'm gonna look at, though, is these next two are related to actually IRL games. So, like, real-life games, you know, Premier League games, UCL, Bundesliga, other competitions. This is where these come in. The first one that we're gonna look at is Hooscore.com. Now, this is a perfect time to look at this because there were games today all across the world, all across leagues. This is a perfect place if you wanna look at statistics for games that happened recently for a possible upcoming team of the week. So let's go look at Liverpool game versus Newcastle earlier this morning. Mane, I think, had two goals if this would load. If we could load this page, please, Hooscore.com. I'm advertising your website right now and you're not loading the page for me. This is great. But basically what this does is it's very in-depth statistics for Premier League games, for basically any type of game, any football game, you can get on here and look at statistics. There's match reports, the match center, which is what I was trying to load. But yes, you can see top performers and it gives them a rating. That's why I wanted it to load the match center.  I don't know what's going on here. Let's see if I can get this to load because I really, there it is, boom. This is the match center. Now this is huge for team of the week predictions because it shows you the position the player was in, shows you the formation. Now this is the end of the game formation so you might have to look back at the lineups to the beginning of the game to see where EA could put that card if it does get a team of the week. But you can see here it gives a player rating, goals, assists, and some other statistics in here as well. This is great for team of the week predictions and looking at what cards could get into the team of the week from the next week. So obviously Mane with an 8.5 rating and two goals has a great chance of getting into the team of the week next week and this would be a very easy place to see. He was playing striker in this game. So this would be a very, it's a very good tool to basically keep track of real life performances and how they could impact FIFA's team of the week. And I love using this website over others but just because of how in depth it is with the match center, it gives you a rating. It goes very in detail with statistics. Tottenham was another one today. They won four to zero over Crystal Palace. Yum and Sun had two goals. So I do believe that he could get into the next team of the week but if we could get this to load as well, there it is. You can see Yum and Sun with a 9.4 match rating. I know for a fact that Spurs did not start the game into 4-2-2. They started the game in a 4-2-3-1. So Yum and Sun was playing, Yum and Sun was playing center attack in mid or center forward. But again, 9.4 rating, two goals. You can see definitely if there's gonna be a team of the week from this game, it's gonna be Sun. And I think that he's basically guaranteed to get that team of the week card. Again, this website is very useful for looking at real time stats and looking at stuff that could be projected for an upcoming team of the week.  But the reason why I wanna look at this website with you, it is SofaScore and I love their mobile app. Their mobile app is fantastic. The reason I wanted to mention this to you guys is because of their notifications. Now, I have notifications on for a very select number of players inside sofascore.com and that is for OnesToWatch and live upgrade players. This is the perfect app to use because these notifications, when somebody scores a real life goal, which is what you're worried about with OnesToWatch, if you have invested in some OnesToWatch players because you think that they're gonna score or perform well in the game and possibly get an inform and you buy that card before the game, you're gonna wanna download this app and turn these notifications on because you will get notifications when that player performs well. You can set up the notifications personally to get like match ratings at the end of the game, notifications for goals and assists. So I would definitely set up some notifications for SofaScore because let's say today, for the Chelsea and Wolverhampton game, for example, you had Tammy Abraham who scored a hat trick. Let's say that he was the OnesToWatch card. Just putting it out there. I don't think he will, he's not gonna be, he's from the academy. Let's just say Tammy Abraham got a OnesToWatch card. We'll just say that he has a OnesToWatch card. He scores a goal here at the beginning. That would be very important information for you to know if you had that OnesToWatch card that you could maybe sell that card into the hype if you don't think he's gonna score another goal or you could go and buy that card as fast as you can because you know he's gonna be rising in price as other people see that he is scoring goals and maybe gets a possibility for a team of the week. That's how the OnesToWatch cards fluctuate but getting the notifications from this SOFA score app is, it's very key because these notifications are so, so fast and it gives you time to, if you're on your phone, if you're on your phone, you can actually get the notification from the app, speed on the companion app really fast and go buy a couple of those cards or sell a couple of those cards if you need to. So this is very useful for OnesToWatch, road to the final cards and headliners. Basically any card that gets live upgraded via an IRL in-game happening. So let's say somebody scores or an assist or whatever. So the live items inside of FIFA Ultimate Team, these, this website SOFA score is perfect for those different situations. So those are the websites that I wanted to look at with you guys today. Again, SOFA score, I used the app. Who scored? I think they have an app but I used the website version, the browser the most and then Footbin, I used the web app or I used the app on the web and I used the app on the phone which I would highly recommend both of you guys or all of you guys getting both of those. So if you enjoyed this video and you think it's gonna help you out for FIFA 20 Ultimate Team with these three websites make sure you leave a thumbs up on the video, comment down below if you have any questions and of course subscribe to the channel if you are new. It's been Nate, The Foot Accountant. Catch you guys later. Peace out.


Hi, everybody. So welcome to the cluster API tutorial. You're all very welcome. I'm Kylian. I'm Yuraj. Hi. I'm Stefan. I'm Jack. And Shivani is supposed to be presenting this, but she couldn't be here due to travel restrictions. We're going to have a video from her in a few minutes. So a couple of announcements. There's prerequisites on the tutorial at the link. If you've all run through them, can I just get a sense in the room? Can you put up your hand if you have done the prerequisites? Okay, good showing. So we're going to take a few minutes now to just let people run through the prerequisites. A couple of important things. If you're running on Fedora on your laptop or whatever, if you go to our troubleshooting guide, there's a specific setting you've got to set in Fedora. The tutorial can be unstable on Fedora because of, yeah, system limits. So please just check that out. Also for Windows, if you're using Docker for Windows to run this tutorial, you want to be using Docker for Windows 4.10.1. Newer versions are very unstable for reasons we didn't figure out. So yeah, so let's go through some of the basics of the prerequisites just to talk through that. Also, if you have a Docker app account, Docker login will help prevent you from getting rate limited. Yeah, so just to repeat what Jack said there, if you, yeah, we will get, if you're pulling the images, which is part of the prerequisites, please do log into Docker because otherwise this many people pulling from the same IP is probably going to limit it. So yeah, so the prerequisites are up there on screen. They're also on the repo. This is the link to the repo. See if any need to type it in. It's also on the shed entry, the description. So it's there, CPU limits, RAM, 32 gigs of disk space, each install Docker, cube cuttle, kind, cluster, cuttle and helm, all of the instructions for installing those things are in the guide. And there'll be people circling around the room for the next few minutes. Just see if you've got any trouble with that. So yeah, if you have trouble, just put up your hands and somebody will come to you. Do you want to say something about five minutes? So we'll do this for the next five to 10 minutes and we'll time box it and then we'll get into the full tutorial. Check, check, take a mask. Oh, yeah, I'm sorry. Yes, I'm just gonna get new to the top. So just for anybody just joining us, we're going through the prerequisites currently for the next about five minutes. If you haven't already managed to run through them. Everybody see the font or is it too small? Okay. Okay, so there'll be people circulating through the room throughout this tutorial. Put your hand up if you want help with any of the steps. If you still haven't passed the prerequisites, please, yeah, ask for help later on if you need it. So now we're going to hear from Shivani. Shivani is going to give us a quick overview of cluster APIs, a project, what the project is doing. And yeah, let's hear from Shivani. No worries. Is that a little louder? Yes. Out any tooling is very difficult. There are several tools that solves a part of the problem. And this is that is intentional, like as the sake, which is focusing on building these tutorial wants to solve the prop pieces of the problem and never tries to build one solution and even not try to build one solution that fit all problems. That's because they don't believe that we'll actually have traction in the community as everybody's needs are so different. Cluster management is really difficult. And one of the pieces that difficult is cluster creation. So we have Cubadium for that piece. But another another part of problem is managing infrastructure. So even if you have bootstrapping tools like Cubadium, they assume that you already have physical or virtual machines to run Cubadian commands on top of it. But to get this environment, we should have infrastructure specific knowledge. Also, we don't have any common interface until cluster API that ties together the infrastructure around tools like Cubadium to provide you a sort of holistic way to set up and manage the Kubernetes clusters. So like till here, we have discussed a bunch of problems. But now we'll see how we can solve it using the cluster API. First and foremost, like cluster API is a declarative API. And prior to this, the Kubernetes ecosystem didn't really have a way to represent clusters and machine inside of a Kubernetes cluster itself. It not only helps in creating and managing Kubernetes objects, but also provides declarative APIs to orchestrate the underlying infrastructure components. We really think that it's important to have the pluggable architecture. While we don't want to provide common logic to solve these use cases for people, it's not going to be one size to fit all problems. So one place where it's really important to have a pluggable architecture is the level where we interact with infrastructure provider for infrastructure provisioning or management. We should have a provider abstraction where we can plug in support for any new cloud provider or bare metal providers relatively easily. Finally, we really want to be able to enable common tooling to manage cluster across many different environments. So now we understand how cluster API helps and what does cluster API, but let's now look at the official definition of cluster API. We also call it as CAPI and it's a project of sick cluster lifecycle. It uses Kubernetes to manage Kubernetes, which is also referred by CAPI logo turtle all the way down. And by official definition, cluster API is a Kubernetes project to bring declarative Kubernetes style APIs to not only manage Kubernetes objects like pod deployment, but also useful in creation in cluster creation, configuration and management. So here we are done with cluster API basic introduction. Now let's look take a look at next item from our agenda. So to establish a common language that you and I can use throughout the remainder of this tutorial, I would like to provide you some definitions for frequently used term. So the first is management cluster. Management cluster is a Kubernetes cluster on which and to which the cluster API components have been installed. This enables the management cluster to manage the lifecycle of other Kubernetes clusters that are known as workload clusters. And this is the place where we like deploy our workloads are and our application. We also have another term like self hosted management cluster. There are type of management clusters that manages itself. So to accomplish this lifecycle management cluster API also leverages the concept of a provider. Providers have names like cluster API provider for AWS, for cluster API provider for Azure and similarly vSphere and many more. These providers are also known by their acronyms like Kappa, Cap Z, Cap V and so on. So they provide the support for an integration with a particular infrastructure platform. And in the last of this glossary section, we discussed what all things comes under inside cluster lifecycle management. So it includes creation and deletion of your Kubernetes cluster, including the underlying infrastructure, managing the underlying infrastructure, scaling up scaling up and down the number of nodes in the cluster and upgrading clusters to another Kubernetes version. So now let's see how does cluster API work. But before directly jumping into the cluster API functionality, I want to give a brief overview of Kubernetes, some of the Kubernetes concepts that are heavily used in cluster API. So at the core of Kubernetes is a control loop. We also call it reconciliation room that is responsible for reconciling reconciling the desired state and the actual state reconciling desired state and actual state simply means changing actual state to look like the desired one. The desired state is the intended state of the system, which is specified by the user and actual state refers to the state in which your system is actually in. The controllers are the components that implement those control loop, which modifies the actual state based on the desired one. The Kubernetes way to specify the desired state is through objects called custom resource definitions. The CRDs have a spec object representing the desired state and status object representing the actual state. Along with CRDs, we implement their controllers and cluster API uses the CRDs and controller to extend Kubernetes to manage the lifecycle of clusters. Basically, users want to specify the configuration of clusters. And based on this configuration, let the controllers implemented by cluster API to create and manage the cluster. This way, the building blocks provided by Kubernetes in the form of CRDs and controllers are used to create or manage your new Kubernetes clusters. Let's see this again for more understanding with this diagram. Here, we have a management cluster on which we are running our cluster API components, and we have one client. So the user specifies the declarative cluster configuration in the form of CRD to the management cluster. The cluster API controller then present in the management cluster, read those configurations available in CRD and create new Kubernetes cluster based on that configuration. This way, CAPI makes the actual state of the system same as the desired state. Now let's see what all cluster API components are running inside management cluster. So the controllers are divided into four types of provider based on their responsibility. And each provider has a manager which runs their respective controller. So in cluster API components, we have four type of managers core controller manager, bootstrap controller manager, infrastructure controller manager, and the last one control plane controller manager. Now we'll see in brief like what all these these manager contain with the help of this diagram. So core provider manager, infrastructure provider manager, control plane provider manager and bootstrap provider manager. They are they contain some type of CRDs and their definition. So the core one have four type of CRDs cluster, machine deployment, machine set and machine CRDs. Similarly, infrastructure provider contain infrastructure specific controllers that are responsible for connecting with the infrastructure, be it cloud or bare metal servers. Whereas in the middle you can see control plane provider and it's responsible for initializing your control plane. And bootstrap provider finally responsible for bootstrapping other worker nodes into our Kubernetes cluster. I think it's a big bit high level view. But now let's understand how these mentioned CRDs work with each other. So in the next few slides, I'll explain each of the CRDs mentioned in the previous slides and their interaction. First, we'll take a look at cluster CRD. It's a root of whole thing and responsible for maintaining the cluster lifecycle. Environment specific configurations like pod service items and DNS domain goes into the classes. Sorry, DNS DNS domain goes into the cluster specification. Next, we have infrastructure cluster. Infra can be AWS Azure vSphere or even bring your own host. And specifications under Infra cluster are based on underlying infrastructure and have details required for that particular environment. Next, we have configurations for initializing your control plane. By default, CAPI supports QBDM. And it's related specifications like init and join configuration are mentioned in control plane CRD. So once control plane is initialized, we need machine deployments that defines machine for the worker nodes. So that's how these all these CRDs interact with each other and dependent like their flow is streamlined and they are dependent how they are dependent on each other. Next, we discuss about a cluster class and managed topology. It's a huge huge UX improvement on how end users is interact with cluster API. And it basically reduces customer surface area of interaction. The sole idea behind cluster class is we just want to define the structure of a cluster or the topology of a cluster once and reuse it across multiple clusters so that we just have one object called the cluster object in which we will have a topology section which then can be used to stamp out clusters that look alike. So that would look something like this like this on the screen. So if you see on the left hand side, we defined a cluster class. It's a collection of templates and then we provide different managed topologies to the cluster class like we have cluster A managed topology and cluster B managed topology. Then they refer it then the cluster then they refer this cluster class to create two different cluster object which looks alike, but also different in their own way. So that's how we can leverage the concept of cluster class to create different clusters which looks alike. So that's all basically with the cluster API fundamentals. And now with other fellow speakers will start with hands on part. Thank you everyone. Okay, I'd just like to really thank Shivani for that video. And yeah, it's just really nice to have her here in some way. So I guess at this point, have we got hands for who's done the prereqs? Have a lot of people managed to do them during the course? Anybody having serious problems that they'd like help with at this point? Again, hand up anytime somebody will come to you.  It's time to get your first cluster running. So let's see what that looks like. So at the bottom of the prereqs, if you got that open on the tutorial, there's the link to the next section, which is creating your first cluster cluster API. So let me make sure I've got my command line here. Okay, so the prerequisites mentioned this a bit, but this is going to be a cluster you're going to set up using Docker infrastructure. So you're going to set up Kubernetes clusters where each node is running in a Docker container on your local machine. So we have a cluster API provider called CAPT D cluster API provider Docker infrastructure that manages this for us. You can also use cluster API to set up clusters up across any number of clouds, bare metal environments, there's loads of different providers. And we have a quick start guide for a lot of those. The actual flow of the quick start might be a bit different, which I'll explain in a few minutes. But yeah, so you can set up clusters on AWS, Azure, GCP, Digital Lotion. And we've got a list of providers on the cluster API book online. So for this guide, this part of the tutorial, like the prerequisites is split up into Linux Mac and Windows, so select the version that's closest for you. The Windows version is PowerShell with Docker for desktop. If you're running in something more like Linux environment on Windows or VM or WSL or something, you might want to follow the Linux guide instead. But yeah, so click on the one of those that's closest to your system. Mac OS. So the first thing we're going to do is set up a single Kubernetes cluster. So we should have already pre-pulled the images. So these are all the Docker images we use during the tutorial, during the prerequisites. So I'm going to make sure I'm in the right directory. And I'm just going to run the script to create a kind cluster. This is a normal enough kind cluster, just as a couple of slight changes to help it work with our infrastructure provider for Docker. So this cluster is going to perform the basis of our management cluster. So once it's up and running, the next step will be to install the management components on it. And those components are what will manage new clusters that we create using cluster API, manage their lifecycle, manage their infrastructure. All of the providers that Sivanee showed us there. So the core controller manager, the infrastructure controller manager, the control plane controller manager, and the bootstrap controller manager, they run on the management cluster, which then creates other clusters, which we call workload clusters. Okay. So once we've got our kind cluster up, we just just check our nodes. So we got one row. There's a single node kind cluster. So now we're going to install the management components. This is the controllers I mentioned earlier. So cluster API is pluggable. So we've got the idea of a control plane provider, and there's multiple implementations of that. So the specific providers we're using today are the Docker provider for infrastructure. Capsi, which is the Azure infrastructure providers, an alternative to that. We're using the core cluster API provider, which every setup uses, that's what manages the fundamental CRDs that cluster API manages. Our bootstrap providers using QBDM. So we've got a core in our core repo, we've got a API or a cluster API provider, a bootstrap provider for QBDM. And similarly, we've got a QBDM control plane provider. But everything except for the core manager is pluggable. So to run this, we just need to run this command get up as this copy and paste, which I should use more. So we're just going to copy this. This will set up a couple environmental variables. So one of them is the repository we use locally. I'm just going to let that run while I explain the next two are feature flags that we'll be using in the course of tutorials. These are recent features that were added to cluster API over the last, I guess, year 80 months. The first one is cluster topology, which is cluster class. This lets us create many clusters from a single template that we stamp them from, that template's called a cluster class. This is the difference you may see with on the quick start as it stands the moment on the cluster API book. Many of the other providers aren't using cluster classes, their primary method right now, but the cluster provider for Docker should be very similar to this guide. One time SDK is another feature that we're using. We'll see that a little bit later. And so this will install all of our controllers and it installs cert manager as well, which we just need to manage communication between components. So now that we've installed also cluster cutlinit does all of that for us. We can just see what pods are running on the cluster. And we can see CAPTI, this is our infrastructure, this is Docker controller manager, QBDM bootstrap controller, which handles the bootstrapping of the nodes, QBDM control plane controller, which handles our control plane, and the CAPI controller manager, which is our core manager, and then some cert manager and the normal Kubernetes control plane components are there as well. So now we've got a functioning management cluster. The next step is actually to create a cluster. So the first thing we're going to do is create the cluster class, which I mentioned earlier, that's this command so all of these are in the repo. So we just apply that like any other Kubernetes resource and that will create the cluster in our API. So we have that successful. We can take a look at what the cluster looks like just before we create it. So this cluster because the specific spec of the cluster is defined in our cluster class, it hides a lot of that complexity. So this cluster is a very simple object. It has a name, namespace, a little bit of networking information, and then under the topology, which is how we stamp the shape of it, this is the cluster class that we've just created. Just call a quick start. We've got a Kubernetes version, we've got the number of replicas we want in the control plane, and then under workers we've got we want a single machine deployment. This is an allergist to a deployment in Kubernetes and we want one machine in that machine deployment. So just going to create that cluster and we're going to use cluster cuttles. So cluster cuttle is the CLI that comes packaged with cluster API. So it's part of the core repo. So you should have been able to download this during the pre-rex. I'm going to use watch here if you have it installed. I just encourage you to use watch for a minute. So with cluster cuttle described, we can see all the different parts of the cluster come up. So cluster API after creating that YAML, simple YAML with 10 or 20 lines, we create the cluster. It goes away and links it all together. It creates machines in the infrastructure, in this case, darker containers. It will bootstrap those machines into nodes. It will bootstrap the first machines into a control plane node and then create a second node that will be a machine deployment, which is a worker node. And this is all then managed centrally from our management cluster. So next step, let's just have a look at the clusters. Again, it's a Kubernetes resource. We can just have a look at it anyway we want. So we can see the cluster there. It's in provision state. And the next thing we can do in order to install stuff on that cluster, we're going to use kind because this is using Docker infrastructure. We can treat it as a kind cluster as well. We're going to use kind to get the kubeconfig and with that kubeconfig we're going to get the nodes in the cluster to see how they're doing. So right now we only have a control plane node. It's not ready yet. So these nodes will become ready in a minute once we install the CNI and we can do kubectl get machines to see how the machines are doing. So we've got two machines, but only one node and that's because the second machine, which is our machine deployment worker, that's still waiting to bootstrap. So we'll come up in a second. So to make our nodes into ready state, we're going to install a CNI, in this case Calico. Just get the CNI ready condition. So we're using the kubeconfig for our cluster. We can get the pods.  And we can just have a look at the nodes and just wait for them to be ready. So we can see we've got, so the first command here is get nodes on the workload cluster. We can see both of them have become ready. One's 90 seconds old. That's the worker. In cluster. Describe everything is true. So this means that all of our machines have come up. All of our nodes have come up. Yep. And just to have a look at our clusters again. Okay. So that's your first cluster. You'll have a few minutes or a few kind of a couple of minutes to finish that up. But if you've been successful in managing to create their cluster, we've got hands up for people who've actually got one up and running. People happy. Yeah. Cool. So next section is we're going to use the cap visualizer. This is an open source project that's kind of saw us by Jonathan Tong. So Jonathan made this really cool open source project that we're going to deploy in our cluster now on our management cluster. It'll just let us have a look at what the cluster looks like. So I'm going to open a new terminal to run this. So we're going to use Helm to install this. You should have all the charts and everything locally. So run that Helm command. We can see it's come up here. And the next step is so we're going to just run a port forward. You might want to do this in a different terminal window and leave this running in the background because this visualizer is a really interesting thing to look at throughout the tutorial. So it's really good to get an overview of what your cluster looks like. So we're going to run a port forward and like that command, you can either run it in the background in your terminal or run another terminal and just make sure it says up. It'll take a couple of minutes to get up and when you contact it, it does tend to die if it's not up yet. So let's just try that in a couple of seconds. Yeah, so we can see this is our management cluster. Sure. So this is our management cluster. We're going to click into dot plus one and this is the overall topology of our cluster. Once you've got your cluster up and running in your machine, run this. Like I said, if you keep it running background in your machine, you'll be able to check this throughout the tutorial. We go through different operations, scaling and see what happens. So I think for the next few minutes, we're just going to run around and just help everybody who can get up their first cluster just before moving on to the next section. He has error like enable the read image data from from cup d. Error failure to provide images into the Docker machine. Could you? It seems that he is missing some images that we are expecting. Did you do the pre-poll script? Yeah, and it worked? It seemed to work fine. Yeah, it seemed to. Let's check it here about them because I don't remember which one. I mean, all these guys came from the pre-poll. This is from the witch pod. Is this log spring? This is the cup d controller. Okay, got it, cool. A cup d control. Oh, we can look at the cup d image to see which. Should I try to pre-poll the image? What is the traffic gain? Let's see. Maybe the I don't know if the images are only maybe they're only different. I don't see the exact. Okay, how many folks built their first cluster API cluster in the last 20 minutes? Wow, that's great. I see like 10 hands. How many people totally failed to do the same thing? Nope. Oh, one. A couple of people are. Okay. Yeah, if you raise your hand and we'll have folks come and help you out. No, it's not. That's separate. Well, I think that means wait a few more minutes. Two minutes. So hopefully my voice is loud enough. Some folks heard that anyway. All right, so the next section we are going to go through is cluster topology. So when we say cluster topology in cluster API, we mean you'll hear terms like shape and size. So typically it means things like the number of control plane nodes running on your cluster, the number of worker machines running on your cluster, the number of pools working of worker machines running on your cluster. And what we can demonstrate now that you've built a cluster with cluster API, the real power of doing things like cluster fleet management can come into focus with these cluster topology gestures. So the first thing we're going to do is we're going to add a new pool of worker nodes. So if you have your clusters all ready and set up, what we're essentially going to do is define a new declarative spec that declares a new worker pool node. We're going to point our cube CTL to the worker cluster that we're running and we're going to apply that spec and we'll see an entirely new pool of nodes show up in our cluster. So here in, as for reference if you folks can see this, this is what the original declarative spec for our worker nodes looked like. You see we've got this workers and then machine deployments array and we've got one entry in that array called of a class default worker. So what we're going to do is I'm going to copy this command and show you the difference between what we originally installed and this additive YAML spec. So we can see that there's a new entry called md-1 with the replica count of one. So if I apply that real quickly, let's see if I can find a command to get the current nodes. So here is here's the current set of nodes running on the system. So you can see I've got one control plane node. It's that second one in the list. And then I've got one worker node with if you look right in the middle, you can see even though the text is really small, you can see that little prefix md-0. So again, we're going to apply a spec that installs a new pool and it's going to be identified with md-1. So I'm going to run this kubectl apply command and now I can do this get nodes and I can watch it. And before too long, we should see another node appear. See if there's any other material here. So wait a few seconds for you folks to do that same kubectl apply and then well that's happening. Hopefully this get nodes watcher statement will give us what we're looking for. There we go. So you can see it's identified there in the middle of that long gnarly string with an md-1. And now we've gone to ready. So that was an example of let's like sort of revisit what we just did. That was an example of a really simple kubectl gesture. Against the management cluster to add a new worker pool. And so then on our worker node, we've got a new node coming online. And another fun thing we can do is if we go over here to our visualize, you can actually see you saw there for a second the visualizer sort of refreshed itself. So now we can see even though it's a little tight in there, we can see we've got another machine deployment. That's a cluster API CRD. So again, we're looking at in this visualizer, we're looking at the cluster API abstraction layer. So these are the, this is the view of the cluster from cluster API's point of view. But you can see if we expand this, we've got md-1 which joined the preexisting md-0. So this visualizer is a really nice tool. In addition to doing this watch command on the command line, it's sort of similar to that. As we modify the topology, the visualizer will sort of show some in progress visualizations to indicate what's going on. All right. So now we're going to do the same thing in reverse. So I am going to item potently apply the original cluster spec and that this is going to now, this is going to going to determine that there's a delta between the new spec and this, this spec right here where there's no longer that md-1 in the configuration. And I'm actually going to use the visualizer this time. We should see that md-1 machine set disappear. So the way that you can sort of infer this works is that the authoritative set of pools in that array is understood to be the definitive configuration. So if we've got say, there we go, just got rid of md-1. So if we've got like five pools in our array and we send a QC to apply with a declarative spec with two, then those three that aren't there are going to be deleted. And I should point out that these are going to be deleted gracefully. There's going to be a coordinate drain as a part of it. So if, depending on your workload scenario and production, if you're doing this in production, that might take a long time for that machine pool to disappear because coordinate drain can, you know, block on success. But because we're doing this in a demo environment where there's no workloads running on the system, that coordinate drain was really fast. Okay, so there is a section here that I'm actually going to skip because it takes about 10 to 15 minutes and in the interest of time we don't have to wait for this to happen. But in your own time, definitely go through. This is a super powerful gesture for cluster API to scale out your control plane nodes. So as you've probably noticed, you wouldn't run a production cluster like we've been doing in this demo with only a single control plane node. So to get that to three or five or some appropriately, HA redundant number, you simply update the replica count in the existing. I'll show you the the diff here without actually running through the command. And you can see that if we change that replica's value from one to three, then cluster API will receive that spec and then reconcile that eventual consistency. The way that it does it for control plane nodes is one at a time, which is why it takes a little bit of time. And it's probably best to just skip it for the demo. But super, super important gesture there. Okay, so the final thing we're going to do here in topology is well, so I've been I'll do a really quick demonstration of maybe a more idiomatic gesture for folks used to editing live Kubernetes resources. So this should be familiar to folks if you want to like edit a deployment to increase the replicas or perhaps you want to change the image from the image reference points to V1 and you want to update that to V2. So we can do something similar for all of these cluster API resources. So as we see here in the the cluster resource, we've got a replica's count for the control plane. So I can if I change it to three and that's that's going to initiate an eventual reconciliation for that. And if I go down here, you can see that now in this cluster spec, I'm back to having a single worker pool called MD0. If I were to put that to 10, that would scale out to 10 nodes from one. So that's that's a more sort of real time view of how you might apply that configuration. And the final thing I'm going to do here is so I think the the doc walks through scaling up from one to three. So I'll actually go through that and make that change. So I'm going to what the documentation is trying to describe is find the replica's configuration in your MD0 machine deployment. And I'm going to change that to three. So I'm going to colon WQ because VI is my configured editor here. And I've got the output from that command that the Docker cluster one resource was edited. Now I can go over to the visualizer. I could also do a cube CTL minus W. And as we see right now under here, if you can follow my mouse on the screen, we've got one machine under this machine set. So what we should see in 30 seconds or so is that expand to three. And these these scale out events will happen concurrently. There there's cluster API configuration that you can look through in the quick book that describes how to set those sort of rolling upgrade type events. So you can do and at a time it's configurable. All right. So now we've gone to orange. So you probably can't see it on the on the screen in that much detail. Just do it. Actually I can maybe zoom in a little bit. So if we go over here, we're not there. So this maybe that's big enough. You can see this is sort of it's like Mr. coffee churning and bubbling stuff is happening there. And also anybody doing any successful topology changes out there? Anyone scaled their cluster? Had it a pool? Deleted a pool? Cool. Any of those folks do this for the very first time? Never done this before? Exciting. All right. I think in the interest of time I'm going to skip ahead so we can get our next speaker here. The next page in the docs are about machine health checks. So I'll quickly give an overview of what this is. So a machine health check is really a way of declaring certain vectors that inform the health of a particular machine and when that vector goes unhealthy then cluster API will cordon and drain and replace that machine. So here is an example hopefully that's big enough of the sort of at least for me these are these are sort of canonical health vectors to check. So at the top we've got this under machine health check node startup timeout. So you're able to declare a sort of maximum timeout value beyond which you're no longer going to wait for that node and you're actually going to re-initiate the provisioning process. You're going to clean up that machine replace it with a new one. So that's one way of configuring a machine health check. There are these two other conditions that are under the unhealthy conditions array there and one is defined as type ready status false. So essentially what that means is a machine is deemed to be unhealthy if the ready condition is not met. So when you're doing like a QCTL get nodes the the thing you'll see in the status column is not ready. So we've got a timeout defined here. What that tells us is that if we if cluster API observes that a node is in a not ready condition for five minutes then it's going to go ahead and recycle that node. It's going to consider that an unhealthy event and similarly this example here for ready unknown. So if you've got a node in an unknown state it's going to recycle that machine. So if I go down here further here's an example of a novel machine health check that we're defining. We're calling it demo node healthy and similar to the examples above this if the status is false for 60 seconds or more then we're going to consider that node unhealthy and the reason we're defining this novel condition is so that we can easily reproduce this. So let me make sure that so the we ship these machine health checks in that original cluster class spec that's in the example. So I should see those running here. Okay, great. So as we see here we've got a machine health check output. There's not that much detail there. We could we could get more if we wanted to drill down. But what I'm going to do here is let's see. Just going to look at the machines as the doc suggests and we've got four machines running running running. So I am going to manually patch I think I think the way this command work is it's going to manually patch all the nodes in the in the doc I believe we scale back down to one before we proceed but this will be fun anyway. Let's do it live demo. So this is going to manually patch these nodes with these the condition that we're looking for in our demo demo node healthy machine health check. So you can see here in this sort of gnarly escaped. Jason data that we're doing that. I wonder if it has to do with the replicas count. I'm going to set this back down to one. And this should reconcile fairly quickly because again we don't have production workloads running on this. And so the coordinate drain will be quick. And let's see and watch what happens here. Looks like I've only got one machine. Right. Okay. Let's retry that command. I just add a fades while it tries to make sure I'm doing copy paste. Oh that wasn't for windows. I see. Beware everyone when using windows escape commands on macOS. It's not going to work. Okay. So you can see it was patched. So we've added that statement and now if we now we'll see that it's we are I was already not quick enough to even detect that machine being recycled. So I'm going to look at the visualizer here and what are you going to tell me. All right. So we can see now again we're in that there's a little orange spinny thing that you probably can't detect in any detail up there on the screen which is indicating that that machine is in the process of reconciling. So we've deleted that machine after patching it with the the machine health check condition that we defined and in the visualizer and over here in our watcher we should there we go we see the new machine. So now cluster API has accorded and drained that prior machine according to the machine health check condition being fulfilled and then according to the rolling update configuration recycled that machine brought a new one online and now we've got a new node. And I think we are ready for Kubernetes upgrade. I know we're kind of cruising right along here.  It's how many folks are in real time with the presentation on stage? How many folks are way behind? Okay. We'll wait three minutes. That's a fix that you can do just the model next machine. Feel free to raise hand if you have any questions. And nothing happens. Four minutes. Just restart the policy class. And also while people are working on this feel free to continue this lab at home or whenever you find time. And if you have any problems feel free to reach out to us on the upstream Kubernetes Slack. The Slack handle is called cluster API and we should be able to address any of the problems there. If you have any issues we should be able to sit up there and feel free to open up open up a discussion thread. And we'll take a look. Yeah. So let's take a look at what we have right now. So we do we have one worker cluster that's that has one company node and one worker node which are both at 124.6 version. Let's try to upgrade this to our 125 version. And so since class API is declarative we following the same pattern as we have for the other examples we just have another YAML file that dictates how the dictates the change in version of the target cluster. And if you take a look at that change we'll see that the only thing that we changed is a version field in the YAML. So from change we changed it from 124.6 to our 125.2 And that's it. That's the only thing you'll have to change to be able to bump up to a Kubernetes version. And it's as simple as that right to change one value in the YAML and your Kubernetes cluster upgrade should be triggered. And let's do that right now. So I'm applying the change. Yeah. So my change is applied and let's just watch the control planes to see that it's changing. And you can see that the way class API performs an upgrade on these workload clusters is it first upgrades the control plane nodes all of them to the target version. And only after they're successfully upgraded to the target version will it move on to your machine deployments. And if your workload cluster has more than one mission deployments it will go it will go and upgrade them in order. And it's completely orchestrated and you just have to monitor it. You don't have to perform any immediate actions to be able to let this through. And as we can see the control planes spin up a new machine to be able to pick the new version and once the new once the control plane machine for the new version is available it can scale down the it will delete the machine at the older version and once the control plane is completely upgraded it will move on to upgrading the machine deployments. It could take a few minutes for this to go through but we'll just let it go through and we'll see that the control plane is completely upgraded. As you can see the control plane is now targeting the version 125 too and as soon as the other machine is scaled down the 124-6 machine is scaled down we should be able to get a control plane that's completely at target version. Yeah, it's started deleting the old control plane. How many are you how many were able to trigger the upgrade a few? Okay, yeah. So the control plane is completely upgraded to the target version and now it's moved on to upgrading the machine deployment. You can see that a 125-2 version machine for the MD0 machine deployment is now being provisioned and as soon as that was ready the 124-6 machine for the machine deployment MD0 will be scaled down will be deleted and then our control and then our cluster is completely considered as upgraded. So yeah, the machine for the machine are the machine deployment is now completely upgraded and the control plane is now completely upgraded. So now we just have like one control plane node and one machine deployment node. So the same topology as for same topology as the cluster that we had before this is that both of them have been upgraded to the newest version. So we so we just have one control plane node and one machine deployment node as before and both of them are at point 25 of top two. Now let's move on to the next section. So before that we can just clean up this cluster for now so we don't need this anymore. So let's just delete the cluster that we would the dog cluster one cluster that we have been using and after that after that successfully deleted let's move on to the next section which is cluster life cycle books it's pretty interesting. Yeah. Yeah. The cluster successfully deleted there are no more class demo there are no more workload clusters in our setup right now. So let's move to the cluster life cycle books. A little bit about cluster life cycle books. So cluster API right now has the ability to produce certain events called first life cycles events and they can be hooked into by external systems to perform certain actions in this demo today we'll just take a look at a simple extension simple extension that just receives these events and then logs in as you can see in the topology that we have here the management clusters sends certain events to a targeted extent test test extension server that could be running anywhere in this demo we'll just run that as a deployment within our management cluster itself and once the extension server receives these events it can send back a particular response depending on the event that it received and then that can affect the cluster life cycle in certain ways simple example would be when a new workload cluster is requested to be created the management cluster can then send a before cluster create hook to the extension server the extension server can either send back an allow response or a block response so if a block response is sent the workload cluster will be not created and then the cluster API will just keep requesting the test extension server depending on some of the parameters that it sent back on okay am I allowed to create the workload cluster no if not just let me know when I need to check back and so on so you can set up an environment like like so where you have maybe not one maybe have multiple extension servers each of them dictating if you need to if you're allowed to go ahead and create the workload cluster or if you need to wait before the workload cluster is created the before cluster create hook is just one example we have six life cycle hooks right now within cluster API and at this demo we'll we'll take a look at at least three of them so as I mentioned before in this demo we'll be running a test extension server test extension server that is within the management cluster because it's easier for us but ideally you could you could possibly imagine a case where you're running an external external servers or you can run it in any other cluster you're not required to always run the management cluster as long as it's reachable it should be fine so for this demo let's just run a test extension server deployment within our management cluster just make sure that our deployment is running our extension extension server is running it's running it's up we have the one replica available so we should be able to move ahead once the test extension server is running we need a way to register that with cluster API so the cluster API knows where it is how to reach it and the original information like certificates and so on so here is an example of an extension config which is used to define which is used to declare where an extension server is and this is how we register an extension server with cluster API so for each extension config you just you need a unique name and I'm using I have some CA injection mechanism set up right here so this is just to be able to inject the corresponding CA and the certificates and the client config refers to where the extension server lives since my extension server lives within my within my management clusters so I just have a reference to that particular service that's exposed as part of the deployment and it should be able to reach the cluster API controller should be able to reach the extension server from within the management cluster I also have a match expression this is just to be able to make sure that this extension server doesn't operate on all events from all the workload clusters so you should be able to filter it down to only act on certain events if you if they match if they are coming for a particular workload cluster that matches certain labels here I just have a namespace label so only the events that are triggered by workload clusters in this target namespace will be handled by this particular extension server so let's register that so let's register our extension server with cluster API just make sure that it's reachable and it's all good yeah so the extension server has successfully discovered cluster API was able to reach the extension server and do the necessary things to be able to register and there are a few optional sections for you to explore on how an extension server communicates with cluster API to let it inform what kinds of events it supports and what kinds of events it's expecting I'll leave that for you guys to explore now that we have an extension server registered and an extension server that's already running let's actually look at some of these events so as I mentioned cluster API right now supports six life cycle hooks we'll take a look at two of them so we'll try to create a workload cluster we'll see that the extension server receives an event called before cluster create and then it just logs it it doesn't block the cluster creation operation you can always change the extension server to be able to block it and then maybe rely on some other input to decide when to unblock the creation and then allow allow the process to go ahead right so I just have a file here I just have a YAML file here that creates a workload cluster so let me just do that once the workload cluster creation is triggered an event should have been sent to the test extension server so let's take a look at the test extension server's logs to see that it actually received the event and it logged it so I did receive the the extension server received the before cluster create event and it just logged it and you can see that it sent back a success response with retry zero retry zero just implies that do not block the creation just let it go through let it allow it's basically equivalent to an allow response there is a there is a section at the end of this tutorial which in which it's completely optional in which you can try to change the extension server's logic so that it blocks and it's completely optional try that at when you have some time for this tutorial we'll just continue with the allow responses but I would highly highly encourage you to try it out to get a feel of how extensions how powerful runtime extensions are and how you can use them now let's also try to delete the cluster and we should receive similarly we see what delete cluster hook and again this extension server defaults to just allow allowing the operation to go ahead and it doesn't block any of the operations and it should allow the workload cluster to get deleted but as I mentioned there is an option optional section in which you should be able to block it and see that the workload cluster deletion is blocked until the extension server responds with a success allow response so let's delete the workload cluster yeah a delete has been issued let's look at our extension servers logs to see that it received the event yeah it did receive the event as you can see here let's just clean up let's just clean up the extension server so that we don't change the change any other items here okay so we wrap it up here thanks everyone for coming we have a card called for feedback if someone see feedback here we would have had one last section which is about self-hosted clusters so how do you use cluster API to manage cluster API itself feel free to follow up at home if you have any problems any questions we are in the upstream Kubernetes Slack channel cluster API feel free to ask whenever you need anything yeah that's it feel free to stick around ask some questions but let's say the official part thanks everyone


Social engineering is the oldest yet still most effective hacking technique because it exploits humans which are the least secure parts of most of our systems. All of our digital systems they continue to get more secure day after day when a security vulnerability is discovered in a program and it's responsibly reported to the program's maintainer and then it's patched in a timely fashion that particular vulnerability is no longer able to be exploited it no longer exists as long as it doesn't accidentally get reintroduced by future code editing but human exploits they're a lot harder to fix our systems never really get patched and we are still vulnerable to ancient exploits even though we're aware of them hackers can still use them against us in some cases and to make matters worse technologies like phone calls video calls and email they create new attack vectors for remote social engineering attacks no longer does a hacker have to make their way onto your organization's premises and get recorded on security cameras and things like that to try social engineering and video and photo manipulation tech it can assist hackers in making their impersonations or their fake pieces of information seem more convincing that they're sending to you over email video or whatever and of course deep fake technology can be used for making impersonations as well and recently people in new hampshire were receiving a lot of robocalls with deep faked audio of joe biden telling them not to vote in the primaries into save their vote for the general election in november which doesn't make any sense if you know about how our elections work because voters can vote in both elections so this is the audio that people were receiving in new hampshire a bunch of malachi you know the value of voting democratic on our votes count it's important that you save your vote for the november election we'll need your help in electing democrats up and down the ticket voting this tuesday only enables the republicans in their quest to elect donald trump again your vote makes a difference in november not just tuesday if you would like to be removed from future calls please press two now now this audio has actually been floating around for a while and pin drop security actually managed to analyze the audio and figure out that 11 labs was the text to speech engine that was being used to generate this audio and 11 labs actually banned the user account that was connected to creating it but obviously once the audio is out there on the internet it's never really going to go away which is part of the reason why i think deep fake analysis like what this company here is doing is going to end up being a very important part of information security in the coming years now personally i don't think this is a very convincing biden deep fake it has that distinct deep fake cadence but then again most people have not been exposed to enough deep fakes yet to know what to look for or what to listen for right like this is still a pretty new technology and most people don't even know how to go frame by frame in a video to tell that it's fake or to look at an image and tell that it's photoshopped or even verify who sent them an email like a big part of the reason why phishing emails are still so effective is that most people don't know how to check their email headers because anybody can spoof an email address like they can make it look like it's from you know whoever they want and if your spam filter doesn't catch that and flag it as you know spam which they often don't then your own scam detector right your own common sense or you know ability to identify scams is going to be the last line of defense the best way to defend yourself against social engineering is to remain calm and to assess the facts like verify what is going on in the situation like i said people can vote in both elections so the premise here is malarkey right plus you would probably never hear a politician telling people not to vote anyway like that doesn't sound like something that they would want to have coming out of their mouth and even be a soundbite right like you'd think they'd be a little bit aware of something like that and just avoid saying those words together nevertheless this wave of deep fake biden calls it prompted the FCC to outlaw the use of ai generated voices in robo calls altogether so i guess that's another job actually that ai is not going to be able to take from humans anytime soon now of course hacktivism you know politically motivated hacking isn't as common as hacking for cold hard cash so of course deep fakes they've been used for those kinds of scams as well and recently an employee in hong kong that was working for a multinational financial firm was tricked into paying out 25 million dollars to fraudsters that were using deep fake technology to pose as the company's chief financial officer and several other staff in a video conference call now according to hong kong police the employee was skeptical at first about an email that he had received telling him to send these fraudsters money but then when that video conference call happened with deep fakes of his colleagues that looked and sounded real he was then convinced that everything was legit and he sent the money and the employee said that he didn't know that it was a scam until later on when he checked with the corporate head office in the uk to see if the cfo really was asking for 25 million dollars now the police didn't reveal the name or details of the company or the worker that was involved in this incident but what i suspect the deep fake could have looked like would have been very similar to the deep fakes of singapore's prime minister laurence wong and other leaders that have been circulating on the internet for months now dear singaporeans the day has come i am pleased to introduce to you the quantum ai investment project starting november 11th 2023 we have launched a project that will allow everyone to receive guaranteed monthly dividends with minimal investment the automated trading system makes only the most profitable trades allowing investors to increase their income earnings from eight thousand dollars are absolutely real the company has made sure that this income is available to everyone that is why we have reduced the minimum investment amount to 250 dollars all payouts are guaranteed by me personally and my reputation so these deep fake videos are essentially made by taking a real video and then dubbing over it with a deep fake voice with one of these you know text to speech generators and i think some modifications are also being made around the mouth area to make it match like make their mouth movements match closer to what's being said so if you know what to look for you could probably tell that these are fake as well and again given the context like if you can avoid falling for just literally anything because it appears to be coming from an authority figure like a prime minister or your boss then you'll probably be safe i mean it's kind of ridiculous for them to be recommending some kind of like crypto quantum you know investment platform right like the context doesn't make a whole lot of sense so yeah again stopping and assessing those facts are one of the best defenses against all forms of social engineering right because it's all the same at the end of the day it's just going to take new forms it's going to you know obviously use whatever the latest technology is right and right now that's going to be generative ai so who didn't see that coming and that's why i think digital literacy is so important where way past just checking our email headers and our ssl certificates now you've got to be somewhat familiar with this ai tech and of course have a bit of common sense that's always been the key to security so stay safe out there like and comment to hack the algorithm and have a great rest of your day