1 00:00:02,530 --> 00:00:04,919 ‫CRD's and the Operator pattern. 2 00:00:05,190 --> 00:00:08,180 ‫This is where things start to get really interesting 3 00:00:08,189 --> 00:00:11,160 ‫with Kubernetes. Because when we start adding in 4 00:00:11,250 --> 00:00:14,250 ‫all these third-party tools, and there's 5 00:00:14,340 --> 00:00:16,679 ‫all these APIs in Kubernetes to extend it. 6 00:00:17,070 --> 00:00:19,324 ‫Kubernetes itself becomes its own platform for 7 00:00:20,100 --> 00:00:22,207 ‫you to do things that it was never designed 8 00:00:23,100 --> 00:00:24,397 ‫to do or you never thought it could do. 9 00:00:24,464 --> 00:00:26,865 ‫First off, if you haven't realized so far in this 10 00:00:27,480 --> 00:00:30,050 ‫course, you can add third-party stuff to Kubernetes. 11 00:00:30,360 --> 00:00:33,369 ‫It doesn't just use the Kubernetes API. 12 00:00:33,690 --> 00:00:36,750 ‫Now, with custom resources and custom controllers, 13 00:00:37,020 --> 00:00:38,549 ‫you can change the API. 14 00:00:38,640 --> 00:00:40,502 ‫You can actually use the API to extend 15 00:00:42,030 --> 00:00:44,909 ‫it. Then, even kubectl, at the command line, 16 00:00:45,330 --> 00:00:48,299 ‫gets new commands, and can see new resource types and 17 00:00:48,300 --> 00:00:51,183 ‫new controllers. A few years ago, CoreOS 18 00:00:51,720 --> 00:00:54,750 ‫came out with a nice article talking about the 19 00:00:54,810 --> 00:00:57,929 ‫Operator pattern, which was their way of implementing 20 00:00:57,930 --> 00:01:00,570 ‫custom resources and custom controllers together 21 00:01:00,960 --> 00:01:04,169 ‫in a way that would allow you to essentially use 22 00:01:04,709 --> 00:01:07,559 ‫previously complicated software in 23 00:01:07,920 --> 00:01:10,919 ‫Kubernetes, but that Kubernetes is aware 24 00:01:10,920 --> 00:01:13,615 ‫of that software. Maybe if you had a complex monitoring 25 00:01:13,920 --> 00:01:16,272 ‫system like Prometheus, and you wanted to deploy 26 00:01:16,920 --> 00:01:19,590 ‫it, run it keep it up to date, 27 00:01:20,010 --> 00:01:22,289 ‫and it just do all the things with it, you didn't 28 00:01:22,290 --> 00:01:24,789 ‫necessarily want to have to learn all the different 29 00:01:25,470 --> 00:01:28,370 ‫parts of it and how they work in Kubernetes. 30 00:01:28,770 --> 00:01:30,940 ‫Some of them might need StatefulSet. 31 00:01:31,800 --> 00:01:33,809 ‫Some might need deployments and services. 32 00:01:33,810 --> 00:01:36,450 ‫Some might need some sort of cron job in it. 33 00:01:36,480 --> 00:01:39,239 ‫I mean there's all these different types of resources that 34 00:01:39,270 --> 00:01:41,759 ‫it might need in order to have a fully functioning 35 00:01:41,760 --> 00:01:42,760 ‫monitoring solution. 36 00:01:43,050 --> 00:01:44,730 ‫That's just one example. 37 00:01:44,790 --> 00:01:48,029 ‫Basically, there's all this software now that is adopting 38 00:01:48,030 --> 00:01:51,569 ‫this pattern and implementing their own custom 39 00:01:51,990 --> 00:01:54,604 ‫code into Kubernetes to extend it. 40 00:01:54,613 --> 00:01:57,202 ‫Essentially, it gives you kubectl 41 00:01:57,570 --> 00:02:00,569 ‫commands to operate those tools 42 00:02:00,630 --> 00:02:03,209 ‫as if they were natively part of Kubernetes itself. 43 00:02:03,600 --> 00:02:06,810 ‫This is happening for all sorts of open source stuff 44 00:02:07,080 --> 00:02:10,460 ‫is that you can add this stuff in...in the resources 45 00:02:10,470 --> 00:02:12,479 ‫you'll see a bunch of lists and different websites you can 46 00:02:12,480 --> 00:02:13,560 ‫actually find these things. 47 00:02:13,970 --> 00:02:16,679 ‫You think of them as really complex 48 00:02:16,920 --> 00:02:20,249 ‫YAML files that don't just allow you to deploy 49 00:02:20,250 --> 00:02:23,159 ‫something and then it just runs, 50 00:02:23,340 --> 00:02:25,725 ‫but actually get commands and other API's 51 00:02:26,520 --> 00:02:28,409 ‫that extend out of Kubernetes itself. 52 00:02:28,740 --> 00:02:31,919 ‫It's a pretty exciting area because it's rather new and 53 00:02:31,950 --> 00:02:34,498 ‫it's just showing that how Kubernetes is taking over 54 00:02:34,710 --> 00:02:36,621 ‫everything. There's sort of no limit to 55 00:02:37,770 --> 00:02:39,809 ‫what it can't manage and control. 56 00:02:40,350 --> 00:02:42,629 ‫I would say that obviously you don't want to add everything 57 00:02:42,630 --> 00:02:44,669 ‫in here because each one of these would add its own 58 00:02:44,940 --> 00:02:47,669 ‫information to Kubernetes into the ETCD database, 59 00:02:47,970 --> 00:02:50,639 ‫extend the API and the control plane, and all that stuff. 60 00:02:50,970 --> 00:02:52,342 ‫It could be a potential area 61 00:02:54,240 --> 00:02:56,609 ‫where if you add too much, you'll end up with too much 62 00:02:56,610 --> 00:02:58,439 ‫complexity in your system itself. 63 00:02:58,800 --> 00:03:01,103 ‫Right now, at least for things like monitoring, 64 00:03:02,250 --> 00:03:04,800 ‫and databases, and backups, and logging, 65 00:03:05,280 --> 00:03:07,650 ‫these are the areas where I would focus on looking at 66 00:03:08,070 --> 00:03:10,177 ‫getting CRD's and the Operator pattern type 67 00:03:11,430 --> 00:03:14,300 ‫of deployments rather than just finding a YAML 68 00:03:14,760 --> 00:03:16,439 ‫that you've seen on the Internet and saying, I want to 69 00:03:16,440 --> 00:03:17,940 ‫deploy this with that YAML file. 70 00:03:18,240 --> 00:03:19,619 ‫This gives it more intelligence. 71 00:03:19,980 --> 00:03:22,259 ‫There's lots of resources on each one of these and of 72 00:03:22,260 --> 00:03:24,959 ‫course, each one would have a different implementation and 73 00:03:24,960 --> 00:03:27,361 ‫use. I definitely recommend checking them out now 74 00:03:27,960 --> 00:03:28,650 ‫that they exist.