 Can anybody hear me? Or do I need to speak up louder? Better? Closer. Okay, let's do this. Better? Better? Or I may have to shout. Welcome. This is my second user group back. Some good news and bad news. Which do you want first? Bad news. Okay, good. I forgot to ask for refreshments when I set up this user group. So when I asked when the pizza and beer was arriving, he looked at me and he said, that's a discussion we never had. So what we've got is the coffee, the tea and the water and the snacks that are available and the bat, that's my bat. I am sorry for that. The good news is I get to catch up with my good friend Hunter. So what I'm going to quickly just do is just do introductions. So the user group is run by co-organizers. So Vincent Dismet, myself and Hunter over here. And I wanted to quickly do a call out. We are looking as a user group. We are always looking for speakers. So we're looking for all types of speakers, beginners, intermediate and advanced. And we're not just looking for advanced topics. There are beginners who are coming to these talks who want to hear from beginners who have just learned or have entered the ecosystem. So if you've got something that you think is beginner to contribute, we are looking for beginner speakers. We're looking for all types of speakers. Likewise, we're looking for people to host us. Just like Google is hosting us here, we're looking for organizations that are willing to take us in and then host these events. So if you've got any topics you want to talk about or you know of an organization that will host the user group, please get a hold of myself or Hunter. We'll be around. We'll reach out through the Meetup page if you could. Tonight's talk, I'm going to be taking the first one and I'm going to do a poll a little bit later. Daniel over there at that table is going to be doing the second talk. Daniel is the most important person you're going to meet tonight because Daniel has the swag, he has the stickers. So on that table over there are the stickers from CubeCon China. So Daniel and myself were last week in Shanghai. I got no stickers because Daniel got to the sticker box before I did and he's busy unloading them right now. So I'm going to be doing an introduction to Coop. Dan's going to be doing seven tips and tricks about Kubernetes which is basically once you're getting into Coop it's like your next generation stuff and then we've got Anil from Google over here who's going to be talking a bit about APIs. So I spoke about the organizing team. I said thank you to Google, spoke for speakers, quick poll. Who's here because the talk tonight is an introduction to Kubernetes? Okay, what is the skill level of those people in Kubernetes? Would you say it is like if you've got a low skill level or don't know anything about Kubernetes? It's okay to put up your hand because that's why we're having the intro. So apologies to everyone else because the beginner talk is going to be it's going to be a bedtime story. So if you're not into bedtime stories I do apologize. The seven tips and tricks is a little bit more advanced and then the API talk is more advanced again. Okay, this is interactive so please if you have questions stop and ask. We're going to try and have this all done by 8.30. If you need to leave for whatever reason feel free to head out if you've got an MLT to catch or you need to get home. Right, I'm going to do intro to Kube and for that I did say it was going to be a bedtime story. I was really not joking. Illustrated with pictures. Now if I can just find the button that says present. Okay, now I said it's a bedtime story but the reason I'm using the bedtime story to talk to you about Kube is because I'm going to be so one of the reasons we're going to do this talk is why are we interested in Kube? Like why is there user group about this stuff? So here's a couple of interesting things. Back at your work you're not going to get an award for spinning up a Kube cluster. You're going to get an award for delivering some kind of business functionality which is going to make your company money. The reason people are interested in Kube is because it allows your business to move very quickly. It brings extreme automation to your business. So these are very desirable characteristics to allow your business to move forward quite quickly because you're automating CICD pipelines. So I'm going to talk about the technology underneath all of that. So how many developers? Java, Python, JavaScript? Cool. Go. Right. So the problem that we have is that you have apps. Hunter, where are you? I know this is going to be a bit awkward but I'm not feeling well so I was wondering if you could just take over or take it over. I got a bug in China. I'm not feeling very well. Can you just take over the slides? It's basically the general stuff and I need to do it. Do you want to start over? I absolutely do. Do you want me to record? Does it work there? Yep. Okay everyone, sorry about that. I hope James is feeling a little better. Let me quickly catch up on where we were. I wasn't quite on the page of what we're going through. The bedtime story has got quite a history in Kubernetes but it's a really interesting way of understanding how it works in the context of both deployment and technology. We talk about the application, what we typically look at. PHP, one-pager, living somewhere. Living in an environment that she doesn't quite know. Everything's a little bit uncertain. How do we make it feel a bit more secure? The app itself we're looking at is index.php running inside a web server. We've got the web server, we've got the operating system, PHP for actually running it. All these bits and pieces that we usually go through. Am I too quiet? Can everyone hear? Yes. Yeah. So along came this magical whale, as we're probably quite familiar with in some cases. Why is it floating in the middle of a living room? But it was nice and friendly. So we're talking here about containers, right? It's Docker. So it needs to be managed, how to connect this thing to the network is a little bit uncertain. And it needs to be run, distributed, run across a multiple number of machines, and the data's got to live somewhere. I think we're all familiar with that. How many people are actually familiar with Docker? Anyone who has no idea about Docker? Okay, good. So again, the containers provide this isolated context. It can run somewhere. And it needs to be connected to the outside world. All of these things that we're running for environment. So the whale sort of says, no, can't quite deal with this. So what do we do? Looks like there's a ship coming in here. So Captain Kube to the rescue, perhaps. Okay, five beta kappa. Anyway, so Kubernetes is one of these Greek terms. They seem to be all the rage at the moment. If you hear all of these tools in the ecosystem, you've got Istio and Anthos and Kubernetes and these sorts of things. So I don't know what it is about Greek terms that kind of got hip. Anyway, that's Kubernetes for you. So it based, you know, if you know the word cybernetic, it's actually really related. Gubernatorial are all derived from the term Kubernetes. So the word for the ship's captain. So, you know, Fippy meets the captain. And so in the way that Kubernetes works, it has labels. And these labels will let you identify, you know, particular applications and essentially tagging them for particular cases. So, you know, essentially the name tags, my name is Bla. So Captain Kube suggests that the app, you know, moves aboard a pod in the ship, essentially moving her container on board. Feels a bit like home. So what is a pod? A pod is a very fundamental piece of Kubernetes. It can contain a number of containers. You know, if you think about it, a pod, you know, in the context of say a pod of whales, you know, the whales would may be docker containers. And the pod, you know, is a school of them together, if you will. So, you know, usually only tubes recommended, but doesn't necessarily have to be. But, you know, we essentially think of it as a single unit. And that can be moved around, connected via an overlay network to the rest of the environment. So essentially a runnable unit of work and, you know, gets handled by Kubernetes in a particular way. So if he has, you know, just wondering, you know, what about genetics and sheep? I don't know why. What if I want to clone myself? Any number of times. So the captain says, OK, you know, we can replicate in some ways. So the nice thing about a pod is you can take the template that is defined and it defines what a pod is and the containers that are in there and make a number of different replications across the environment, i.e. how do we make it highly available in some ways. So they have what they call a replication controller, or in a little bit more modern context for Kubernetes is what's called a deployment. So this was created a while ago. The company behind this, DAIS, is actually was bought out by Microsoft a few years ago. So they no longer exist, although the team that's working on it is still building out some really cool tools out there in Microsoft. So if you know the Helm product, that's one of them. But, you know, for the context, replication controllers aren't typically used as much these days, but for the most part, you know, development is, deployments are, you know, another term that you might hear kind of interchangeably. So essentially it sets up a template that says this is the kind of pods that we want. When we want to scale it out, just, you know, duplicate it in such a way. It gives you the logic for scaling up and gives you the logic for scaling down and can be used for, you know, highly available stuff or even doing rolling deployments. How do you take one of these things down, you know, replicate it, replace it as you scale things up? So it's a very useful primitive that's part of Kubernetes to actually manage application lifecycle. So, you know, Fippy was happy. The little app was, you know, available. Lots of replicas, if you will, cloning herself. But, you know, what happens when you want this tunnel? You want to discover how do you connect and talk to other pods in the system? That's, so essentially there's a primitive in Kubernetes called a service. Now, service provides the visibility onto the network for a particular service. It's sort of this, if you think about it in some ways as like a network identity, you can provide a name to a service. It provides the discovery and the load balancing for being able to access. And essentially the stability. So, you know, if you think about what DNS provides you, in most cases, it provides it in a very similar way to services in the network. Because we've got this great thing called labels, we can use the labels for essentially identifying those things that a service will target. I, in the case of Fippy's name tag, we can target Fippy itself. So, you know, essentially it uses ephemeral IP addresses. In some cases, you know, you delete a service and spin it up again, it'll have a new IP address. But overall the lifecycle generally is the name is available. You're actually able to point to a particular service and potentially on a particular port. So, in this case, Fippy begins to explore and go and talk to other pods. Meets Goldie and they become good friends. And, you know, she gave, you know, Fippy got a present from Goldie. So, why are you sad? Because essentially Fippy has nowhere to put this present. So, what do we talk about? Persistent storage or volumes. So, essentially these are the, you know, the backing store that you typically be familiar with in your cloud providers. They may be an EBS. They may be an on-prem solution like Ceph. But essentially these volumes can be attached to a particular pod and data stored on it. So, what's the obvious case? Databases, perhaps. Images, presence, I guess. And, you know, for those who are familiar with Docker, it is the same kind of thing, a volume that you'll be able to attach and use it for permanent storage. So, you know, there are different types and, you know, the cloud service provider ones are fairly straightforward but there can be other things that, you know, have special cases in the case of like a temporary storage that if the pod gets destroyed it gets deleted. It can be in certain cases that if it's, you know, can be in, you know, a shared file system. It can be EFS. It can be, you know, NFS. Any of those sorts of things to a provider across. So the context of a volume is that it provides the functionality to do a different type of storage and attach it to different types of pods. So, you know, Fipee loved the life on Captain Coob's ship. You know, she thought back to the days of being on a host of providers, you know, you know, a little bit scary. But, you know, how do I have a little bit of privacy? I mean, I still want to keep this separation. So, you know, namespaces are this fundamental unit of essentially grouping of privacy if you want in Kubernetes. So it lets you combine a bunch of pods together, segment them off, a number of resources that are attached in this project. But it can include other primitives that are part of Kubernetes. In the case of volumes, they're included in the namespace. Secrets themselves are also included as that and configuration and a whole number of other things. If you know they're really, you know, kind of the newer functionality in Kubernetes, things like custom resources, all of these things can be namespaced and grouped together. So, very useful way of keeping these things in. It's a good way of doing potentially, if you want to have a look at it, a soft multi-tenancy. You're able to have, you know, different tenants in different namespaces, all kind of being grouped together. And isolated from each other as well. So, you know, a number of new things which aren't mentioned in this just, you know, due to the, perhaps the age of the presentation, but things like network policy can also say, well, you know, not only do you want to isolate the pods and the visibility of, say, the workloads that are running out, but you also can segment, say, the network to stop people or stop pods from going out to the outside world or talking to pods in different namespaces. So, everything was great. Fitby sailed the seas, had great adventures, and had found a home. So, Fitby lived happily ever after. And that's it. Does anyone have any questions? I don't know if there was anything else that was intended out of this, but... Have you told this story before? I have not. Wow. But I should probably tell... I've got a, like, 10-month-old son, so probably I should start telling him this so that when he gets a little bit familiar with it, he can become a Kubernetes expert as well. All right. That, I think, is it. Daniel's up. Okay.