Hey everyone welcome back to the YouTube video My name is John Hammond and welcome to our new Ubuntu desktop our Linux distribution that we are using and we can Use to really take advantage of what we want to learn and what we're gonna know to jump in the CTF scene So you can open up Firefox get your web browser going and just log back into Pico CTF so we're looking at that long challenge for 20 points and The challenge problem that we saw earlier was okay I heard you have some delusions of grandeur about your typing speed How fast can you go at this host and port number so we can like select that and copy it and Just like we've been using that web shell over on the right hand side of the screen that gave us like a Linux command line But now that we are running Linux we can just use the Linux command line Easily on our own computer if you move your mouse to the very top left of the screen You can go to activities and you can type in terminal if you want to and you'll get one result here I have a couple of others because I am running now on my host computer Not the virtual machine that I was showing you guys how to install You can click terminal and then that will pop up this this shell here this little command line that we can use So I'm gonna increase the font size here So you can see a little bit better and then we can net cat. I'm gonna hit Control shift V to actually paste in here The command line uses the same control C control V hotkeys that you're used to but it adds a shift in there To actually control shift C control shift V to copy and paste and the control arrow keys will let you jump between words or special characters So that's what I do to move quickly in the shell So if I net cat to this it gives me that same prompt that we've seen before Please give me a certain character however many times followed by a single something and to make things interesting You only have a certain amount of time so the challenge hints here said you can use a net cat can't command to connect and They recommend using Python and it may help to have multiple windows open So since we are in Linux Python is installed by default You could have even used it in the web shell But you'll have a little bit of difficulty keeping the connection and all so since we can have multiple windows open now I Can use the control windows key and left arrow key to dart this to one side of the screen left to put it like shifted to the left side of the screen and I'll hit control alt and T at the same time to open up a new window a new terminal Okay, so let's use the up arrow to Netcat shell into this and then you can use Python in the other shell and Just like that. It's a command. We've invoked the interpreter or the program to run Python code and If they want the capital N character 581 times we can actually take that string just the character n and multiply that 581 times Cool copy that Control shift C remember paste it in and then the single four at the end So I'll hit enter and they say all right you got it That was super quick right because we able to use Python to generate it for us so The new line character kind of got in the way of our flag here But we do see it with some recognition and trainings delusions become glimpses and then a lot of hex So Pico CTF will use that random hex bit at the end because mine will certainly be different than yours And they'll use that to make sure that we aren't flag sharing or whatever the case may be Because you will have a unique flag specific to your rendition of the game so what I like to do is whenever I solve a challenge or actually in playing capture the flag competition I create a folder to actually put all of the challenges in and I normally try and write a get flag script But this one will be a little bit more difficult because it's dynamic We won't get into writing a get flag script soon because we could have automated this entire process of connecting to that shell Connecting to that console service Actually being able to read out the character that they want multiplying it sending it etc We'll do that once we get into a little bit more of Python But for now I wanted to show you this we've got the flag, but now let's go ahead and save it somewhere So let's make a directory or MK dir to make directory and then we'll call the folder whatever we particularly want I'll call this Pico CTF and then you can CD to change directory into Pico CTF cool LS to show stuff, but there's nothing in there currently So let's make another directory called long CD into that you can hit tab to auto complete if you start to type something and there's not Anything else with that same set of characters at the start if you tab it'll auto complete what you're trying to talk to control L to clear the screen and then we can use a Program called nano which is just a command line and text editor You can also use VI Vim if you're some lead hacker and you like them It may actually be better for me to kind of point you to Vim and start you off on that But I'll admit I use nano more than Vim. I'm a baby So nano and then that's the command line like command you want to run the program You're trying to invoke a file name can be passed as an argument So if you wanted to say Flag dot text just to keep track of that you can paste in the flag that you've got Because now you're inside nano this command line text editor tells you what file you're in it tells you whether or not you've changed the buffer and then it shows you some like actual commands you can use with the control modifier that up arrow that uh Kind of carried at the very start of this will notify like a control character Which may be like like the control key or the alt key. It may be different, but in this case, it's control I can use control O to write out like it said in the bottom file name to write We'll hit enter because we do want to save it as the current file name and then control X to exit just like that Cool. So LS now our flag dot text is in that directory We can CD up by using a period and another period to denote the parent directory So we move up the file structure. You can see my prompt change in the blue here. I'm no longer in pico CTF long I'm just in pico CTF in that directory cool So let's LS here see we have long and if you wanted to pass an LS tack a It'll show you all of the files here and that may be able to to see more hidden files that you wouldn't normally see in a regular Listing you'll see our folder here, but you'll also see other characters or other digits here I'm not digits, but a period right the period itself recurs to Refers to the current directory that you're in so CD period won't move you anywhere because that just means the Current directory and the dot-dot just as you saw before it means the parent directory So that is always displayed when you LS tack a you list everything the it'll Display the current directory and parent directory as the period and two periods So now that we have completed that long challenge. Let's mark it as complete. So I like to do that in the folder name I like to just change the name of the folder and rename it So you can do that in Linux with there's not particularly like a rename command But you can use the move command just to move it to the same location, but with a different name That's essentially renaming it. So if I move along again, I use tab to autocomplete to long Remove the trailing forward slash because it's trying to use that to denote that it's a directory I'll change it to complete Like mark with the underscore and capitalize complete. So now if I LS long complete We can go into that directory and we can cat the flag or display it out on the screen whenever we want to cool So we have saved our solution And if you wanted to we can take note of our solution without actually writing a get flag script. So use Python to multiply a string of the original character they wanted and then add on the single character and Then control O control X to save an exit and we should be good cool Let's go ahead and take this flag and go and submit it in Pico CTF down here at the very bottom submit and Awesome challenge solved you're up 20 points cool So I want to give a quick shout out and some love to the people that support me. I can't say this enough That's why I said at the end of every video Every everything that you give everything that you're willing to donate does help me grow help this channel grow And I'm really really grateful you're willing to go on this adventure with me one dollar a month on patreon We'll give you just shout out at the very end of the video just like this can't wait for number 10 $5 a month and we'll give you early access to what I upload on YouTube But before I release it because normally I'll record in bulk and maybe I'll let YouTube Gradually like on a day-by-day basis slowly make things go live if you want the content right away as soon as it's ready That's how you can do it Hey, thank you so much for watching guys if you did like the video Please do press that like button maybe leave me a comment if you're willing to subscribe and if you really want to check me out Support me head over to patreon. Thanks


Okay, hello. So I'm here to give a brief, I don't even know if it would reach the level of tutorial, but more like discussion on Kubernetes. So I have an audience here that cannot be heard in the recording, unless I say so. We talked about our background. So basically this would be appropriate for someone that sort of knows a little bit about what Kubernetes is, but maybe has never made a deployment or used it or don't even know when they would use it. Let's see, I'll come to my screen share here. So I've shared a HackMD in the meeting chat, which maybe someone can reshare again for the people that have arrived lately. If you would like to say anything to me or make some comments, please look in the HackMD where it's open and then just like make a question or comment and then I'll see and then we can discuss. Or you can use voice if you would like. Okay. And I just noticed that if you're logged in, I might see your name in the recording. So maybe you would want to do this without being logged into HackMD. Okay. So yeah, as you can see here, the demo, this is sort of a crash course. So the reasoning behind this is a few weeks ago, I wanted to make a deployment in Kubernetes. So someone far more clever than me had set up Kubernetes in computer science IT and they we've been using it for several years now. But I wanted to take and run a Zula bot in this Kubernetes cluster. And I didn't quite know what the right practices were. So I had the cluster and I needed to run something in it. And I didn't know how. So I wanted someone to give me a tutorial sort of the minimum about how to do that and why I would and so on. In the end, I sort of figured it out myself for better or for worse. And now I'm here to give you this tutorial that I wished for a little bit ago. So I've been using Kubernetes for say two years or so. No, not two years since 2018. So three years now. But always as sort of a user and not as a person that's been like maintaining it myself. So I know a little bit of the principles but not too much. And I see the person who I'd consider the person who set it up isn't here. So hopefully we can answer any questions. Yeah. Can you while we're waiting come here and write in the hack and the as an ice breaker right here what you would like out of this so we can sort of discuss. And while we're doing that, I can say I can consider two different kinds of services here. So one like the Zula bot I deployed it ran in Kubernetes and connected outside of the cluster. And the other one is something that runs like a web server which receives incoming connections from outside. So I have a demo of the first one. I do not have a demo of the second one. But we can try to do that live, I guess. Okay, so while people are feeling. So one is Kubernetes used. So it's a container orchestration system. So basically it runs containers and provides a coherent way to manage them. And this management is the important thing. So the containers can be Docker or different other runtimes. Because the Docker image format is basically the standard but there's different runtimes which we don't really need to worry about ourselves right now. But Docker is a one node kind of thing. So Kubernetes provides this interface where you can do things like say, okay, I need to run 50 web server containers at all time. There might be times I need to roll them over to a new deployment. And when doing that, there should always be 50 running at any time. I need 10 caching servers, five memcache servers, three database replicas that are all somehow working together and connecting. So this could be a sort of huge system administration task. But once you have Kubernetes, you can basically do this declaratively. So you'll make this YAML file that defines the whole thing you want. And then whenever you need, you apply a new version and it will figure out how to upgrade it and manage things however you would like. Okay, let's go back and see what people have wanted. Brief glimpse. Yeah. So, hmm. Yeah, okay. We can come back to some of these at the end if we have an answer. Okay. So let's see. So the power of this comes at a cost. So there's a lot of concepts to learn even for small deployments. And well, at least for me, it was really hard to figure out what you might need and what I even needed to do. But I think that if you have the cluster running, then it's not and you know how to do it. It's not that hard to make a deployment and run something within the cluster. And then it's sort of this coherent management. Kubernetes isn't just for big things. So when I got started, I ran mini cube on my own computer and was able to and it's like a single note thing. It just run one command that runs and then you have the API. So really, Kubernetes is defined by its API more than what's running in the backend. As in there's many different softwares that you can tell this these requirements to and it will make it run. Okay. Let's see. When do we use Kubernetes? I think I sort of already covered this. So in my case of some simple chatbots, it was a little bit overkill. Like I may as well run that on my computer. But when the alternative was running it on a university shell server, which gets rebooted periodically, Kubernetes is a little bit better. So let's take a look. I'm switching to this view to see. So let's say you have a Docker container that can run. So you would say Docker run the container tag and then you can mount different volumes for different ports and so on. And this is an imperative process. But I guess it's how most things are developed. So let's presume you have a container that does what you need. So the basic idea is you would convert this to Kubernetes YAML. So this is what it looks like. It starts with three dashes. If there's multiple declarations in the same file, there's some standard stuff. Like this is version one. This is pod. Everything has metadata, like labels and so on. And now we have a spec. And this is what we'll run. So the first concept here is a pod. I think the analogy is it's like a pod of whales or something like that. I guess because the Docker logo is a whale with containers on it or something. Okay. But a pod is multiple containers that are running together. So in this YAML file, we'll make it larger. We see a spec which contains containers. And here's a definition of one container. So I'm calling this name bot. The image is Zulibot, which is the Docker image name. And other things like should the image be pooled all the time or if not present, well, here we pool it if it's not present. And now we specify the volume mounts. So I'm mounting something called ZulibarC at config. It's read only. And now there's a bit of interaction here. So there's volumes where I've defined what's mounting inside. So notice that the name here matches ZulibarC mount to ZulibarC mount. And this is a secret. So secret is another Kubernetes object, which has been defined. So the secret name ZulibarCCSIT gets mounted here. And this secret has one key inside of it, which gets mounted as a file inside of this config. Okay, this is the basic idea. And we will see demos shortly. So Kubernetes objects, everything's organized into objects, which is really sort of like mapping to the API. So there's this YAML description. And as we know, YAML is basically the same as JSON. Well, something static like this can be represented as JSON. This is also the form that's queried to and from the API. And when you make an object, it basically takes this, converts it to the structured JSON or whatever format, sends it to the API, and then it creates objects like that. And there are many different object types. It actually took me a while to figure out where I can read about these objects. And that was basically in this Kubernetes API reference. So when I started doing this, there were lots of tutorials I didn't really like. But then I come to this API reference. Let's see. And I say, okay, I know I need a pod. So where's that under workload resources, pod.  So this is a pod, it needs these different things. There's a spec. This is the pod spec. And basically by looking at this and reading about what everything meant, I was able to create that Kubernetes YAML. Combined with some tutorials, of course, but this was the basic idea. So that was the first thing that I wish someone had told me. Okay. Yeah. So what are the different kinds of objects we may need? Maybe someone can go and write what I'm saying in the HackMD as I'm saying it since I didn't fully fill the cell. So the pod is the fundamental of unit of computing, it has different containers inside. The containers are basically like Docker images that we're familiar with. Through the specification, you can define all the different properties like the image name, environment, startup command, and so on. And you find that via this API reference. A deployment. Is someone going to be writing this here? Or should I write it myself? Or is someone writing? Okay, thanks. Yeah, if you just make some notes, I can fill it out later. So deployment basically orchestrates different pods running. So deployment is like saying, I want this number of pods running at the same time. And then it manages them running. So if a pod dies, the deployment will restart it, and so on. So I think usually people would almost always make a deployment instead of a pod because if you make a pod and the node goes down, then the pod is gone. If you make a deployment when the nodes get readjusted or a pod stops because it crashes or something, it keeps it running. And deployment basically has a template inside and that template is the pod template. Okay, there's volumes and volume mounts. So a volume defines something that can be mounted. And the volume mount specifies where it is inside of the pod. So this is sort of a little bit of indirection. So for example, in this Jupyter.cs deployment we had. At first, all the volumes were defined on pods. But then we made a separate volume definition. I noticed there's a persistent volume or something. And then we could refer to that from all of the other pods. So then to make a test deployment, we change one place and then all of the different mounts change at once, which is kind of nice. So secrets and config maps are configurables. So maybe I'll start with config map. So config map is keys and values that basically key value configuration stored within the Kubernetes API. Secrets are like that except their secret. And when we start exploring the deployment, you'll see an example of this. Yeah, and configs and secrets can be deployed or put into the pods in different ways. For example, as environment variables are mounting them as files and so on. Okay. So a service. So a service is like a proxy to a set of pods. So let's take our example where we had 50 web servers running. When a connection comes in from the outside, it has to connect to one of these 50 different pods running. So you define a service which has a label, a service defines which pods it's connected to. So any incoming connection gets distributed to one of these many pods that are running to handle the request. And we'll get back to services when we talk about incoming web servers and ingress somehow map incoming HTTP connections to services. So basically it says when a web connection comes in on this host name and this path, it will go to the service which will then forward it to a certain pod to handle it and then send everything back. Okay, so let's make an example here. So yeah, I'm not really going to use this here. I think I had an initial example, but now I have a better example, which is here. Let's see. Are there any further questions written in here? Nope. Okay, I'll leave space where I can see if someone writes with questions or comments. So here we are on my work workstation with access to the Kubernetes deployment. This repository I'll be looking at actually, I can give it to you. Okay, I'm putting it in the chat and in HackMD. So let's see how I've organized this. So I should say this is a tutorial and not necessarily the best possible practices. So this is sort of like the example I got a few years ago, which I worked with. There's different ways that this can be made better, like somehow make it automatically applicable. But for a demo, I think this is a good start for like an hour to get things going. So let's see what files that are. There's Kubernetes YAML. And this contains the different YAMLs of the deployments. There is this make secret script. And then there's a secrets directory. That's a Git sub module. So you have on GitHub the repository itself, but not the secrets that are included. So let's take a look at a deployment. Or do you want to look at the pod first? So this pod is no longer used. This was my first attempt. So we see there was API version, kind pod, some metadata, a spec. This is the Docker hub image I deployed. And then I gave this whole command here. And then volume mounts. So yeah, this is like it said. So here's the secret name. Let's go look at the secret and see how it was made. And that's in this make secrets script. So this script one run this kubernetes, krup control, delete, it deletes the secret and then it remakes it. And this secret is called zuliprc-csit. And it is from file zuliprc equals secret slash this. So zuliprc is the name of the secret. And this is the file name of it. Let's give an example of looking at the secret with the API. I will switch my view just to make sure this doesn't show anything. Yes, it works. Okay. So now we have our first examples of the API. So everything is done with kube control. And there's some kube config that tells you it basically says what API is this connecting to. And it connects to well, the API of the internal CS Kubernetes, it could connect to your local deployment or things like that. Okay, kube control, git secrets. And I'm doing this in the namespace zulip bots. So namespaces are a way to sort of separate all the different applications that are running. Okay, so we see. Okay, this is we have this many secrets in here. So there's kube control works by this a verb, the object type, possibly a namespace and then things. So after this, let's describe a secret. And I will describe the zuliprc csit. And we see here, there's the name, type, and data, it's 128 byte file, which is here. And what we've just done is basically the basics. So you can keep repeating these commands, kube control, git pod. So here, I've gotten the different pods that are running. So we see there are these different bots. We can get deployments. And here's the deployments that are running. And notice the names exactly match up to what we described in the API. kube control, describe deployment. Let's describe csit one. So it says not found that's because I forgot the namespace. And if we look this looks a whole lot like basically exactly what was in that Kubernetes YAML file. So um, yeah, I mean, it is, that's the importance of this API reference. Okay, let's go back to our directory. And let's actually start the deployment. Or so here's the deployments. Let's delete a deployment. Let's delete this csit bot. Of course, the namespace. Okay, so it's deleted. And now it's not there. Okay, so now here, we're finally at where we're really start.  Yeah, this was the name. So yeah, and we use apply instead of create because then the Kubernetes API will remember what was made last, and we can apply again, and it will transition to that new state without bringing everything down and bringing it back up. And you can specify things like, for example, there should be no more or no less than 80% capacity at every time or first bite this much or that much or whatever. So let's apply. And then immediately we'll get the deployment. Well, and it's back age five seconds. And it started very fast because the two pods started. Okay. Yeah, um, let's see. What else can we explore in here? This image contains a Docker file, which is what's being used by all of these deployments. So right now I build this image manually push it to Docker hub and then it gets pulled back into our cluster. Let's open up the YAML file. So here's the deployment itself. Have we seen a deployment yet? Possibly not. Someone's saying something, no. API version, kind deployment spec. So here in the spec, we see these match labels. So match labels is used so the deployment knows which pods go with it. So this has to match up with this. Okay. And well, all the other stuff we've already talked about. So yeah, let's go take a look at hack empty. Maybe let's take a little pause here. Let's ask a question. Please answer this question, everyone. Let's see how we're going. So do you have any questions? And what would you like to do next? Is there anything in particular you'd like me to elaborate on? So what I would do is try to create an ingress and run a connected to a web service. And this we would do live together. So I'm not hearing anyone. And that's always a bad sign. I don't know if it means you're getting exactly what you want. Or yeah, go ahead. Yeah, yeah. Okay, yeah. Okay. So the question was sort of what's going on behind the scenes. So things like you need this many servers and this much load balancing and so on. So in some sense, yeah, we haven't really talked about that because for the most part, it's not something that like it sort of all magically magically happens in the background declaratively. But let's take a look. So let's look at deployment and see what relevant things are here. So as I'm scrolling down, why not make this larger? So we see under deployment, there's replicas. So this would tell us the number of desired pods. So defaults to one. So when we need 50 web servers, we would say 50 deployments. And in my example here. So most of these deployments have only one running because there should only be one instance of the bot. This Zula pillow is defined with two pods in it. So it's two of two. Okay, what else might be ready? We see like strategy here. So you can define things like rolling update. So what's the maximum surge number of pods that can be made? What's the maximum pods that can be unavailable at any time during this rolling update, and so on. Um, yeah, so all of these kinds of things are like they happen. Kubernetes programmers have done a lot of work to make this easy to do. And I mean, once you have these yaml files that define things, it's pretty easy to define the different properties you may need. Let's see, I'll keep going down. So here's all the different API properties, which somehow relate to the above. So far, all I've ever used is this, these these yaml definitions up here. I guess another question is when you do things like rolling updates, how do you trigger it? So do you trigger it by manually running group control apply with the new file? Or is this automatic? So there's different things that you can run it directly from the Git repository. So you would take and you would say, let's see, what would you say? You commit to the Git repository, you push and then the CI will take it, verify it, then run it and then automatically apply the configuration to Kubernetes. And that's something that I haven't gotten to yet. And I think within our team, no one has gotten to yet, although it's something we would like to do in the future. Did that answer your question somewhat? Any other questions? Yes. Basically, it's all automatic. Yes. Yeah, you need to know how to declare what you want, but then it automatically happens in the background. And this yeah, so yeah. So let's make a let's actually let's try to go to this next step and do the load balancer things. So please continue commenting if you would like me to do something else, but I'm going to try to do some live development here. So it probably won't be very successful. But let's just see. So we have Zulip Hello, running here, which actually is in Zulip. It's some echo server. Okay, Kubernetes YAML echo server deployment. So this is running this echo server. So we have the deployment running. So first, we have to test the deployment. And I want to see can this container accept a connection on port 8080? Yeah, okay. There was chat messages about audio, but I think most people can still hear me. So I will just go on. Okay. So I know there's this kube control proxy command. Let's see. So I want to kube control proxy into this pod. This looks like it use port forwarding to access applications in a cluster. Yeah, I want to kube nodes. Yeah, I want to kube control port forward into there. Okay. So this is running some container. Um, I'm scrolling down to the good thing. kube control port forward. This does. Yeah, let's try it. I need the pod name. So let's forward to this one. There's a new question. Let's see. I think that's a good answer there. So like running locally, you just have different pods. But let's come back to that later. Okay. So what do you know it worked? So I guess this is running. Okay, so I was able to access this pod on port 8080 from my own computer. So we know the pods running. So what's the next thing? Now we need to make a service. So we go to the API. And let's look at the different things. I think service resources looks reasonable service. So we want a service. Okay, um, let's readjust our windows some find this service. Let's copy from here. Name. Okay, so now we need the spec. And this will be new to me. We scroll down, we see service stack. So selector. So this routes the service traffic to pods with these labels. So where do we get this? Well, we would get this from the deployment. So switch to the deployment window. So the pods are made with these labels. So I copy it back to here. And there's actually all different kinds of things for these selectors. Um, ports. And if you'd like me to stop doing this at any time, just let me know. Port dot protocol TCP. I don't know if that's needed. Let's just try it and see protocol. I'm just going to ignore that for now and hope it works. If it doesn't, then we get to learn something. Type. Um, yeah, so cluster IP means it's assigning a static IP visible from inside the cluster, which will be the accessible point of this IP families. Ignore that. Let's assume that most of these will be automatically assigned external IPs session affinity. Yeah, most of these seem like they might be relevant, but let's see. Do you want to give it a try? We need to apply with dash f. Okay, we see an error. And I've noticed with these errors, it can be quite hard to read. So here, there's like long recursive names that include. So where's the actual error in here? I think it's this it got a map instead of a string. But spec selector labels from a string to a string. Let's take a look. It's map looks okay to me. Let's go deeper and see if we can find an example to copy. Spec selector. We don't need an extra labels there. Yeah, ports protocol TCP. I think that looks good. Let's give it a try again. Got array expected string ports. If anyone Oh, yes, there we go. Thanks. This is why we do pair programming. So now we have a service. So notice we see it's assigned some internal cluster IP and port. There's a question in chat about the app.kubernetes.io part of labels. See, I think this is some sort of a convention like namespacing the labels. For something small like we do, I think it doesn't really matter. And as you saw in my previous one, but I guess if you get to a massive scale, this might start to be important. I think also part of it was there can be tools which can automatically help you view your cluster. And by using the standard namespace labels, it can automatically do a lot of stuff. Okay. So let's try port forward. And I actually don't know. Yeah. Well, let's look at the help for once. This is a lot of text here. Use resource type name deployment. Yeah, so we can do service slash name. Yeah, like this. This is what we're going to do. So now we're going to connect to the service. Okay, there we go. So now let's come back to our example. And now what do you know here it is it's running. So now we've got some basic load balancing here. This may not be exactly what you talked about, but we have one point where connections come in, and it will be distributed among two different pods. So now we can start scaling out and just transparently increase or decrease the number of pods without, without changing the service definition, and things will just work. Okay, so what would be next? So the final thing would be to make an ingress. So the ingress let's come back to the API. Could it be under service resources ingress? Yes. So here we would define things like what we see there suspect ingress spec, different back end names, rules. So with these rules, we can define things like the host name, the HTTP paths that will be forwarded. And I bet if we keep going down, there will be a backend. Yeah. So then you guys can have different back ends. So if the back end is service, it will forward it to the service of a certain name and a certain port. So I guess I could go further and try to take one of the existing services we have like Jupyter and then deploy it. Actually, that might be a bad idea because it would take down the other service. Hopefully you get the general idea here. So the ingress defines the incoming path, the whatever, and the service it gets thrown to. And then suddenly you can connect things coming from outside to pods. And the pods can be transparently scaled up and down using the deployments. And maybe I should stop here since it's been about an hour, and we can take a few more questions. Maybe I'll do one more demo. So here's our deployments. We see there's two pods running. Let's say you need to scale up. So let's change this to replicas five, and then group control. So we're going to reapply this deployment. And now we see two or five pods four or five. So we've just scaled this up to five. And now we can scale it back down if needed. And everything is sort of automatically being handled in the background. Okay, so here's HackMD question. I guess there's load balancing at all kinds of different levels, like at the provider level to different clusters at the service level to different pods, multiple different ingresses and so on. Yeah. So let's come back to our initial what we wanted to get out of this. So brief glimpse. So I think we probably have done that. Better understanding of when you would use Kubernetes. Yeah, so after this, I mean, I wonder when would I use this? So it's pretty easy to run MiniCube on your own computer. And then instead of managing Docker containers manually, you can define these things statically. I guess sort of like as an alternative to Docker compose or something like that. That might be a reasonable use case. But you'd probably only do that if you need to learn Kubernetes anyway. How does it relate to singularity and Docker and Slurm? So my guess is if you're doing stuff on a HPC cluster, then like with Slurm, Kubernetes is probably something that's not really relevant there. Although I was at one interesting talk about a year or two ago, or someone claimed everything will become Kubernetes in the future. So if you have any compute resources, you will have to have a Kubernetes API in it to run things. So Kubernetes does have concepts like jobs. So you can say I need 100 jobs that run this container and do this things and then these mounts and then it runs and could do your computation and save it. So if you really wanted to, you could use a Kubernetes cluster to do batch computing also. But the amount of overhead for a typical researcher to do this well, most are probably not going to be able to do it. Okay, let's take feedback. So possible traps, please. Yeah, go ahead. Yeah. Yeah. So the question was about the Zula bot itself and being surprised at how it was dying so often. So really, I think so I only changed it to Kubernetes about a week or two ago. About the time I said this, and since then it hasn't really died that much except it was, but there was. So now Kubernetes will restart it if it dies. A problem before is that the bot itself, the process because it's multi threaded when there was an exception, it didn't actually the process didn't terminate. So it didn't know it had died. And what I was using before it was supervisor on auto shell server. I transferred it to Kubernetes and then it still wouldn't restart because the pod wouldn't die when it was done. So I modified the code and I made it actually exit on this error. And now I think since then I haven't had to restart it. Well, much. So I think the main problem of the bot dying is not it not Kubernetes not being able to restart it, but the process itself not terminating. So Kubernetes knows it should restart. And there are actually ways that you can define liveliness tests like Kubernetes can periodically run something and pull a service and see is the service still actually alive if not kill the pod and restart it and so on. So yeah. Someone just said it can be like an HTTP check or executable running inside the container returning a status code. Yeah, please give questions, comments, feedback. Um, did this did you get what you wanted out of this tutorial? That would be a good piece of feedback. It's been about an hour now. So maybe we can stop now and see if there's any more follow up discussion and see. Yeah, I mean so the recording that yeah. So I'm still recording, but anything that the audience says will not be in this recording. So please like you can ask and I'll repeat the question unless it's unless you want to do discussion and then I'll just stop the recording. Okay. Yeah, go ahead. So is your question about how to link kube control to a given cluster from someone else or so from my understanding there's kube control which is the standard command line interface. There's probably more and then in kube control there's these configs which let me switch the screen to make sure there's not secrets in here. Yeah, I can't show you the contents of this file. It looks like it has secrets, but anyway to so what I'm running here is actually running on our computer science kubernetes cluster and um in this file there are things like actually I can tell you the fields in here. There's a clusters list and it says cluster server hdpskdsproxy.domainname and the port name certificate authority data and so on. So basically to connect to the cluster what I did was I well the person you're hearing here I'd say how do I connect to the cluster? You said okay here's this config file put it in .cube config and then you can connect and after you do that it's just completely transparent so it doesn't matter if it's running on your own computer or somewhere else so I think this is some instructions you would get from whoever has set up the cluster. They would tell you how to connect and then everything else I've said here would be the same and really to me this connection and the format of the kube config files are sort of magic so I know there's ways that you can specify multiple different clusters so you can like use different contexts and connect to both your own one and one running in a cloud provider and so on but um yeah I remember once our clusters what was it the certificate data changed and I had to go find the new config file to be able to keep connecting to it and I got quite a bit panic there but somehow I found something I copied and pasted and then it worked so yay I guess okay I'm not seeing many more questions I'm going to stop this other recording so for everyone watching thanks a lot and hopefully we can see you later. Bye.


Revisions, Preservation, and Registration. During the research process, your materials, code, and analysis scripts are likely to develop and change. With the OSF, you can add new components, edit old ones, change your Wiki contents, and upload new versions of files while still maintaining access to old ones. How do we do all of this? Well, the OSF is backed by a version control software called Git. Version control means that we can record changes to a file or set of files over time so that you can recall specific versions later. When you add an updated file with the same name to your project, the OSF automatically updates that file for you and keeps a record of all of the previous versions. With a simple click of the mouse, you can retrieve a history in any older versions of that file. Additionally, there are times in a project's life when there are important events you may want to preserve. We give you the tools to do this with our registration feature. Using this feature, you can create a frozen version of the project at any point in time. For instance, you can use this feature to pre-register your materials, design, and analysis before data collection begins. You can also use this feature to freeze the state of a project when you submit a manuscript or publish a paper so that you can easily retrieve information that was the basis of that submission.


Music channels with permission is not enough in some cases. We've now seen channels get kicked out of the YPP, demonetized, removed from their network for using music that they have contractual rights for commercial purposes and that is not enough in some cases on YouTube. Let's find out why. This particular channel, Freedom Music for example, uses music from Epidemic Sound. They are a Freedom Partner and Epidemic Sound is a company we pay each month a lot of money so you can all use their music for free. Why would this channel, which is doing everything correctly with permission, still get YPP suspended? Now we challenged this. We fought for the channel and I'll show you the official reply from YouTube about it later on in this video. But the key problem is this music from Epidemic Sound is used on many channels. It has been YPP suspended for duplication, which means even if you have the legal rights to use anything on YouTube, YouTube can still say we don't want copies of it across many channels and can give you an abuse event, in this case YPP suspension, which means you can't make any money and you can't be part of a YouTube network. Now, how does that affect you? What if you use Epidemic Sound in your videos? Does that mean you will get YPP suspended? No, if you're using music as background music. In this case, each of these videos has the music, has the focus of the video. Let me play a clip. Oh, oh. So you get the idea. The entire point of this video is to play that track end to end and this visualizer just moves to the beat of the music. There's no gameplay. It's not a vlog. It's the focus is on the music. That is why this is no longer allowed because this track is being used across many channels using this kind of video where the focus is on the music. YouTube has decided that is low quality for the platform. It is repetitive content. And so if you're a music promo channel, make sure you use music that is unique. It's still okay to create promotional music channels. Just don't use music that everybody else uses. For example, we have our music factory channel. Here is our music factory channel behind me. As you can see, we're doing exactly the same thing that the Freedom Music channel was doing, which is playing music in a visualizer just like this. Why is this okay? Well, because this is music we've composed, freedom owns it outright, and it's unique on YouTube. This doesn't exist across many, many channels like Epidemic Sound does. So how many copies of a track becomes too many? If one of you are doing what we do with our music factory tracks on your channel, will that be considered duplication? Good question. We don't know how many copies triggers this duplication rule for YouTube. We are in discussions with them to better understand what the thresholds are. And we will communicate that to you as soon as we have some clear answers. But for now, the general rule of thumb is don't use royalty-free music that everyone else uses from Incompetech or Kevin MacLeod or any other place that you may get royalty-free music that's easy for everyone else to get as well. Don't use popular music libraries like Epidemic Sound if you're a music promo channel. Look for music that is rare on YouTube, that doesn't exist in many places. How do you find out? Just search for the title of the track. Usually people who create music promo channels put in the title of the track that they're promoting. And so if you find many copies of that on YouTube, don't upload it to your channel. These are all just rules of thumb. I hope to get you more specific criteria on what music is safe for music promotion and what isn't. But for now, this is what we've learned. What do you think about all this freedom family? Tell us down there in the comments below. Now let's see what we are doing about this, how we are fighting for you to allow this kind of music promo content. So as I mentioned, this freedom music channel uses music with full permission that we provide. And this is the argument we made to YouTube that we believe that this content is okay because it serves a practical purpose for the music industry. Let me move myself out of the way. Especially for promoting indie artists. These are the guys that want many copies of their music all over YouTube, so you discover them. This kind of content is appreciated by the YouTube audience, i.e. the music visualization videos are not unwanted repetitive content. Now this is important. You guys tell me, if you see a track that you've seen on another channel, will you somehow think that's bad and you will run away from YouTube because the same track is repeated? Maybe, but I think this is YouTube's point is they consider content that is repeated and present on many videos, on many channels, to be repetitive unwanted and low quality. And of course we think channels like this should be allowed in the YPP. What other arguments can we make on behalf of music promo channels? Tell me down there in the comments below because we are in direct contact with YouTube. We have dedicated YouTube managers that listen to us and take our points, arguments straight to the YouTube central team that makes these policy decisions. So you have a chance for your voice to be heard, but telling us down there in the comments below or of course email freedom or support at freedom.tm any of your detailed suggestions because those get to me as well. Here is the official reply from YouTube behind me about the Freedom Music channel. So they said this channel is out of YPP compliance due to duplication. In most cases you can't reupload someone else's content unless you get permission first. There was full permission for this so it's not just permission that they need, you also need to, YouTube also needs to believe that the content adds value to the platform, that there isn't many duplicate copies of it. They have this concept of the imperative of originality that I mentioned before. It's an AdSense policy and I'll talk more about that in future videos. And remember it's not enough to credit the owner or state no copyright intended but that wasn't the issue here. Here are some types of content that are subject to copyright, audiovisual works, sound recordings and musical compositions which is the issue here. One of the best practices for some of our partners is that, let me hide myself, is that instead of focusing on making sure their content doesn't contain things that are not allowed they focus on including high value content that is part of our guidelines for videos that can be monetized. Now all of this that you're reading is down there in the description below and all these links you can click on and read for yourself which I encourage you to do to educate yourself so you know all the rules directly from YouTube to help protect your channel and keep your channel safe. Speaking of KYC know your channel click that I to see all the videos I made about keeping your channel safe. Good examples of channels doing things well and doing things badly so in case you are doing any of those things stop it. It's not worth the risk that your channel may get suspended or terminated because of ignorance because you don't know what the rules are so have a look at those videos and tell me down there in the comments below if anything confuses you. I do read every comment and I try to help all of you by answering your questions and we have a team a community team who also contributes their experience and knowledge by answering all of your questions. No comment left behind is our culture is our philosophy we want to make sure everyone gets a meaningful response. I mentioned the music factory channel click that I to see this channel behind me this is where we post all of the music that you can use for free it's 100% safe because we own it outright. We will never sell it to another record label or change the licensing in the future so if you can so if you use any of this music in your videos you're guaranteed to be safe forever as long as you believe me. To learn more about music factory just click the link down there in the description below that will take you to our music factory website and feel free to browse the channel and let us know what you think of the music there in the comments below. You may be wondering why YouTube is suddenly taking a hard stance on music promo channels. You know this is all part of their effort to restore advertiser confidence and increase the quality of the videos on YouTube so that all of you get higher cpms and more ad budgets are spent and not in other places in the world. So I know this is painful but we have to remember YouTube is doing this for our long-term success and we just need to learn all these rules and abide by them and so in the future we can all keep saying it with me say it with me I mean we can all keep growing together as a family that is the spirit of freedom we all help each other grow together as a family and our mission is to help you create your career path here in this digital world roll it that is important because now we have four pillars to help you build your career in this digital world YouTube of course game development crypto and music all of these are interconnected pillars that will allow you to make new money crypto is simple just run our software to make money while you're sleeping by us paying you every month just like we pay your youtube revenue click that i to see the video about crypto miner if you don't know about the software and you can download download it from the link in the description below for game development we are creating custom games for you we're starting with some large creators some large youtubers and we will create custom games for many more of you over time the goal there is for you to tell us what kind of game you want and for us to build it for you for free and then we just share in the revenue it's a revenue share deal from any money that comes from the game and for music it's all about working with composers to help them monetize their talent by giving them a way to distribute their music safely and legally through the freedom network through the people who use music factory and all of our partners outside of youtube who can also use our music like the games we create music factory the composers can contribute music to video games and we have some partnerships with larger creators like rena mater who uses the music factory tracks in his videos and then we pay the composers a royalty every month they get a percentage of all the money those videos earn for the lifetime of those videos it's a way for the musician to make money in addition to freedom and the creator so if you're a composer and you think you are good enough to have your music used on big channels and popular videos then get in touch with our music factory team the best way to start is email support at freedom dot tm your profile your portfolio maybe your soundcloud link and then our music team will get back to you if you are a composer that they'd like to work with so feel free to reach out to us anytime on that email support at freedom dot tm feel free to leave any comments or questions down there in the comments below and keep safe keep making videos never give up that's the one and only way you can ever actually fail never give up who am i i am papa george someone who's never given up i've been in this business now for five years building freedom almost five years december first will be our fifth anniversary that's amazing guys i can't believe i've been speaking to you making videos for five years and of course before that i was making videos for other mcn's some of which you may know tgn and i built that from the ground up as well and now it's being managed by a different team with a different group of people so we are now focused on freedom so how many of you have been around from the early days of freedom i would love to know tell me down there in the comments below because you haven't given up either if you've stuck around five years or so with us that's awesome and i'd love to hear your story and in the future maybe make some videos to remind everyone that if you never give up you will succeed eventually for me i will be making more videos this week i haven't been making videos lately because i've just been busy guys i'm sorry we are now settled in dubai our kids are going to school and i am ready to be communicating with you more often maybe a few live streams we'll see take care i'm george and you've been watching click that i to partner with freedom and join the freedom family so we can all grow together you get many perks like position music you also get epidemic sound a lot of other access to royalty free videos sponsorships and many things to help you grow just click the links down there in the description below to get involved in our community our forums our discord chat servers meet our graphics team meet our community team all of that on discord and the forums what are you waiting for get started and we will grow together as a family because this is the freedom family you are part of it we are all part of it and we're all growing together to get more george click that big f that will subscribe you to freedom central home of the george show and pewdiepie gave one of you freedom family a big shout out click that video to see the shout out and to see our new 3d sets for you and click that video to see what youtube recommends you watch next


Your coca-cola bottler presents Claudia Claudia based on the original stories by Rose Franken Brought to you transcribe Monday through Friday by your friendly neighbor who bottles coca-cola Relax and while you're listening refresh yourself. Have a coke and now Claudia In your face feel good. Are you warm enough darling? Yeah, I feel marvelous And God feels marvelous. Look at him dance around Danes are winter dogs. They're built for cold weather I hope he's not gonna mind the summer David you are sweet to come walking in the park with me. I thought I'd give mama the afternoon off Sounds David Winter sound I'd know it was January but the sounds in the park if I heard them piped in to the middle of an African desert Hey, did you hear what I hear sounds like a herty-gertie? Oh, that's one on me What is herty-gerties and hand organs darling are a spring sound not a winter one I love them and look at children are skating. It's time to the music. Oh David look at his droopy mustache. Oh, he's just the way he's supposed to be isn't it? Look at these silly hat Say I remember this fellow He used to play up around the zoo and he has a wonderful monkey, but he remember you David me. I've got a different hat on Hello there, I haven't seen you in a long time. Hello, mister. Where's your monkey? I miss her I was telling my wife about it.  She died.  No, no money She catch a call and accidentally the doctor. He says she got a no more Two days some more my Josephine. She died.  She understand everything. No, she was a wonderful little monkey I'm jealous. No, it's nothing left for for me. I'm gonna go back to Italy I'm a too sad to play a happy music with the North Josie And nobody's like the hurry goodie man no more. Oh come now that that's not true No, no, don't tell a Dominic You know the hurry goodies out of style People who sit on appreciate the art anymore They think all you do is a turn of the handle and the music should come out It's not true Once he was a music for Kings and today it's a music for beggars Well, that makes us all very rich beggars Dominic. He's still Lisa lost the art You know when I'm a hurry goodie. She's a get the brook. It's almost impossible for me to find someone new music for him Nobody make the music or no more. Nobody not to listen no more Mama me and nobody's who want all the Dominic anymore so Soon I'm a go away. I Call me here today to make her one or less a good buy to Central Park Where my Josie she was a so happy and all the little kids see there was a so happy with my Josie Well, how about you're getting another monkey wouldn't that sort of take care of things for you? No, no other monkey She cannot do He should know the monkey in the whole world for me. That's the way I feel about you darling That's one of the nicest things you ever said to me. No, I said no other monkey, but Josie You know, I'm not can even a cell of the organ Nobody will abide and it's such a beautiful instrument.  I must do to pass him along. Oh, you must be able to sell it It's it's worth some money. It's the most beautiful is the organ in the whole of work I'm I'm at me. I Excuse, I'm not gonna talk about it no more.  What does it play Dominic? What is repertoire? Oh such a wonderful music or soul a meal and a swan a river and Santoro cheer and in the most sweetest song of all a paliaccio Josie she used to dance in the streets and now I can I can't know even to sell him Dominic if you were to sell this organ, how much would you want to sell it for David? He's all the dependent on what is off. Well, well, what would you expect to be offered to you? How much money you got with you darling? Oh about ten dollars for my Josie was it here?  Why don't you make believe Josie is standing right here? well Well, let me still all right My Josie and me we think we sell it for $35 Well, it's a lot of money Yes, but look at the seven a beautiful music's inside and then at the top pain things and a look is a big with the wheels Like a wedge. We're not arguing about the price, but 35 David, I didn't expect that price to do. I must say it took me by surprise You see nobody she wants to buy for only 35 for dog Well, I wouldn't think of buying it for a cent less than 50. Would you David?  Have we got enough money David? Let me see. I'll empty out my pocket Look who you don't think would to buy for you. Will you sell it to us? Salamate. Oh Sure, you'll love for my organ. I sell them to you See that's fifty two dollars and Thirty nine cents two thirty nine sales tax Dominic. It's a deal You pay a fifty dollars for the organ and two dollars and thirty nine cents sales tax not a cent less And don't try to bargain with this Dominic. It won't do you a bit of good And I got the words so much money. Oh, I wouldn't kiss you. I would dance for you I wouldn't do anything for you. I wish you had more Dominic I think this herty-gertie is worth ten times that all you have with the soul you have with the heart and Now you were gonna have with the greatest happiness in the whole world When you said you turn at the little hand and when you're happy you turn at the little hand When it's a rain or the sun is shining you have a music all your life I remember that sweet dreams and a sweet life Dominic wait a minute He's gone. Well Looks like we're the proud parents of a hand organ What have I done? What David? What have you done? I? We've we've bought this thing. Oh Course we thought it is wonderful It's mad. I never meant to but we can use it as a table when we're not playing it It'll make a beautiful table when the baby comes darling. You won't have to sing to it babies love music It's much better than a radio or a phonograph. Oh, David I don't know where we could have gotten such a buy anywhere else to you Whatever it costs is worth it. I don't see what you're making such a fuss about darling to me It's a perfectly normal thing that we have a herdy-gertie in the house. It's always no wonder David look the children on the pond are waiting for some music and they shall have it why not at least it'll postpone our processions through the street Listen to me. There's a herdy-gertie of mine.  I see I walked through the world with my music Be Wait a minute there you Yes officer. I mean yes officer. What can I do for you? What are you doing with that thing playing it of course and where's Dominic? This is his ain't it come on block. We don't answer when strange men talk to us No monkey business, please. Where's Dominic? Dominic just left officer just this minute Claudia come back here. Honestly officer. I don't know him. I never saw him before this minute You know perfectly well, you know me how now leave us keep this argument out of the question I don't know who knows who around here. I've been letting old Dominic off easy The kids like his music, but even he ain't supposed to be playing it so near the street Herdy-gerties are out of bounds with the law so you ain't got a chance come on now If you leave me now, I won't speak to you as long as I live look look look What's going on here? I bet you stole it from Dominic.  I just bought it and from Dominic Well, that's a laugh who buys one of these things these days.  Show me your license and tell me what happened old Dominic Look who's here of it. Isn't you Dominic Norton? Well, I get you home. Mrs. Dominic Claudia tell the nice officer that this herdy-gertie belongs to us and we didn't buy it to play it We bought it to take home and use it as a coffee table. Are you two nuts? I think we are Opposite Dominic wanted to sell this Josie the monkey died and he wants to go home to Italy Now is that clear poor old Dominic Okay, but well, I ain't having any trouble to see if I catch on the streets playing that hand organ Your goose is going to be cooked so fast Do we look like the kind of people who'd go out in the streets and play this thing? You don't look like the kind of people I would know anyway your hats on crook David Running around with your hat on cook and I never heard of such a thing now get going you to take that thing home or find a nice museum for It and don't let me hear a peep out of you or else Was he nice? He loved Dominic too. I think we could play it softly and the cops around the corner He couldn't possibly hear let's see which way is he going? There goes.    That's what I am Just crank the little thing once that's the least we can do for Dominic and Josie Don't you think if you touch that handle David, let me crank it just a little bit. Well Just a little darling If a hurdy-gurdy needs spring, it'll be spring in our house all the time Claudia not so loud This broadcast of Claudia was supervised and directed by William Brown Maloney Come on over to my house and have a coke There's an invitation youngsters never turned down and how good it is to hear them troop in sure of a welcome Anticipating the refreshment of a bottle of ice cold coca-cola You can buy coke by the case now So why not have your grocer or service station attendant put a case in the car today? With plenty of coke in the refrigerator you and the family can work and play refreshed and you can always offer guests The pause that refreshes Every day Monday through Friday. Claudia comes to you transcribed with the best wishes of your friendly neighbor who bottles coca-cola So listen again tomorrow at the same time And now this is joking saying or a bar and remember Whoever you are whatever you do wherever you may be When you think of refreshment think of coca-cola or ice cold coca-cola makes any pause the pause that refreshes


Month 13b is essential for insulin exocytosis from pancreatic beta cells. It does so by clustering on docked granules in a stimulus-dependent manner. This article was authored by Krochimizuno and Tetsuro Izumi.