Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:07,130 --> 00:00:13,710
hey everyone I'm a nationís car and I'm
2
00:00:11,519 --> 00:00:16,650
introducing everyone to this IBM
3
00:00:13,710 --> 00:00:21,060
developer Tech Talk series today we'll
4
00:00:16,650 --> 00:00:22,740
be going over kubernetes so this is
5
00:00:21,060 --> 00:00:25,529
titled learn the history and
6
00:00:22,740 --> 00:00:28,560
fundamentals of kubernetes our presenter
7
00:00:25,530 --> 00:00:32,160
today is Edie she and he'll introduce
8
00:00:28,560 --> 00:00:35,280
himself cool so yeah hey everyone I'm
9
00:00:32,159 --> 00:00:38,328
Edie I'm a developer advocate and
10
00:00:35,280 --> 00:00:40,739
working for IBM cloud with a focus on
11
00:00:38,329 --> 00:00:44,699
cloud deployment so you know can
12
00:00:40,739 --> 00:00:47,578
containers serverless virtual machines
13
00:00:44,699 --> 00:00:50,940
that those kind of those are kind of
14
00:00:47,579 --> 00:00:53,370
like the key features of what I focus on
15
00:00:50,940 --> 00:00:55,170
but also I do a fair amount of machine
16
00:00:53,370 --> 00:01:00,030
learning and artificial intelligence as
17
00:00:55,170 --> 00:01:02,129
well so ok so throughout this talk I'll
18
00:01:00,030 --> 00:01:03,960
be monitoring the YouTube chat for
19
00:01:02,129 --> 00:01:06,179
comments and questions and in the
20
00:01:03,960 --> 00:01:08,640
YouTube chat in the description box
21
00:01:06,180 --> 00:01:10,710
there's a link to the event page and in
22
00:01:08,640 --> 00:01:12,900
this event page you'll have a replay of
23
00:01:10,710 --> 00:01:14,369
this video and getting started resources
24
00:01:12,900 --> 00:01:16,710
that will help you take the next steps
25
00:01:14,370 --> 00:01:20,640
in learning kubernetes along with a link
26
00:01:16,710 --> 00:01:24,990
with how to sign up with IBM cloud so ed
27
00:01:20,640 --> 00:01:28,880
we'll begin now cool yeah so what I will
28
00:01:24,990 --> 00:01:31,410
do just before I start just check all my
29
00:01:28,880 --> 00:01:33,300
all my slides up on the screen so that
30
00:01:31,410 --> 00:01:38,750
you're ready to go
31
00:01:33,300 --> 00:01:40,920
ok great yeah so try to try and not like
32
00:01:38,750 --> 00:01:42,960
boy you guys too much with too many
33
00:01:40,920 --> 00:01:45,330
slides what I'm gonna do in this talk is
34
00:01:42,960 --> 00:01:47,369
I'm gonna take you through some basics
35
00:01:45,330 --> 00:01:48,480
of you know containers and Kuban at ease
36
00:01:47,370 --> 00:01:50,790
and where it came from
37
00:01:48,480 --> 00:01:52,290
and just a few of the important things
38
00:01:50,790 --> 00:01:54,120
you'll need to know and then I'm gonna
39
00:01:52,290 --> 00:01:56,370
do live demonstration because I think
40
00:01:54,120 --> 00:01:58,680
it's the best way to learn is to see how
41
00:01:56,370 --> 00:02:00,180
it's actually done and and you can see
42
00:01:58,680 --> 00:02:02,310
it live and this is actually also
43
00:02:00,180 --> 00:02:04,200
available as a workshop if you want to
44
00:02:02,310 --> 00:02:06,200
do it I'll share the link with everyone
45
00:02:04,200 --> 00:02:15,430
afterwards
46
00:02:06,200 --> 00:02:18,260
okay so let me just share my screen cool
47
00:02:15,430 --> 00:02:22,010
and Anisha could you just confirm you
48
00:02:18,260 --> 00:02:29,269
can see that you should be able to see
49
00:02:22,010 --> 00:02:32,000
the intro okay great so just just to
50
00:02:29,270 --> 00:02:34,130
reiterate what Anisha said if you're on
51
00:02:32,000 --> 00:02:35,840
this event page anyway there are
52
00:02:34,130 --> 00:02:38,540
resources you can go to you can find all
53
00:02:35,840 --> 00:02:41,150
sorts of things around Cuba Nettie's and
54
00:02:38,540 --> 00:02:42,890
so on and the the workshop that I
55
00:02:41,150 --> 00:02:45,200
mentioned some of which is covered in
56
00:02:42,890 --> 00:02:47,089
this talk if you go to Cuba Nettie's 101
57
00:02:45,200 --> 00:02:48,859
on the left and if you're interested in
58
00:02:47,090 --> 00:02:50,930
signing up for a free IP em cloud
59
00:02:48,860 --> 00:02:53,180
account go to this link on the right
60
00:02:50,930 --> 00:02:55,040
hand side and from there you can start
61
00:02:53,180 --> 00:03:01,549
playing with all sorts of resources and
62
00:02:55,040 --> 00:03:03,950
services on IBM crowd great so the
63
00:03:01,549 --> 00:03:06,620
agenda for today I'm going to loosely
64
00:03:03,950 --> 00:03:08,480
cover a container architecture and this
65
00:03:06,620 --> 00:03:12,650
talk kind of assumes that you have a
66
00:03:08,480 --> 00:03:15,290
basic understanding or at least familiar
67
00:03:12,650 --> 00:03:16,609
with containers as a concept you don't
68
00:03:15,290 --> 00:03:19,548
necessarily have to have had hands-on
69
00:03:16,609 --> 00:03:22,430
experience talk about the advantages of
70
00:03:19,549 --> 00:03:24,620
them then talk about docker and how that
71
00:03:22,430 --> 00:03:27,829
kind of revolutionized that container
72
00:03:24,620 --> 00:03:29,269
ecosystem and then some of the stuff
73
00:03:27,829 --> 00:03:32,480
around Cuba Nettie's you know why I came
74
00:03:29,269 --> 00:03:34,640
about where it came from and the basics
75
00:03:32,480 --> 00:03:37,040
of Cuban ESI's and how it works
76
00:03:34,640 --> 00:03:38,660
and then some key concepts of Cuba
77
00:03:37,040 --> 00:03:40,548
Nettie's they don't do this demo I
78
00:03:38,660 --> 00:03:41,959
talked about and then finally I'll just
79
00:03:40,549 --> 00:03:46,760
come back to the slides just to wrap
80
00:03:41,959 --> 00:03:48,350
everything up at the end so to start
81
00:03:46,760 --> 00:03:52,179
with just for those who aren't
82
00:03:48,350 --> 00:03:55,760
necessarily familiar containers
83
00:03:52,180 --> 00:03:58,250
essentially have taken what was you know
84
00:03:55,760 --> 00:04:00,350
the virtual machine operating model
85
00:03:58,250 --> 00:04:02,150
where you have a hypervisor and in each
86
00:04:00,350 --> 00:04:05,239
of those you have an you know an
87
00:04:02,150 --> 00:04:07,459
isolated segment of compute and that can
88
00:04:05,239 --> 00:04:09,350
run into an operating system the
89
00:04:07,459 --> 00:04:11,630
difference with a container is that they
90
00:04:09,350 --> 00:04:14,480
share a host operating system so you're
91
00:04:11,630 --> 00:04:16,399
still you still work in an isolated
92
00:04:14,480 --> 00:04:19,389
environment both in terms of compute
93
00:04:16,399 --> 00:04:23,169
memory processors etc but there
94
00:04:19,389 --> 00:04:27,639
actually all on the same Lennox host
95
00:04:23,169 --> 00:04:29,859
operating system and so what this allows
96
00:04:27,639 --> 00:04:33,490
containers to do is to be incredibly
97
00:04:29,860 --> 00:04:35,620
more incredibly like lightweight and way
98
00:04:33,490 --> 00:04:37,749
more portable than a virtual machine is
99
00:04:35,620 --> 00:04:39,849
and I'd like for those who've you've had
100
00:04:37,749 --> 00:04:41,289
experience in this trying to share
101
00:04:39,849 --> 00:04:43,748
virtual machines with each other when
102
00:04:41,289 --> 00:04:46,498
you're sharing images they're often you
103
00:04:43,749 --> 00:04:48,460
know tens or hundreds of gigabytes
104
00:04:46,499 --> 00:04:49,900
containers tend to be you know in the
105
00:04:48,460 --> 00:04:51,340
range of like megabytes tens of
106
00:04:49,900 --> 00:04:53,169
megabytes hundreds of megabytes as
107
00:04:51,340 --> 00:04:54,729
they're very big but it's normally the
108
00:04:53,169 --> 00:04:56,669
stuff you put inside it that makes it
109
00:04:54,729 --> 00:05:00,128
big it's not the base image itself
110
00:04:56,669 --> 00:05:01,930
whereas an operating system already by
111
00:05:00,129 --> 00:05:04,840
default it's taking out gigabytes of
112
00:05:01,930 --> 00:05:07,029
space right and so they're much less
113
00:05:04,840 --> 00:05:08,948
portable yeah the other thing is they
114
00:05:07,029 --> 00:05:12,339
don't have the boot up time of an
115
00:05:08,949 --> 00:05:15,460
operating system so containers can start
116
00:05:12,339 --> 00:05:17,009
in milliseconds where um virtual
117
00:05:15,460 --> 00:05:18,938
machines were starting in you know
118
00:05:17,009 --> 00:05:22,509
seconds if they're really fast but
119
00:05:18,939 --> 00:05:24,939
mostly minutes um to show you how this
120
00:05:22,509 --> 00:05:27,159
this kind of makes it more flexible in
121
00:05:24,939 --> 00:05:28,509
terms of how you run your compute the
122
00:05:27,159 --> 00:05:30,909
other thing with a virtual machine is
123
00:05:28,509 --> 00:05:33,029
that they they are constrained from when
124
00:05:30,909 --> 00:05:36,099
they start in terms of their resources
125
00:05:33,029 --> 00:05:38,819
so if I have this example on the left
126
00:05:36,099 --> 00:05:42,188
hand side I've got a virtual machine but
127
00:05:38,819 --> 00:05:44,710
hardware known as got four apps on it
128
00:05:42,189 --> 00:05:47,139
I've provisioned those into that machine
129
00:05:44,710 --> 00:05:49,029
but I have reserved a quarter of it for
130
00:05:47,139 --> 00:05:49,930
each of those apps and actually none of
131
00:05:49,029 --> 00:05:52,419
them are using the fully allocated
132
00:05:49,930 --> 00:05:53,860
resources that I've given them with
133
00:05:52,419 --> 00:05:55,299
containers you don't have to constrain
134
00:05:53,860 --> 00:05:56,949
them you can constrain them with
135
00:05:55,300 --> 00:06:00,490
kubernetes and you your common to see
136
00:05:56,949 --> 00:06:02,500
this later but it also allows you to get
137
00:06:00,490 --> 00:06:05,020
more utilization out of the hardware you
138
00:06:02,500 --> 00:06:07,689
have underneath because typically
139
00:06:05,020 --> 00:06:10,149
they're smaller lighter weight and they
140
00:06:07,689 --> 00:06:12,219
have fewer resource requirements in the
141
00:06:10,149 --> 00:06:13,899
first place but they also don't
142
00:06:12,219 --> 00:06:17,050
necessarily need to be constrained so if
143
00:06:13,899 --> 00:06:21,930
one app needs more compute than another
144
00:06:17,050 --> 00:06:26,259
it can take it and so then bringing onto
145
00:06:21,930 --> 00:06:27,490
docker right so docker tick containers
146
00:06:26,259 --> 00:06:31,419
which actually been around for a long
147
00:06:27,490 --> 00:06:32,830
long time there was since the 80s but
148
00:06:31,419 --> 00:06:33,159
they weren't very popular because it
149
00:06:32,830 --> 00:06:35,050
would
150
00:06:33,160 --> 00:06:39,430
very difficult deployment technique to
151
00:06:35,050 --> 00:06:42,820
use what daca did was took the container
152
00:06:39,430 --> 00:06:45,430
system and made them developer friendly
153
00:06:42,820 --> 00:06:49,270
so they built a nice experience a user
154
00:06:45,430 --> 00:06:51,880
experience around containers and the way
155
00:06:49,270 --> 00:06:53,620
they did this was they they defined some
156
00:06:51,880 --> 00:06:56,110
key components like on the left hand
157
00:06:53,620 --> 00:06:58,000
side you see it the registry right
158
00:06:56,110 --> 00:07:01,420
inside a registry it's essentially a
159
00:06:58,000 --> 00:07:03,430
store of built containers and and what
160
00:07:01,420 --> 00:07:05,290
gets stored in there or container images
161
00:07:03,430 --> 00:07:07,900
so what you can see in the middle just
162
00:07:05,290 --> 00:07:09,790
under where it says docker engine an
163
00:07:07,900 --> 00:07:12,840
image is the same as a virtual machine
164
00:07:09,790 --> 00:07:15,010
image it's it's like a blueprint of a
165
00:07:12,840 --> 00:07:18,760
built container that contains all the
166
00:07:15,010 --> 00:07:21,870
code and dependencies required to run
167
00:07:18,760 --> 00:07:25,420
your application right those images then
168
00:07:21,870 --> 00:07:27,430
get run and they're instantiated into a
169
00:07:25,420 --> 00:07:29,050
container and that's what actually the
170
00:07:27,430 --> 00:07:31,840
container is is it's a running version
171
00:07:29,050 --> 00:07:34,990
of the image that you've built and those
172
00:07:31,840 --> 00:07:37,000
are built through a set of instructions
173
00:07:34,990 --> 00:07:39,760
called a docker file right which you can
174
00:07:37,000 --> 00:07:42,070
see on the right hand side and so talk
175
00:07:39,760 --> 00:07:44,400
about this very simple ecosystem but it
176
00:07:42,070 --> 00:07:46,990
actually made it really easy to reuse
177
00:07:44,400 --> 00:07:48,820
other people's assets so you know I
178
00:07:46,990 --> 00:07:51,730
could I could take one of your images
179
00:07:48,820 --> 00:07:53,580
from the registry I could add a use my
180
00:07:51,730 --> 00:07:57,490
own docker file and just build my own
181
00:07:53,580 --> 00:07:59,050
application information into the image
182
00:07:57,490 --> 00:08:02,140
that you've already created and then I
183
00:07:59,050 --> 00:08:04,410
can run them as containers when I have a
184
00:08:02,140 --> 00:08:06,940
run in container if I also want to
185
00:08:04,410 --> 00:08:08,740
capture the changes I've made in that I
186
00:08:06,940 --> 00:08:11,020
can commit that and it creates a new
187
00:08:08,740 --> 00:08:14,830
image from the the base image that was
188
00:08:11,020 --> 00:08:16,510
used but so docker kind of made this
189
00:08:14,830 --> 00:08:20,409
really nice and running containers was
190
00:08:16,510 --> 00:08:23,440
then sort of a much easier problem than
191
00:08:20,410 --> 00:08:24,940
it was before but docker has a lot of
192
00:08:23,440 --> 00:08:27,850
limitations when it comes to running
193
00:08:24,940 --> 00:08:29,770
things in production and so if you read
194
00:08:27,850 --> 00:08:31,870
this problem statement at the top I have
195
00:08:29,770 --> 00:08:33,520
multiple applications that I wish to run
196
00:08:31,870 --> 00:08:35,979
across multiple servers with high
197
00:08:33,520 --> 00:08:36,789
availability docker is great but it's
198
00:08:35,979 --> 00:08:40,390
not that smart
199
00:08:36,789 --> 00:08:42,069
so some of the limitations of docker so
200
00:08:40,390 --> 00:08:44,620
docker is only aware of the containers
201
00:08:42,070 --> 00:08:46,120
running on the machine it runs on right
202
00:08:44,620 --> 00:08:48,370
and that's the biggest one here is
203
00:08:46,120 --> 00:08:52,720
the docker engine runs on a single
204
00:08:48,370 --> 00:08:53,649
machine and it has no awareness of the
205
00:08:52,720 --> 00:08:56,620
fact that you might have multiple
206
00:08:53,649 --> 00:08:59,680
machines with multiple applications
207
00:08:56,620 --> 00:09:03,730
running on them so it's also inherently
208
00:08:59,680 --> 00:09:05,498
not aware of its own state right so
209
00:09:03,730 --> 00:09:07,600
actually if your machine totally dies
210
00:09:05,499 --> 00:09:09,699
your doctor engine dies with it
211
00:09:07,600 --> 00:09:11,470
so docker doesn't even know that your
212
00:09:09,699 --> 00:09:15,550
containers underneath are now no longer
213
00:09:11,470 --> 00:09:19,509
running horizontal scaling in docker
214
00:09:15,550 --> 00:09:20,979
doesn't exist so yes you can run you
215
00:09:19,509 --> 00:09:22,899
know you can say here's a container run
216
00:09:20,980 --> 00:09:24,309
it and then run it again and run it and
217
00:09:22,899 --> 00:09:26,829
you can keep running the same container
218
00:09:24,309 --> 00:09:28,660
but it doesn't have it built in by
219
00:09:26,829 --> 00:09:30,489
default right in the way that with
220
00:09:28,660 --> 00:09:34,870
kubernetes you can scale things easily
221
00:09:30,490 --> 00:09:36,399
and independently docker also doesn't
222
00:09:34,870 --> 00:09:41,769
repair applications which become
223
00:09:36,399 --> 00:09:43,930
unhealthy and so with a docker container
224
00:09:41,769 --> 00:09:47,170
if I deploy my application in there and
225
00:09:43,930 --> 00:09:51,309
it's running on an engine in a single
226
00:09:47,170 --> 00:09:53,589
machine and then it crashes and a docker
227
00:09:51,309 --> 00:09:56,459
can report back the status saying this
228
00:09:53,589 --> 00:09:59,350
application has crashed but it doesn't
229
00:09:56,459 --> 00:10:01,420
automatically understand you know why is
230
00:09:59,350 --> 00:10:04,029
my not necessary why my applications
231
00:10:01,420 --> 00:10:05,769
crashed but that the application has
232
00:10:04,029 --> 00:10:07,300
crashed rather than necessarily just
233
00:10:05,769 --> 00:10:10,929
exited because it's finished running a
234
00:10:07,300 --> 00:10:12,370
process and it also doesn't know that
235
00:10:10,929 --> 00:10:13,839
actually I want that thing to be
236
00:10:12,370 --> 00:10:15,490
restarted I still want to always have
237
00:10:13,839 --> 00:10:18,459
one of those running so it doesn't have
238
00:10:15,490 --> 00:10:20,370
this kind of understanding of the
239
00:10:18,459 --> 00:10:23,589
desired state of your application
240
00:10:20,370 --> 00:10:25,179
landscape which is again as we come to
241
00:10:23,589 --> 00:10:28,689
Cuba Nettie's you'll see that that gets
242
00:10:25,179 --> 00:10:31,629
managed very well so just to explain
243
00:10:28,689 --> 00:10:35,410
where where Cuba Nessie's fits in and
244
00:10:31,629 --> 00:10:38,230
this is a kind of very abridged version
245
00:10:35,410 --> 00:10:39,519
of different sort of container stacks so
246
00:10:38,230 --> 00:10:41,470
right down at the bottom you can see
247
00:10:39,519 --> 00:10:43,449
visual physical infrastructure right
248
00:10:41,470 --> 00:10:45,129
which was I guess how you know
249
00:10:43,449 --> 00:10:47,649
traditionally all computing was done and
250
00:10:45,129 --> 00:10:49,029
you buy your own physical machines on
251
00:10:47,649 --> 00:10:52,420
top of that you have virtual
252
00:10:49,029 --> 00:10:56,170
infrastructure things like VMware or ec2
253
00:10:52,420 --> 00:10:57,878
from AWS operating systems again these
254
00:10:56,170 --> 00:10:59,949
are now abstracting even more you know
255
00:10:57,879 --> 00:11:01,240
inside your virtual machine your
256
00:10:59,950 --> 00:11:04,600
extracting stuff through an operating
257
00:11:01,240 --> 00:11:07,090
system inside those who might run a
258
00:11:04,600 --> 00:11:11,200
container engine right which which then
259
00:11:07,090 --> 00:11:13,510
isolates that operating system and then
260
00:11:11,200 --> 00:11:17,140
like a sort of even higher abstraction
261
00:11:13,510 --> 00:11:19,540
to that is this kind of orchestration
262
00:11:17,140 --> 00:11:22,890
scheduling service model right which
263
00:11:19,540 --> 00:11:25,120
basically takes multiples of those
264
00:11:22,890 --> 00:11:26,920
layers that we've talked about beneath
265
00:11:25,120 --> 00:11:29,290
so in this case container engines for
266
00:11:26,920 --> 00:11:31,180
cuba Nettie's right and handles the
267
00:11:29,290 --> 00:11:34,270
deployment and scheduling of workloads
268
00:11:31,180 --> 00:11:37,900
across those and the final one just to
269
00:11:34,270 --> 00:11:41,260
mention at the top there is more of a
270
00:11:37,900 --> 00:11:42,850
like developer focused orientation to
271
00:11:41,260 --> 00:11:45,030
that so if you look at things like open
272
00:11:42,850 --> 00:11:47,380
share or Heroku or Cloud Foundry
273
00:11:45,030 --> 00:11:48,610
typically what's referred to as powers
274
00:11:47,380 --> 00:11:51,820
or platform-as-a-service
275
00:11:48,610 --> 00:11:53,710
and these tend to take a much more that
276
00:11:51,820 --> 00:11:56,260
they're more opinionated but they will
277
00:11:53,710 --> 00:11:58,540
take a more developer centric approach
278
00:11:56,260 --> 00:12:01,180
where actually it's I don't really care
279
00:11:58,540 --> 00:12:03,640
how my application gets deployed and
280
00:12:01,180 --> 00:12:06,280
where and so on I just want it to run
281
00:12:03,640 --> 00:12:12,160
and here's my code so it's like a code
282
00:12:06,280 --> 00:12:14,170
first approach um so just before I talk
283
00:12:12,160 --> 00:12:15,550
about some cuba Nettie's capabilities
284
00:12:14,170 --> 00:12:19,599
let's talk about sort of where it came
285
00:12:15,550 --> 00:12:22,060
from so originally came out of a project
286
00:12:19,600 --> 00:12:26,590
in inside an internal project at Google
287
00:12:22,060 --> 00:12:28,000
called Borg which was their workload
288
00:12:26,590 --> 00:12:30,550
scheduler which would allow their
289
00:12:28,000 --> 00:12:32,620
developers basically to spin up their
290
00:12:30,550 --> 00:12:34,689
own environments super easily and
291
00:12:32,620 --> 00:12:39,100
quickly and it was built using
292
00:12:34,690 --> 00:12:41,110
containers it then became its own open
293
00:12:39,100 --> 00:12:45,190
source project has been you know it's
294
00:12:41,110 --> 00:12:47,500
been backed by huge corporates you know
295
00:12:45,190 --> 00:12:50,260
IBM being one of them Google are still
296
00:12:47,500 --> 00:12:52,990
heavily behind it you see brent hat even
297
00:12:50,260 --> 00:12:56,020
even amazon who traditionally have been
298
00:12:52,990 --> 00:12:58,240
pretty anti open-source ever have caved
299
00:12:56,020 --> 00:13:03,189
in and now back in cuba Nettie's as a
300
00:12:58,240 --> 00:13:06,850
container Orchestrator and it's it's its
301
00:13:03,190 --> 00:13:10,750
own now through the cloud native compute
302
00:13:06,850 --> 00:13:13,630
foundation has become its own foundation
303
00:13:10,750 --> 00:13:17,020
which is great it was the first
304
00:13:13,630 --> 00:13:19,090
project to fully graduate from the cloud
305
00:13:17,020 --> 00:13:21,280
native compute foundation if you're not
306
00:13:19,090 --> 00:13:24,580
aware of what that is Google it because
307
00:13:21,280 --> 00:13:28,449
it has some great tools and utilities in
308
00:13:24,580 --> 00:13:32,050
there that allow you to run distributed
309
00:13:28,450 --> 00:13:35,860
workloads at scale on the cloud using
310
00:13:32,050 --> 00:13:38,500
best practices another fun fact right
311
00:13:35,860 --> 00:13:41,500
kubernetes comes from the ancient Greek
312
00:13:38,500 --> 00:13:43,750
it means helmsman or captain of a ship
313
00:13:41,500 --> 00:13:45,610
and as you start to see some of the
314
00:13:43,750 --> 00:13:48,370
capabilities that cuba's brings to your
315
00:13:45,610 --> 00:13:52,170
container deployments you'll see why
316
00:13:48,370 --> 00:13:55,360
it's named as such so one of those is
317
00:13:52,170 --> 00:13:57,610
intelligent scheduling cuban entities
318
00:13:55,360 --> 00:14:00,550
will take your containers and it's
319
00:13:57,610 --> 00:14:02,860
automatically placing those based on the
320
00:14:00,550 --> 00:14:04,900
required resources so if I have let's
321
00:14:02,860 --> 00:14:06,910
say I have three machines right and and
322
00:14:04,900 --> 00:14:08,980
one of them's running almost at capacity
323
00:14:06,910 --> 00:14:11,500
and the one's kind of half full and the
324
00:14:08,980 --> 00:14:13,540
other ones pre empty right Cuba Nettie's
325
00:14:11,500 --> 00:14:15,250
is aware of that and it knows okay the
326
00:14:13,540 --> 00:14:17,319
best place to deploy that extra
327
00:14:15,250 --> 00:14:19,930
container you know all that run is in
328
00:14:17,320 --> 00:14:21,790
the already the pretty empty one there's
329
00:14:19,930 --> 00:14:25,180
loads of resource there for them to run
330
00:14:21,790 --> 00:14:38,260
and it also you know supports mixed
331
00:14:25,180 --> 00:14:40,540
workloads you draw if I tell Cuba
332
00:14:38,260 --> 00:14:43,750
Nettie's I want three and one want my
333
00:14:40,540 --> 00:14:47,500
application deployed three times for
334
00:14:43,750 --> 00:14:48,760
high availability right in fact I don't
335
00:14:47,500 --> 00:14:51,100
even need to tell I need high
336
00:14:48,760 --> 00:14:53,170
availability it assumes as much it will
337
00:14:51,100 --> 00:14:54,790
take your containers and it will run
338
00:14:53,170 --> 00:14:59,979
them across as many different worker
339
00:14:54,790 --> 00:15:03,069
nodes as it can in order to increase the
340
00:14:59,980 --> 00:15:05,110
availability of your application
341
00:15:03,070 --> 00:15:08,620
another thing Cuba Nessie's does is it
342
00:15:05,110 --> 00:15:10,570
self heals so it has a concept of a
343
00:15:08,620 --> 00:15:12,520
health check and it understands and you
344
00:15:10,570 --> 00:15:16,000
can define what it is that it's checking
345
00:15:12,520 --> 00:15:17,980
on your application but it will restate
346
00:15:16,000 --> 00:15:20,500
restart containers that fail those
347
00:15:17,980 --> 00:15:22,090
health checks and it will replace and
348
00:15:20,500 --> 00:15:25,330
reschedule containers if a whole node
349
00:15:22,090 --> 00:15:26,859
dies so so a node is a think of it as
350
00:15:25,330 --> 00:15:31,269
like a
351
00:15:26,859 --> 00:15:33,850
like a compute pool I guess right or a a
352
00:15:31,269 --> 00:15:37,129
physical worker that is running your
353
00:15:33,850 --> 00:15:39,949
containers if that entire machine goes
354
00:15:37,129 --> 00:15:41,929
out cuban SES is aware of that and it
355
00:15:39,949 --> 00:15:44,089
will then replace and reschedule those
356
00:15:41,929 --> 00:15:46,999
containers on to other machines to make
357
00:15:44,089 --> 00:15:49,040
sure you always have as many as you need
358
00:15:46,999 --> 00:15:50,449
it also will kill containers that don't
359
00:15:49,040 --> 00:15:55,399
respond to your health checks if you
360
00:15:50,449 --> 00:15:58,279
define those cuba Nettie's is fantastic
361
00:15:55,399 --> 00:16:00,699
at horizontal scaling there's a simple
362
00:15:58,279 --> 00:16:04,009
command I'll show you this in my demo um
363
00:16:00,699 --> 00:16:05,779
but you you can say ok that container
364
00:16:04,009 --> 00:16:07,989
I'm running I actually know on 15 of it
365
00:16:05,779 --> 00:16:11,449
and it just immediately scales those up
366
00:16:07,989 --> 00:16:13,339
you can also do automated scaling based
367
00:16:11,449 --> 00:16:16,579
on the usage of those so you know my
368
00:16:13,339 --> 00:16:18,290
application is under heavy load I might
369
00:16:16,579 --> 00:16:23,628
want it to automatically scale up and
370
00:16:18,290 --> 00:16:25,699
add new containers but you know also in
371
00:16:23,629 --> 00:16:28,759
a scenario where it's now nighttime and
372
00:16:25,699 --> 00:16:31,628
few people using my service it can scale
373
00:16:28,759 --> 00:16:31,629
those down as well
374
00:16:31,669 --> 00:16:35,869
one of the other problems you have when
375
00:16:33,439 --> 00:16:39,980
when you're running containers in a
376
00:16:35,869 --> 00:16:42,319
distributed way is how to route traffic
377
00:16:39,980 --> 00:16:45,230
from from those containers to each other
378
00:16:42,319 --> 00:16:48,079
so and if I give you an example right
379
00:16:45,230 --> 00:16:50,119
let's say I build a little micro service
380
00:16:48,079 --> 00:16:52,459
that goes and fetches customer details
381
00:16:50,119 --> 00:16:54,199
from a database it does some sort of
382
00:16:52,459 --> 00:16:57,829
manipulation on that returns them to you
383
00:16:54,199 --> 00:16:59,419
and you know as a team we want to reuse
384
00:16:57,829 --> 00:17:01,789
that micro service quite a lot we need
385
00:16:59,419 --> 00:17:05,179
it in you know a front end we need it in
386
00:17:01,789 --> 00:17:06,769
a bunch of other services that depending
387
00:17:05,179 --> 00:17:08,559
on the industry right you might be doing
388
00:17:06,769 --> 00:17:11,569
all sorts of things
389
00:17:08,559 --> 00:17:12,289
how if if that's running in multiple
390
00:17:11,569 --> 00:17:14,418
containers
391
00:17:12,289 --> 00:17:20,419
how do allow other services to connect
392
00:17:14,419 --> 00:17:23,389
to that even more difficult right in a
393
00:17:20,419 --> 00:17:25,760
kind of old-school deployment is if I'm
394
00:17:23,388 --> 00:17:27,609
now scaling that so now I've gone from
395
00:17:25,760 --> 00:17:29,330
having three versions of it or three
396
00:17:27,609 --> 00:17:31,789
containers
397
00:17:29,330 --> 00:17:33,980
I now have 15 containers how does it
398
00:17:31,789 --> 00:17:35,990
know that that where those new you know
399
00:17:33,980 --> 00:17:38,840
the other twelve containers are and how
400
00:17:35,990 --> 00:17:40,080
to connect to those so Kuban entities
401
00:17:38,840 --> 00:17:42,750
has a concept of service
402
00:17:40,080 --> 00:17:44,309
is and and service discovery so when
403
00:17:42,750 --> 00:17:46,049
your service comes online it registers
404
00:17:44,309 --> 00:17:49,620
with the Cuba Nettie's service broker
405
00:17:46,049 --> 00:17:53,820
and other workloads that are running in
406
00:17:49,620 --> 00:17:55,379
there can then connect to the service
407
00:17:53,820 --> 00:17:58,379
broker and say oh hey where's that
408
00:17:55,380 --> 00:18:02,549
service that Ed built that retrieves
409
00:17:58,380 --> 00:18:04,590
customer details for me and the broker
410
00:18:02,549 --> 00:18:07,529
will say okay here's your connections
411
00:18:04,590 --> 00:18:09,149
string you connect to that and it
412
00:18:07,529 --> 00:18:10,620
automatically then does law load
413
00:18:09,149 --> 00:18:13,139
balancing across all of the running
414
00:18:10,620 --> 00:18:16,260
containers and to make sure that your
415
00:18:13,139 --> 00:18:18,379
request is always served right
416
00:18:16,260 --> 00:18:20,600
regardless of where the stuff is because
417
00:18:18,380 --> 00:18:24,059
ultimately the containers underneath a
418
00:18:20,600 --> 00:18:25,620
ephemeral they are they should be
419
00:18:24,059 --> 00:18:27,178
stateless right a lot of people don't
420
00:18:25,620 --> 00:18:31,559
want stateless workloads and Cuba
421
00:18:27,179 --> 00:18:33,000
Nettie's but it means that they may be
422
00:18:31,559 --> 00:18:37,529
in a totally different place to where
423
00:18:33,000 --> 00:18:39,990
they were last time you connected and it
424
00:18:37,529 --> 00:18:41,690
also has automated rollouts of rollbacks
425
00:18:39,990 --> 00:18:43,799
I'll show you this in the demo
426
00:18:41,690 --> 00:18:46,529
essentially you know you can roll out a
427
00:18:43,799 --> 00:18:48,809
new version of your application if
428
00:18:46,529 --> 00:18:49,950
things don't go correctly or you're
429
00:18:48,809 --> 00:18:52,200
failing health checks or you're
430
00:18:49,950 --> 00:18:53,850
monitoring it and something goes wrong
431
00:18:52,200 --> 00:18:56,120
you can immediately roll that back with
432
00:18:53,850 --> 00:18:58,559
a single command
433
00:18:56,120 --> 00:19:01,168
another thing cube does is it handles
434
00:18:58,559 --> 00:19:02,940
secret and configuration management so
435
00:19:01,169 --> 00:19:05,899
if I have a let's say there's an
436
00:19:02,940 --> 00:19:09,059
external API I want to connect to and
437
00:19:05,899 --> 00:19:11,809
obviously I you know I should know
438
00:19:09,059 --> 00:19:14,789
better than to write the API key in my
439
00:19:11,809 --> 00:19:17,250
in in my code right we shouldn't be
440
00:19:14,789 --> 00:19:18,990
storing it there but you know maybe I
441
00:19:17,250 --> 00:19:21,389
think well I want to put it in
442
00:19:18,990 --> 00:19:22,710
environment variables and so on you
443
00:19:21,389 --> 00:19:25,500
don't even need to do that there's a
444
00:19:22,710 --> 00:19:28,909
within Cuba Nessie's it can it has an
445
00:19:25,500 --> 00:19:33,240
encrypted key store that can securely
446
00:19:28,909 --> 00:19:35,519
store all of those application
447
00:19:33,240 --> 00:19:37,740
credentials you might need and then that
448
00:19:35,519 --> 00:19:40,830
application when granted access can
449
00:19:37,740 --> 00:19:43,110
retrieve those and then use that to to
450
00:19:40,830 --> 00:19:47,460
connect to in this case my external API
451
00:19:43,110 --> 00:19:49,408
that I wanted to speak to so just very
452
00:19:47,460 --> 00:19:52,260
quickly before we dive in a couple of
453
00:19:49,409 --> 00:19:53,820
concepts in terms of like naming that
454
00:19:52,260 --> 00:19:57,810
are important
455
00:19:53,820 --> 00:20:00,240
so actually just before we do that this
456
00:19:57,810 --> 00:20:02,340
is a very very simplified kind of
457
00:20:00,240 --> 00:20:05,060
architecture of how kubernetes works and
458
00:20:02,340 --> 00:20:09,600
and if you look right in the middle
459
00:20:05,060 --> 00:20:13,200
there's this database at CD right and
460
00:20:09,600 --> 00:20:15,449
that essentially right is at the heart
461
00:20:13,200 --> 00:20:19,110
of everything cuban SE studs what what
462
00:20:15,450 --> 00:20:21,680
goes in there is as a user I tell
463
00:20:19,110 --> 00:20:24,689
kubernetes here is what I want my
464
00:20:21,680 --> 00:20:26,640
application landscape to look like so it
465
00:20:24,690 --> 00:20:29,900
might be you know I want this service
466
00:20:26,640 --> 00:20:32,460
deployed and I want five versions of it
467
00:20:29,900 --> 00:20:33,900
and I want you know each of those
468
00:20:32,460 --> 00:20:35,550
versions to have three different
469
00:20:33,900 --> 00:20:38,100
containers running across as many
470
00:20:35,550 --> 00:20:39,659
machines as possible and then I might
471
00:20:38,100 --> 00:20:42,030
have another service and I say you know
472
00:20:39,660 --> 00:20:44,220
I just want to run fifteen containers of
473
00:20:42,030 --> 00:20:47,399
that right that all gets stored as a
474
00:20:44,220 --> 00:20:49,800
what is called the desired state and
475
00:20:47,400 --> 00:20:51,270
then these controllers that you see in
476
00:20:49,800 --> 00:20:53,610
the top right hand side these are
477
00:20:51,270 --> 00:20:56,070
continuously monitoring your application
478
00:20:53,610 --> 00:20:57,990
your actual deployed state right and
479
00:20:56,070 --> 00:20:58,800
checking against all those machines okay
480
00:20:57,990 --> 00:21:02,810
what are you running
481
00:20:58,800 --> 00:21:05,300
what's your resource utilization app
482
00:21:02,810 --> 00:21:07,530
haven't you know have any of those apps
483
00:21:05,300 --> 00:21:10,919
return to exit codes that they crashed
484
00:21:07,530 --> 00:21:13,980
and it takes those and it checks them
485
00:21:10,920 --> 00:21:15,630
against the database and essentially
486
00:21:13,980 --> 00:21:19,110
it's just doing a diff in those two
487
00:21:15,630 --> 00:21:22,440
states and so if I have if I've said I
488
00:21:19,110 --> 00:21:24,870
want three containers to be running and
489
00:21:22,440 --> 00:21:28,500
there are only two in the in my actual
490
00:21:24,870 --> 00:21:30,209
landscape kubernetes the lot less this
491
00:21:28,500 --> 00:21:34,860
is where all the like logic within Cuba
492
00:21:30,210 --> 00:21:37,710
Nettie's automatically takes takes care
493
00:21:34,860 --> 00:21:39,209
of that for you so it will say oh we'll
494
00:21:37,710 --> 00:21:41,550
only have two and the desired stays
495
00:21:39,210 --> 00:21:43,380
three so I need to schedule another one
496
00:21:41,550 --> 00:21:45,149
of those containers right and that's
497
00:21:43,380 --> 00:21:46,710
where the intelligent shelling comes in
498
00:21:45,150 --> 00:21:48,240
and will say here's the best know to put
499
00:21:46,710 --> 00:21:51,000
it on I'm not going to put it on one
500
00:21:48,240 --> 00:21:54,090
there the other two already exist etc
501
00:21:51,000 --> 00:21:56,510
and the final piece in that is that you
502
00:21:54,090 --> 00:22:00,720
see the API server above that with this
503
00:21:56,510 --> 00:22:04,020
and this like handles all the requests
504
00:22:00,720 --> 00:22:06,030
that you you do to it as a user the
505
00:22:04,020 --> 00:22:09,470
controller's talk to it essentially it
506
00:22:06,030 --> 00:22:09,470
just handles the database acts
507
00:22:09,580 --> 00:22:16,850
and then in terms of terminology there's
508
00:22:13,970 --> 00:22:18,320
a master node the master node is the bit
509
00:22:16,850 --> 00:22:20,870
that runs all the kind of cuba Nettie's
510
00:22:18,320 --> 00:22:23,090
magic right underneath so it controls
511
00:22:20,870 --> 00:22:25,429
manages the cluster it's what you
512
00:22:23,090 --> 00:22:28,100
communicate with from the cube CTL
513
00:22:25,430 --> 00:22:30,350
command line has a REST API for
514
00:22:28,100 --> 00:22:33,800
communication with workers and I guess
515
00:22:30,350 --> 00:22:35,330
any external tooling you might use and
516
00:22:33,800 --> 00:22:38,810
it handles all the scheduling and the
517
00:22:35,330 --> 00:22:42,159
replication logic the worker nodes
518
00:22:38,810 --> 00:22:45,050
within you know within kubernetes are
519
00:22:42,160 --> 00:22:47,180
these are essentially your like compute
520
00:22:45,050 --> 00:22:49,220
resources the these are the ones that
521
00:22:47,180 --> 00:22:51,950
actually do the work for you and hence
522
00:22:49,220 --> 00:22:54,410
worker node right they host the Kuban SE
523
00:22:51,950 --> 00:22:56,090
services that you deploy they do have a
524
00:22:54,410 --> 00:22:58,400
few other little things on them so they
525
00:22:56,090 --> 00:23:01,250
have Kuebler which accept commands from
526
00:22:58,400 --> 00:23:06,020
the master and and actions those on the
527
00:23:01,250 --> 00:23:08,930
on the host has proxy which as you would
528
00:23:06,020 --> 00:23:11,590
expect properties the traffic to and
529
00:23:08,930 --> 00:23:14,510
from those containers inside the worker
530
00:23:11,590 --> 00:23:17,330
to understand you know when i mentioned
531
00:23:14,510 --> 00:23:20,629
the fact that it has a service discovery
532
00:23:17,330 --> 00:23:22,040
and load balancing the queue proxy
533
00:23:20,630 --> 00:23:24,020
handles that peacefully so you don't
534
00:23:22,040 --> 00:23:26,330
need to and of course it it actually
535
00:23:24,020 --> 00:23:29,350
runs a complete container engine inside
536
00:23:26,330 --> 00:23:31,520
so in this example it runs docker engine
537
00:23:29,350 --> 00:23:33,830
one of the interesting things about Kiba
538
00:23:31,520 --> 00:23:35,840
Nessie's is it actually it doesn't run
539
00:23:33,830 --> 00:23:38,600
any of your containers it requires you
540
00:23:35,840 --> 00:23:41,030
to bring your own container on time and
541
00:23:38,600 --> 00:23:43,550
actually in the vast majority of cases
542
00:23:41,030 --> 00:23:46,340
this tends to be darker but it doesn't
543
00:23:43,550 --> 00:23:48,020
have to be and that's one of the cool
544
00:23:46,340 --> 00:23:52,419
things about the kubernetes design is
545
00:23:48,020 --> 00:23:54,770
that as other container runtimes develop
546
00:23:52,420 --> 00:23:57,050
you can swap them in and out so if you
547
00:23:54,770 --> 00:23:58,190
eventually want it to run like I know
548
00:23:57,050 --> 00:24:00,649
there's a lot of work going on with
549
00:23:58,190 --> 00:24:04,640
windows containers being able to isolate
550
00:24:00,650 --> 00:24:06,740
the window windows operating system you
551
00:24:04,640 --> 00:24:09,910
know if you have very specific like Net
552
00:24:06,740 --> 00:24:13,040
Applications that have to run on a
553
00:24:09,910 --> 00:24:16,430
Windows host right
554
00:24:13,040 --> 00:24:18,430
you should be able to do that whilst
555
00:24:16,430 --> 00:24:21,200
using cuba Nettie's to orchestrate those
556
00:24:18,430 --> 00:24:23,540
and there's also you know I
557
00:24:21,200 --> 00:24:25,730
contribute heavily to a container
558
00:24:23,540 --> 00:24:27,560
runtime called container D which is
559
00:24:25,730 --> 00:24:30,140
essentially trying to take out so
560
00:24:27,560 --> 00:24:32,419
Dockers Dockers great but I mentioned
561
00:24:30,140 --> 00:24:40,120
all the user experience it gives when
562
00:24:32,420 --> 00:24:43,160
you're using Cuban air variants because
563
00:24:40,120 --> 00:24:44,419
gin in there doesn't do any of their
564
00:24:43,160 --> 00:24:45,890
scheduling and checking of the
565
00:24:44,420 --> 00:24:47,780
containers right cube is doing all that
566
00:24:45,890 --> 00:24:49,220
for you so all the engine needs to do
567
00:24:47,780 --> 00:24:51,770
really is literally run the containers
568
00:24:49,220 --> 00:24:54,500
and it's quite using Dockers is probably
569
00:24:51,770 --> 00:24:56,840
overkill for most of the scenarios so
570
00:24:54,500 --> 00:24:58,940
what container container D does is like
571
00:24:56,840 --> 00:25:01,070
strips this down to the really
572
00:24:58,940 --> 00:25:02,840
lightweight and fast container runtime
573
00:25:01,070 --> 00:25:05,020
that really just does the basics of
574
00:25:02,840 --> 00:25:07,730
executing and running those containers
575
00:25:05,020 --> 00:25:11,650
and then kubernetes does all the the
576
00:25:07,730 --> 00:25:13,700
fancy scheduling stuff over the top and
577
00:25:11,650 --> 00:25:18,020
another thing you'll need to knows pods
578
00:25:13,700 --> 00:25:20,390
right a pod is essentially you could you
579
00:25:18,020 --> 00:25:22,160
can try to think of it as a like a
580
00:25:20,390 --> 00:25:24,560
container it's not a container because
581
00:25:22,160 --> 00:25:26,600
they can contain multiple containers but
582
00:25:24,560 --> 00:25:30,379
it's the smallest deployment unit in
583
00:25:26,600 --> 00:25:31,850
cuba Nettie's so everything every
584
00:25:30,380 --> 00:25:36,170
application you deploy it will be in
585
00:25:31,850 --> 00:25:41,480
pods it the reason I mentioned it can be
586
00:25:36,170 --> 00:25:44,270
a collection of containers is that on on
587
00:25:41,480 --> 00:25:46,780
their own like you generally shouldn't
588
00:25:44,270 --> 00:25:49,490
put multiple containers in a pod like
589
00:25:46,780 --> 00:25:52,490
let's say my application has like a
590
00:25:49,490 --> 00:25:54,470
front-end back-end a database like I
591
00:25:52,490 --> 00:25:56,840
should the last thing I should do is
592
00:25:54,470 --> 00:25:59,110
pull all of those in a pod and because
593
00:25:56,840 --> 00:26:01,399
then I can't scale them separately
594
00:25:59,110 --> 00:26:03,469
everything in the pod also you know
595
00:26:01,400 --> 00:26:07,550
shares a namespace network and hostname
596
00:26:03,470 --> 00:26:09,940
so again they may have processes that
597
00:26:07,550 --> 00:26:13,669
conflict with each other
598
00:26:09,940 --> 00:26:15,800
the the only like in general keep things
599
00:26:13,670 --> 00:26:18,020
in separate pods the things that do make
600
00:26:15,800 --> 00:26:21,950
sense to put in a pod alongside your
601
00:26:18,020 --> 00:26:24,200
application container are things what
602
00:26:21,950 --> 00:26:27,770
they call the sidecar model so let's say
603
00:26:24,200 --> 00:26:31,100
you have like a logging agent right that
604
00:26:27,770 --> 00:26:32,600
takes all of the logs coming out of your
605
00:26:31,100 --> 00:26:34,830
containers
606
00:26:32,600 --> 00:26:36,750
pipes them all to some central
607
00:26:34,830 --> 00:26:39,210
repository or to a third-party service
608
00:26:36,750 --> 00:26:40,650
or something right that's something you
609
00:26:39,210 --> 00:26:42,570
want to deploy alongside every
610
00:26:40,650 --> 00:26:46,590
application that you do and actually
611
00:26:42,570 --> 00:26:48,990
deploying it inside a pod next to the
612
00:26:46,590 --> 00:26:51,449
other container is a good deployment
613
00:26:48,990 --> 00:26:54,540
technique because you know it again it
614
00:26:51,450 --> 00:26:59,940
shares these the common processes the
615
00:26:54,540 --> 00:27:01,560
name space network and hostname and it's
616
00:26:59,940 --> 00:27:03,600
not actually affecting the running of
617
00:27:01,560 --> 00:27:05,370
the container itself also they tend to
618
00:27:03,600 --> 00:27:07,290
be incredibly lightweight right and you
619
00:27:05,370 --> 00:27:08,820
should you would need to scale one to
620
00:27:07,290 --> 00:27:12,690
one with each of the application
621
00:27:08,820 --> 00:27:15,210
containers as you scale them labels are
622
00:27:12,690 --> 00:27:17,910
that that simply just metadata right
623
00:27:15,210 --> 00:27:19,860
there just key value pairs but they're
624
00:27:17,910 --> 00:27:21,720
Cuba Nettie's has a really good way of
625
00:27:19,860 --> 00:27:25,860
filtering and searching on these like in
626
00:27:21,720 --> 00:27:28,200
a super fast way so so try to write
627
00:27:25,860 --> 00:27:30,270
labels for your resources as much as
628
00:27:28,200 --> 00:27:32,490
possible initially when you start
629
00:27:30,270 --> 00:27:34,860
playing with kubernetes it might matter
630
00:27:32,490 --> 00:27:36,450
because you only be deploying you know a
631
00:27:34,860 --> 00:27:39,149
small application or a couple of
632
00:27:36,450 --> 00:27:40,860
applications but when you get into you
633
00:27:39,150 --> 00:27:42,540
know huge scale deployments where people
634
00:27:40,860 --> 00:27:45,570
are running hundreds of thousands of
635
00:27:42,540 --> 00:27:48,810
containers and often thousands or tens
636
00:27:45,570 --> 00:27:51,330
of thousands of applications being able
637
00:27:48,810 --> 00:27:53,780
to debug which of those containers and
638
00:27:51,330 --> 00:27:56,189
which worker node in which application
639
00:27:53,780 --> 00:27:58,950
gets very very difficult if you don't
640
00:27:56,190 --> 00:28:00,630
have labels because the IDS give you
641
00:27:58,950 --> 00:28:04,560
very little name on very little
642
00:28:00,630 --> 00:28:06,420
information on right and then services
643
00:28:04,560 --> 00:28:09,480
these these are essentially a way of
644
00:28:06,420 --> 00:28:11,220
describing your like what your
645
00:28:09,480 --> 00:28:14,010
application or you might prefer this
646
00:28:11,220 --> 00:28:15,780
looks like within Cuba Nettie's so it's
647
00:28:14,010 --> 00:28:19,260
as said here you know a collection of
648
00:28:15,780 --> 00:28:21,350
pods exposed and as an endpoint it's
649
00:28:19,260 --> 00:28:23,460
it's essentially saying these three
650
00:28:21,350 --> 00:28:27,629
containers that I've just deployed I
651
00:28:23,460 --> 00:28:32,400
want those to be described as my I might
652
00:28:27,630 --> 00:28:34,860
get customer details service because
653
00:28:32,400 --> 00:28:38,490
then other cuban at ease applications
654
00:28:34,860 --> 00:28:41,280
can connect to that and use them here's
655
00:28:38,490 --> 00:28:45,180
a super quick example of just how this
656
00:28:41,280 --> 00:28:46,320
like the logic within Cuba work so if
657
00:28:45,180 --> 00:28:47,519
you look on the right hand side
658
00:28:46,320 --> 00:28:50,759
you can see we've got three different
659
00:28:47,519 --> 00:28:53,130
workers so those are our compute poles
660
00:28:50,759 --> 00:28:55,139
as I said and then on the left-hand side
661
00:28:53,130 --> 00:28:58,440
I've specified this is my like desired
662
00:28:55,139 --> 00:29:04,229
stay a very simplified one it says okay
663
00:28:58,440 --> 00:29:06,990
I want one pod containing image a and B
664
00:29:04,230 --> 00:29:08,730
and I want three versions of that right
665
00:29:06,990 --> 00:29:11,610
so you can see humilities is
666
00:29:08,730 --> 00:29:12,990
automatically put a B on each of the
667
00:29:11,610 --> 00:29:17,459
three worker nodes on the right hand
668
00:29:12,990 --> 00:29:20,009
side and then pod two is container image
669
00:29:17,460 --> 00:29:22,649
C and I want replicas to right so it's
670
00:29:20,009 --> 00:29:24,269
also put one pod with C in it and it's
671
00:29:22,649 --> 00:29:27,239
put it on those top two worker nodes on
672
00:29:24,269 --> 00:29:29,549
the right hand side um if like this
673
00:29:27,240 --> 00:29:31,889
middle worker where to died my cube
674
00:29:29,549 --> 00:29:35,549
knows well I still need three versions
675
00:29:31,889 --> 00:29:39,149
of three instances of pod one which
676
00:29:35,549 --> 00:29:41,549
contains a be running and I know I no
677
00:29:39,149 --> 00:29:44,309
longer have that so it's automatically
678
00:29:41,549 --> 00:29:47,100
scaled it and put two of them onto the
679
00:29:44,309 --> 00:29:48,928
worker node at the bottom and and it's
680
00:29:47,100 --> 00:29:51,240
also moved see down there as well so
681
00:29:48,929 --> 00:29:53,580
that like we're always maintaining that
682
00:29:51,240 --> 00:29:55,320
desired state the same thing could
683
00:29:53,580 --> 00:29:57,059
happen with scaling so in this example
684
00:29:55,320 --> 00:29:59,428
this is back where we were where we've
685
00:29:57,059 --> 00:30:01,320
got a B on each of them and see on the
686
00:29:59,429 --> 00:30:03,330
top two well what if I want a third
687
00:30:01,320 --> 00:30:06,649
version of C well again it knows like
688
00:30:03,330 --> 00:30:09,299
again this is this worker is
689
00:30:06,649 --> 00:30:12,479
underutilized compared to the others it
690
00:30:09,299 --> 00:30:14,850
also doesn't contain the same pod
691
00:30:12,480 --> 00:30:19,080
already so it makes sense for us to
692
00:30:14,850 --> 00:30:22,918
deploy a new container C onto the third
693
00:30:19,080 --> 00:30:26,250
worker in the bottom right um there's
694
00:30:22,919 --> 00:30:28,409
also the cube CTL right cube CTL is the
695
00:30:26,250 --> 00:30:31,559
command you type on the the Kalon line
696
00:30:28,409 --> 00:30:37,350
and the it's a it's generally it's a
697
00:30:31,559 --> 00:30:40,918
very powerful and easy to use CLI and
698
00:30:37,350 --> 00:30:43,830
it's the general like as you'd expect
699
00:30:40,919 --> 00:30:46,710
right way it works is a cube CTL and
700
00:30:43,830 --> 00:30:48,658
then action and then noun and then any
701
00:30:46,710 --> 00:30:51,840
other flags you've got afterwards so
702
00:30:48,659 --> 00:30:55,230
keep CTL create and then configuration
703
00:30:51,840 --> 00:30:58,230
file or cube CTL get pods described pod
704
00:30:55,230 --> 00:30:59,490
which gives you more details and I'm
705
00:30:58,230 --> 00:31:00,090
going to spend time on this because I'm
706
00:30:59,490 --> 00:31:03,679
going to show you
707
00:31:00,090 --> 00:31:08,428
live now so I jump in and do hello
708
00:31:03,679 --> 00:31:10,650
right so in fact before I do I'll just
709
00:31:08,429 --> 00:31:14,520
to explain in this way I'll show you um
710
00:31:10,650 --> 00:31:16,880
the cube cube Annette C's cluster I'm
711
00:31:14,520 --> 00:31:18,779
running I've deployed this on IBM cloud
712
00:31:16,880 --> 00:31:22,980
the great thing about running on an IBM
713
00:31:18,779 --> 00:31:25,470
cloud is that they managed and take care
714
00:31:22,980 --> 00:31:27,630
of all the master nodes for you so the
715
00:31:25,470 --> 00:31:30,720
bit like that actually runs the clever
716
00:31:27,630 --> 00:31:32,580
kubernetes logic and so on and that you
717
00:31:30,720 --> 00:31:36,600
communicate with through the API and the
718
00:31:32,580 --> 00:31:40,350
CLI and that bit you don't you don't
719
00:31:36,600 --> 00:31:43,020
have to run at all yourself and all it
720
00:31:40,350 --> 00:31:44,760
all that you're in charge of I like
721
00:31:43,020 --> 00:31:46,529
those worker nodes that you provision
722
00:31:44,760 --> 00:31:48,510
and the worker nodes are just your
723
00:31:46,529 --> 00:31:50,159
computers so it's no no it's not really
724
00:31:48,510 --> 00:31:52,260
any different - like provisioning your
725
00:31:50,159 --> 00:31:53,789
own virtual machines except that now you
726
00:31:52,260 --> 00:31:56,700
get all the power of cuba Nettie's on
727
00:31:53,789 --> 00:31:59,039
top of it and all the headache of like
728
00:31:56,700 --> 00:32:00,419
you know upgrading when cuba Nettie's
729
00:31:59,039 --> 00:32:02,700
come out with new versions or new
730
00:32:00,419 --> 00:32:04,799
features are checking whether you know
731
00:32:02,700 --> 00:32:08,309
it's supported with your underlying
732
00:32:04,799 --> 00:32:09,840
operating system and they're not grading
733
00:32:08,309 --> 00:32:12,720
it and doing it or like all of that
734
00:32:09,840 --> 00:32:15,209
taking care care of by IBM so like for
735
00:32:12,720 --> 00:32:16,679
me this is super easy and so I've
736
00:32:15,210 --> 00:32:20,250
created this cluster here it's called my
737
00:32:16,679 --> 00:32:23,029
cluster and just to connect to that
738
00:32:20,250 --> 00:32:27,480
right I need I need to tell my cube CTL
739
00:32:23,029 --> 00:32:31,370
CLI like how it can communicate with
740
00:32:27,480 --> 00:32:35,039
that so I'm just gonna do IBM cloud
741
00:32:31,370 --> 00:32:37,908
kubernetes Service clusters right and so
742
00:32:35,039 --> 00:32:40,440
that was only the cost as I have and you
743
00:32:37,909 --> 00:32:43,409
can see that that my cluster one I just
744
00:32:40,440 --> 00:32:46,260
showed it's running there so the thing I
745
00:32:43,409 --> 00:32:50,340
need to do now is IBM cloud chess
746
00:32:46,260 --> 00:32:51,990
cluster that config my cluster and this
747
00:32:50,340 --> 00:32:54,120
will give me the configuration that
748
00:32:51,990 --> 00:32:59,730
kubernetes needs in order to connect to
749
00:32:54,120 --> 00:33:02,760
that cluster and right so this is going
750
00:32:59,730 --> 00:33:07,520
to export a cube config variable right
751
00:33:02,760 --> 00:33:07,520
and now if I did cube CTL get nodes
752
00:33:08,360 --> 00:33:13,168
should like that one I'll connect to
753
00:33:10,770 --> 00:33:13,650
that cluster and it will say okay return
754
00:33:13,169 --> 00:33:15,360
all the
755
00:33:13,650 --> 00:33:16,770
we'll work our notes on that so you can
756
00:33:15,360 --> 00:33:20,189
see this cluster only has one worker
757
00:33:16,770 --> 00:33:22,170
node down here you'd have expected that
758
00:33:20,190 --> 00:33:24,120
anyway because look if you look at that
759
00:33:22,170 --> 00:33:26,010
cluster it's being created with only one
760
00:33:24,120 --> 00:33:27,750
worker node so this is a very simple
761
00:33:26,010 --> 00:33:31,050
small cluster but it will do for what
762
00:33:27,750 --> 00:33:33,750
we're demonstrating here today um what
763
00:33:31,050 --> 00:33:35,490
I'm gonna do now is I'm just going to
764
00:33:33,750 --> 00:33:37,920
show you like the quickest way to deploy
765
00:33:35,490 --> 00:33:41,210
a container straight away to cuba
766
00:33:37,920 --> 00:33:43,970
Nettie's so if I take you CTL run and
767
00:33:41,210 --> 00:33:52,290
then this is the name of my deployment
768
00:33:43,970 --> 00:33:53,809
guestbook and image equals I be v1 right
769
00:33:52,290 --> 00:33:57,000
so what I've done there as I've said
770
00:33:53,809 --> 00:33:59,670
when you run something it's call it
771
00:33:57,000 --> 00:34:01,080
guestbook and here's the image right and
772
00:33:59,670 --> 00:34:04,230
if I give it an image this is actually a
773
00:34:01,080 --> 00:34:05,520
docker hub image so if you're not
774
00:34:04,230 --> 00:34:08,580
familiar with docker hub it's kind of
775
00:34:05,520 --> 00:34:11,000
like github but for container images and
776
00:34:08,580 --> 00:34:14,190
it's gonna go and get the IBM comm
777
00:34:11,000 --> 00:34:15,480
guestbook image with the tag version one
778
00:34:14,190 --> 00:34:19,260
right because there may be multiple
779
00:34:15,480 --> 00:34:21,418
versions of it and you can see it's
780
00:34:19,260 --> 00:34:24,149
created a deployment for me all right so
781
00:34:21,418 --> 00:34:26,219
now if I go to cube CTL get pods right
782
00:34:24,149 --> 00:34:30,179
and remember pods are like the smallest
783
00:34:26,219 --> 00:34:32,100
deployment unit we could create and you
784
00:34:30,179 --> 00:34:34,470
can see in here there is one pot in
785
00:34:32,100 --> 00:34:36,418
there called guestbook there's one of
786
00:34:34,469 --> 00:34:39,408
them and it's already running okay
787
00:34:36,418 --> 00:34:39,408
that's great that was pretty quick
788
00:34:41,210 --> 00:34:45,690
access that pod and check them my
789
00:34:43,679 --> 00:34:48,418
application is running I need to expose
790
00:34:45,690 --> 00:34:51,659
that as a service so the way it can be
791
00:34:48,418 --> 00:34:58,470
that is I can go you see a look this
792
00:34:51,659 --> 00:35:01,800
type up expose deployment yes and then
793
00:34:58,470 --> 00:35:07,020
there are different ways you can expose
794
00:35:01,800 --> 00:35:08,880
your deployments in cuba Nettie's this
795
00:35:07,020 --> 00:35:10,620
the simplest of these right is just to
796
00:35:08,880 --> 00:35:13,740
use a node port which is essentially
797
00:35:10,620 --> 00:35:18,450
saying like I just want you to map one
798
00:35:13,740 --> 00:35:20,430
poor on that host machine to the
799
00:35:18,450 --> 00:35:25,370
container inside so that I can access it
800
00:35:20,430 --> 00:35:26,700
right so in this case I'm saying 3000 so
801
00:35:25,370 --> 00:35:29,279
what I can
802
00:35:26,700 --> 00:35:32,700
I'm doing is saying to Cuba Nettie's my
803
00:35:29,280 --> 00:35:34,890
container that runs in there wants to
804
00:35:32,700 --> 00:35:37,078
listen on port 3000
805
00:35:34,890 --> 00:35:40,049
can you please expose that somewhere on
806
00:35:37,079 --> 00:35:41,640
the host right so if I do that and then
807
00:35:40,050 --> 00:35:43,740
it creates a service and I can go and
808
00:35:41,640 --> 00:35:50,640
let's look at that service quickly so we
809
00:35:43,740 --> 00:35:53,069
go get service yes but you can see that
810
00:35:50,640 --> 00:35:56,839
what it's done here is it Maps port 3000
811
00:35:53,070 --> 00:36:01,050
inside the container to 30,000 208 on
812
00:35:56,839 --> 00:36:02,849
the the actual host machine all right so
813
00:36:01,050 --> 00:36:04,320
let's remember that because I was going
814
00:36:02,849 --> 00:36:06,180
to access this from a web browser in a
815
00:36:04,320 --> 00:36:08,930
second but the most important thing is
816
00:36:06,180 --> 00:36:12,180
that I need the public IP of the actual
817
00:36:08,930 --> 00:36:14,368
worker right or of my cluster that I
818
00:36:12,180 --> 00:36:18,740
created on IBM cloud so I can get that
819
00:36:14,369 --> 00:36:23,910
from the IBM cloud CLI I can go OKs
820
00:36:18,740 --> 00:36:25,560
workers my cluster and this would just
821
00:36:23,910 --> 00:36:27,180
list the worker nodes that are relatable
822
00:36:25,560 --> 00:36:29,009
in that cluster and you can see this
823
00:36:27,180 --> 00:36:32,759
public IP here so I'm gonna take that
824
00:36:29,010 --> 00:36:46,440
public IP and then just remember it's
825
00:36:32,760 --> 00:36:49,319
30,000 208 so let's go okay so hopefully
826
00:36:46,440 --> 00:36:52,230
this will show my guestbook deployed
827
00:36:49,319 --> 00:36:54,420
yeah there we go so we can see that this
828
00:36:52,230 --> 00:36:55,920
application is very simple it's it's
829
00:36:54,420 --> 00:36:57,390
like kind of like a to-do list it's a
830
00:36:55,920 --> 00:37:04,920
guestbook you can just leave your notes
831
00:36:57,390 --> 00:37:08,490
you say I write so you know simple cron
832
00:37:04,920 --> 00:37:11,520
pipe application and let's jump jump
833
00:37:08,490 --> 00:37:12,990
back here again so now let's say I don't
834
00:37:11,520 --> 00:37:15,119
know my guest books up and running
835
00:37:12,990 --> 00:37:17,069
people are loving it it needs to scale
836
00:37:15,119 --> 00:37:21,270
well I can do that super easily with one
837
00:37:17,069 --> 00:37:26,310
come on so I can go scale replicas was
838
00:37:21,270 --> 00:37:27,810
10 employment yes but right and I'm
839
00:37:26,310 --> 00:37:30,270
saying I'm basically saying take that
840
00:37:27,810 --> 00:37:34,819
deployment but this time run 10 replicas
841
00:37:30,270 --> 00:37:34,819
of it and if I'm fast with this one
842
00:37:36,910 --> 00:37:42,348
right I can view the rollout status of
843
00:37:39,829 --> 00:37:45,079
that deployment so you can see it's
844
00:37:42,349 --> 00:37:47,060
saying waiting for rollout to finish one
845
00:37:45,079 --> 00:37:52,250
of 10 updated replicas are available now
846
00:37:47,060 --> 00:37:54,290
2 of 10 updated replicas 3 or 10 so what
847
00:37:52,250 --> 00:38:00,349
it's doing behind the scenes is starting
848
00:37:54,290 --> 00:38:03,500
new containers on my machine just
849
00:38:00,349 --> 00:38:05,660
through that scale command and you'll
850
00:38:03,500 --> 00:38:07,819
see we now you know we have 5 or 10 and
851
00:38:05,660 --> 00:38:09,770
it says minimum required is 9 so when
852
00:38:07,819 --> 00:38:12,440
it's it's gonna get most of the way
853
00:38:09,770 --> 00:38:14,540
there before it'll let you successfully
854
00:38:12,440 --> 00:38:25,339
complete the deployment sorry though
855
00:38:14,540 --> 00:38:26,720
this the wrong Val nearly that cool so
856
00:38:25,339 --> 00:38:29,480
it now says we've successfully rolled
857
00:38:26,720 --> 00:38:31,939
that out now if I do cube CT I'll get
858
00:38:29,480 --> 00:38:34,910
pods or to my deployment units remember
859
00:38:31,940 --> 00:38:37,849
I can now see that I've got 10 of these
860
00:38:34,910 --> 00:38:39,140
in here and if you look at the top here
861
00:38:37,849 --> 00:38:41,540
you know that was the first one I
862
00:38:39,140 --> 00:38:43,670
deployed which was 4 minutes ago but the
863
00:38:41,540 --> 00:38:46,490
other nine of them have all happened
864
00:38:43,670 --> 00:38:49,460
just now in the last minute so I've now
865
00:38:46,490 --> 00:38:52,669
got 10 containers all serving that same
866
00:38:49,460 --> 00:38:54,920
application but but because I've exposed
867
00:38:52,670 --> 00:38:57,770
that as a service if I go back to my web
868
00:38:54,920 --> 00:39:02,349
page and refresh it right I could be in
869
00:38:57,770 --> 00:39:07,849
any one of those instances each time and
870
00:39:02,349 --> 00:39:09,470
right let's so now let's say I want to
871
00:39:07,849 --> 00:39:10,880
let's let's say I want to deploy a
872
00:39:09,470 --> 00:39:11,480
different version of my application how
873
00:39:10,880 --> 00:39:17,319
would I do that
874
00:39:11,480 --> 00:39:28,099
so I can be cube CTL set image
875
00:39:17,319 --> 00:39:29,509
deployment yes but so I'd sent you one
876
00:39:28,099 --> 00:39:31,910
doing and here is changing that
877
00:39:29,510 --> 00:39:35,050
container image I've given it and said I
878
00:39:31,910 --> 00:39:38,690
want to just deploy IBM comms guestbook
879
00:39:35,050 --> 00:39:41,150
v2 this time right and you'll see my
880
00:39:38,690 --> 00:39:44,089
deployment guestbook image updated so
881
00:39:41,150 --> 00:39:46,910
keepers understood that and now if I go
882
00:39:44,089 --> 00:39:49,710
back to the browser and I force refresh
883
00:39:46,910 --> 00:39:53,180
this I may have to go incognito
884
00:39:49,710 --> 00:40:04,830
because it caches stuff sometimes
885
00:39:53,180 --> 00:40:07,950
updated I tied that all correct odds oh
886
00:40:04,830 --> 00:40:10,980
ok still it's it was still updating so I
887
00:40:07,950 --> 00:40:12,870
was too fast there cubes pretty quick
888
00:40:10,980 --> 00:40:15,300
but because I've also I've got a really
889
00:40:12,870 --> 00:40:17,609
small cluster with a tiny machine on it
890
00:40:15,300 --> 00:40:21,060
and I'm trying to run 10 rep I'm trying
891
00:40:17,610 --> 00:40:23,820
to create 10 new replicas and it wasn't
892
00:40:21,060 --> 00:40:26,279
quite as quick as I was in this case so
893
00:40:23,820 --> 00:40:28,680
maybe if I forced refresher in a second
894
00:40:26,280 --> 00:40:30,060
we'll get there there we go so now we've
895
00:40:28,680 --> 00:40:31,919
moved could guess what version to you
896
00:40:30,060 --> 00:40:35,070
can see that color change that we now so
897
00:40:31,920 --> 00:40:36,330
this version to up here and I can type
898
00:40:35,070 --> 00:40:38,280
some new stuff and you'll notice that
899
00:40:36,330 --> 00:40:42,630
the state was lost right we'll come back
900
00:40:38,280 --> 00:40:45,150
to that in a minute so and you can see
901
00:40:42,630 --> 00:40:46,800
from these pods here that some of them
902
00:40:45,150 --> 00:40:48,390
were terminating in creating new
903
00:40:46,800 --> 00:40:50,610
containers what actually happens when
904
00:40:48,390 --> 00:40:52,859
you roll out to a new version is that
905
00:40:50,610 --> 00:40:54,780
kubernetes by default will do a
906
00:40:52,860 --> 00:40:56,400
Bluegreen deployment so it creates in
907
00:40:54,780 --> 00:41:00,120
this case it will create ten new
908
00:40:56,400 --> 00:41:01,860
containers with version two running then
909
00:41:00,120 --> 00:41:04,020
when they're healthy it will start to
910
00:41:01,860 --> 00:41:05,910
terminate the version one months so we
911
00:41:04,020 --> 00:41:10,440
always have the application accessible
912
00:41:05,910 --> 00:41:15,750
and ready and but let me see I don't
913
00:41:10,440 --> 00:41:17,420
know type some more staff oh oh what's
914
00:41:15,750 --> 00:41:20,250
happened here right I've got an error
915
00:41:17,420 --> 00:41:23,480
I'm not really sure what this is but I
916
00:41:20,250 --> 00:41:26,100
guess I should probably roll back my
917
00:41:23,480 --> 00:41:27,750
deployment here well the good thing is I
918
00:41:26,100 --> 00:41:31,339
can be that super easy with kubernetes
919
00:41:27,750 --> 00:41:35,520
as well so if I do roll out undo
920
00:41:31,340 --> 00:41:37,920
deployment expert that will literally
921
00:41:35,520 --> 00:41:40,290
take the last roll out I did or the last
922
00:41:37,920 --> 00:41:43,910
change and just roll it back right and
923
00:41:40,290 --> 00:41:43,910
if I'm again if I'm quick here
924
00:41:47,160 --> 00:41:53,440
and they look at the rollout status you
925
00:41:49,930 --> 00:41:55,890
can see essentially by telling it to
926
00:41:53,440 --> 00:41:58,750
rollback or like an undo a rollout
927
00:41:55,890 --> 00:42:02,890
it's now going oh okay I better deploy
928
00:41:58,750 --> 00:42:05,020
ten versions of ten in containers of
929
00:42:02,890 --> 00:42:07,420
version one again and then when they're
930
00:42:05,020 --> 00:42:14,740
all healthy start to terminate the
931
00:42:07,420 --> 00:42:16,210
others from the diversion - and actually
932
00:42:14,740 --> 00:42:19,000
I what I'll try and do is Australia
933
00:42:16,210 --> 00:42:24,670
while this is running here's a good
934
00:42:19,000 --> 00:42:27,190
example of Cuba CTL get replica sets so
935
00:42:24,670 --> 00:42:28,870
the way Cube manages these is it
936
00:42:27,190 --> 00:42:31,690
actually calls each of these things of
937
00:42:28,870 --> 00:42:33,430
replicas set and and I can you also use
938
00:42:31,690 --> 00:42:40,210
a label here so you can see what's going
939
00:42:33,430 --> 00:42:41,890
on by using the - el flag and then key
940
00:42:40,210 --> 00:42:43,690
value pair essentially I'm using those
941
00:42:41,890 --> 00:42:46,000
labels and it's searching to match those
942
00:42:43,690 --> 00:42:50,110
and you can see there are two replica
943
00:42:46,000 --> 00:42:51,610
sets in there one of which will be my
944
00:42:50,110 --> 00:42:54,160
version one of the app and one of which
945
00:42:51,610 --> 00:42:56,230
is version - and if I rerun that command
946
00:42:54,160 --> 00:42:59,230
they should have fewer of each now so
947
00:42:56,230 --> 00:43:01,450
now yeah you can see that version one's
948
00:42:59,230 --> 00:43:04,230
back up and running and version two it's
949
00:43:01,450 --> 00:43:05,410
nearly finished killing all of those
950
00:43:04,230 --> 00:43:06,460
okay
951
00:43:05,410 --> 00:43:08,379
what I'm going to do now is I'm just
952
00:43:06,460 --> 00:43:09,580
going to quickly delete this and then
953
00:43:08,380 --> 00:43:13,030
show you another way of deploying
954
00:43:09,580 --> 00:43:15,630
applications if I could type to delete
955
00:43:13,030 --> 00:43:22,180
that would be helpful
956
00:43:15,630 --> 00:43:28,150
cool so we ended meet the deployment and
957
00:43:22,180 --> 00:43:29,649
then delete service guestbook as well so
958
00:43:28,150 --> 00:43:31,840
we delete the service and now if I do
959
00:43:29,650 --> 00:43:34,090
cube CTL get pods just check there's
960
00:43:31,840 --> 00:43:35,650
nothing running okay there are a couple
961
00:43:34,090 --> 00:43:37,780
of the three left that are still
962
00:43:35,650 --> 00:43:39,850
terminating they've probably gone by the
963
00:43:37,780 --> 00:43:44,140
next time I run it which they have okay
964
00:43:39,850 --> 00:43:45,790
cool so let's clear this and what you'll
965
00:43:44,140 --> 00:43:47,470
you'll find from that right that's a
966
00:43:45,790 --> 00:43:51,040
really simple way of doing it but I've
967
00:43:47,470 --> 00:43:52,689
deployed those with a prebuilt image and
968
00:43:51,040 --> 00:43:54,160
I haven't given it much information I
969
00:43:52,690 --> 00:43:55,300
basically just said like here's an image
970
00:43:54,160 --> 00:43:59,930
run it
971
00:43:55,300 --> 00:44:01,910
ultimately what happens is when you run
972
00:43:59,930 --> 00:44:04,819
kubernetes deployments you end up
973
00:44:01,910 --> 00:44:07,370
writing a lot of these manifests in yam
974
00:44:04,820 --> 00:44:11,000
all right so here we go let's get this
975
00:44:07,370 --> 00:44:14,480
one open so if you have a look here this
976
00:44:11,000 --> 00:44:16,960
is a simple deployment for example and
977
00:44:14,480 --> 00:44:20,360
I'm saying with with each of these
978
00:44:16,960 --> 00:44:23,900
manifest files that kubernetes will
979
00:44:20,360 --> 00:44:25,160
accept there's you would have to specify
980
00:44:23,900 --> 00:44:27,680
the API version that you're
981
00:44:25,160 --> 00:44:30,290
communicating with and the kind of
982
00:44:27,680 --> 00:44:31,910
object you're creating and then you can
983
00:44:30,290 --> 00:44:34,009
put as much metadata as you like right
984
00:44:31,910 --> 00:44:37,310
these can be all these labels and so on
985
00:44:34,010 --> 00:44:40,010
to be able to filter on them later
986
00:44:37,310 --> 00:44:41,900
but the the bit that kubernetes needs in
987
00:44:40,010 --> 00:44:44,210
order to actually deploy stuff is your
988
00:44:41,900 --> 00:44:47,090
spec in here so in the spec you can see
989
00:44:44,210 --> 00:44:48,890
I'm defining replicas ten let's change
990
00:44:47,090 --> 00:44:50,120
that actually let's say like seven so
991
00:44:48,890 --> 00:44:54,140
that we can tell it's not the point the
992
00:44:50,120 --> 00:44:56,630
same thing as last time we've got a
993
00:44:54,140 --> 00:44:59,870
thing here we're saying match labels
994
00:44:56,630 --> 00:45:01,940
where the app equals guestbook the
995
00:44:59,870 --> 00:45:03,380
template here in here we've now got
996
00:45:01,940 --> 00:45:05,480
again some more metadata around the
997
00:45:03,380 --> 00:45:07,520
container or the pod and then the
998
00:45:05,480 --> 00:45:09,650
containers itself so here I'm specifying
999
00:45:07,520 --> 00:45:12,470
the name is guestbook but I want that
1000
00:45:09,650 --> 00:45:15,800
IBM comm guestbook v1 right and then
1001
00:45:12,470 --> 00:45:17,540
also I need to expose that pour on 3000
1002
00:45:15,800 --> 00:45:20,840
and you can start to store all sorts of
1003
00:45:17,540 --> 00:45:24,009
information in here and the way I deploy
1004
00:45:20,840 --> 00:45:29,660
that right is I just do keep CTL create
1005
00:45:24,010 --> 00:45:32,360
guestbook deployment yam all right so
1006
00:45:29,660 --> 00:45:35,029
keep city I'll create minus F it's
1007
00:45:32,360 --> 00:45:37,460
basically like here's a file deploy it
1008
00:45:35,030 --> 00:45:39,410
right and it knows that this is the
1009
00:45:37,460 --> 00:45:42,640
deployment because I specified that in
1010
00:45:39,410 --> 00:45:45,140
the spec here I said kind deployment and
1011
00:45:42,640 --> 00:45:47,330
it's created the deployment it's named a
1012
00:45:45,140 --> 00:45:50,390
guestbook be one because again at the
1013
00:45:47,330 --> 00:45:52,220
name here guess that'd be one it will
1014
00:45:50,390 --> 00:45:55,879
use the containers image I've specified
1015
00:45:52,220 --> 00:45:58,990
etc and this becomes a much easier way
1016
00:45:55,880 --> 00:46:03,740
of being able to employ things and also
1017
00:45:58,990 --> 00:46:06,950
store the configuration and like like
1018
00:46:03,740 --> 00:46:08,538
not have you can also use it to automate
1019
00:46:06,950 --> 00:46:11,328
things which is much easier but also
1020
00:46:08,539 --> 00:46:12,589
like avoid human error you can you can
1021
00:46:11,329 --> 00:46:14,390
do you could do all of that from the
1022
00:46:12,589 --> 00:46:17,209
command line but it said a lot of
1023
00:46:14,390 --> 00:46:19,729
commands or a lot of flags and you could
1024
00:46:17,209 --> 00:46:21,649
easily type some wrong and whereas when
1025
00:46:19,729 --> 00:46:24,019
you're storing it in a manifest it's
1026
00:46:21,650 --> 00:46:25,549
much easier to handle the other thing I
1027
00:46:24,019 --> 00:46:28,999
then need to do is I need to go and
1028
00:46:25,549 --> 00:46:33,979
create a service and finally let's check
1029
00:46:28,999 --> 00:46:35,629
this is deployed first so get pods okay
1030
00:46:33,979 --> 00:46:35,959
cool yeah so my seven pods are up and
1031
00:46:35,630 --> 00:46:45,229
running
1032
00:46:35,959 --> 00:46:48,140
I could equally have done L thing to
1033
00:46:45,229 --> 00:46:49,729
filter in this case I should get a mob
1034
00:46:48,140 --> 00:46:54,949
because all of they have running from
1035
00:46:49,729 --> 00:46:56,479
that guestbook app to be a little bit
1036
00:46:54,949 --> 00:46:59,449
slow responding but there we go yet we
1037
00:46:56,479 --> 00:47:01,009
get the same result and then let me just
1038
00:46:59,449 --> 00:47:03,349
show you how I can actually that
1039
00:47:01,009 --> 00:47:10,339
deployment I showed you I can edit that
1040
00:47:03,349 --> 00:47:11,630
deployment from straight from cuba
1041
00:47:10,339 --> 00:47:13,699
Nettie's right so what this does is it
1042
00:47:11,630 --> 00:47:15,289
downloads a version of them deployment
1043
00:47:13,699 --> 00:47:17,989
and you'll notice as I scroll through
1044
00:47:15,289 --> 00:47:21,739
this that there's way more information
1045
00:47:17,989 --> 00:47:24,619
in here then was in the deployment
1046
00:47:21,739 --> 00:47:26,390
manifest I gave to Cuba Nettie's right
1047
00:47:24,619 --> 00:47:28,159
and that's because this is a copy of
1048
00:47:26,390 --> 00:47:29,959
what's being stored in the database and
1049
00:47:28,159 --> 00:47:32,599
this contains all sorts of information
1050
00:47:29,959 --> 00:47:34,519
about like you can see the status here
1051
00:47:32,599 --> 00:47:37,939
for available replicas as the conditions
1052
00:47:34,519 --> 00:47:40,578
so the last time it was updated you know
1053
00:47:37,939 --> 00:47:43,819
the minimum availability message on
1054
00:47:40,579 --> 00:47:45,469
there and so on all that so but
1055
00:47:43,819 --> 00:47:47,058
essentially like it's this is all the
1056
00:47:45,469 --> 00:47:50,089
stuff that Cuban if he's is added to it
1057
00:47:47,059 --> 00:47:55,269
before it's stored it so let's just quit
1058
00:47:50,089 --> 00:47:57,380
that and then what I won't do is me like
1059
00:47:55,269 --> 00:47:59,299
you could equally I could have made
1060
00:47:57,380 --> 00:48:01,609
taken that guestbook deployment and then
1061
00:47:59,299 --> 00:48:04,699
apply to change but let's just deploy a
1062
00:48:01,609 --> 00:48:08,390
service now instead so let's do let's
1063
00:48:04,699 --> 00:48:12,799
have a look at that first service and
1064
00:48:08,390 --> 00:48:15,558
you'll see this service let's go back
1065
00:48:12,799 --> 00:48:18,319
again looks much like the deployment
1066
00:48:15,559 --> 00:48:20,539
does it's long but simpler this one it's
1067
00:48:18,319 --> 00:48:22,359
basically saying you know deploy a
1068
00:48:20,539 --> 00:48:27,650
service
1069
00:48:22,359 --> 00:48:29,569
match the selector here is looking for
1070
00:48:27,650 --> 00:48:33,289
app equals guestbook so all of the pods
1071
00:48:29,569 --> 00:48:34,969
where the label app equals guestbook and
1072
00:48:33,289 --> 00:48:35,299
then I want you to load balance over
1073
00:48:34,969 --> 00:48:37,849
there
1074
00:48:35,299 --> 00:48:39,950
and I want you to expose port 3000 right
1075
00:48:37,849 --> 00:48:46,900
so there's my simple service
1076
00:48:39,950 --> 00:48:46,899
let's do QT TL create guestbook service
1077
00:48:51,670 --> 00:48:58,839
and that should now be deployed
1078
00:48:56,239 --> 00:49:04,759
so it says service guestbook created and
1079
00:48:58,839 --> 00:49:11,630
and then if I do once once more I go to
1080
00:49:04,759 --> 00:49:15,289
my let me get this the called hopefully
1081
00:49:11,630 --> 00:49:17,420
guess but yeah so I just need to check
1082
00:49:15,289 --> 00:49:18,979
that port again right so that because
1083
00:49:17,420 --> 00:49:21,910
this time I've created a new node port
1084
00:49:18,979 --> 00:49:24,468
on there and I need to update that
1085
00:49:21,910 --> 00:49:27,709
unlike browser so we can go and check
1086
00:49:24,469 --> 00:49:30,499
the route still running Oh in fact it's
1087
00:49:27,709 --> 00:49:32,538
the same port still so we're good um and
1088
00:49:30,499 --> 00:49:35,209
you can see my applications now up and
1089
00:49:32,539 --> 00:49:37,989
running this time I've deployed the same
1090
00:49:35,209 --> 00:49:40,339
thing but I used manifests rather than
1091
00:49:37,989 --> 00:49:44,599
specifying the image myself and then
1092
00:49:40,339 --> 00:49:48,109
writing commands in to do it so and then
1093
00:49:44,599 --> 00:49:50,809
I can do the usual like it will take
1094
00:49:48,109 --> 00:49:52,788
state the only thing is right all of
1095
00:49:50,809 --> 00:49:54,380
these haven't had a way to actually
1096
00:49:52,789 --> 00:49:57,589
store the information I put into my
1097
00:49:54,380 --> 00:50:02,390
guestbook so very quickly what I'm gonna
1098
00:49:57,589 --> 00:50:05,538
do is I'm going to deploy a Redis cache
1099
00:50:02,390 --> 00:50:07,249
so that this application when it takes
1100
00:50:05,539 --> 00:50:10,309
information in here
1101
00:50:07,249 --> 00:50:12,649
it still stores it because if i refresh
1102
00:50:10,309 --> 00:50:16,089
this again i force a refresh because i
1103
00:50:12,650 --> 00:50:18,410
have seven instances right you'll see
1104
00:50:16,089 --> 00:50:20,479
sometimes they get the response i typed
1105
00:50:18,410 --> 00:50:22,279
in but a lot of the time i'm getting
1106
00:50:20,479 --> 00:50:24,439
blank right because it depends which one
1107
00:50:22,279 --> 00:50:27,859
I'm connecting to that's not
1108
00:50:24,440 --> 00:50:30,170
particularly good behavior for my
1109
00:50:27,859 --> 00:50:33,859
application so let's deploy a backing
1110
00:50:30,170 --> 00:50:34,789
service to this so a cube CTO or grave -
1111
00:50:33,859 --> 00:50:36,739
F
1112
00:50:34,789 --> 00:50:38,390
redis last time and you can see this is
1113
00:50:36,739 --> 00:50:42,229
much easier when I have these deployment
1114
00:50:38,390 --> 00:50:44,328
manifests written off already so now I'm
1115
00:50:42,229 --> 00:50:49,698
creating a new deployment called Redis
1116
00:50:44,329 --> 00:50:54,380
master and you can see if I do let's do
1117
00:50:49,699 --> 00:50:55,459
the this time my selectors actually do
1118
00:50:54,380 --> 00:50:59,209
something because I have multiple
1119
00:50:55,459 --> 00:51:01,038
deployments so I'm saying match the
1120
00:50:59,209 --> 00:51:03,439
labels where at people's Redis role
1121
00:51:01,039 --> 00:51:05,239
equals master and still return the pods
1122
00:51:03,439 --> 00:51:08,598
and you can see I have one of those
1123
00:51:05,239 --> 00:51:10,489
running this Redis master they're going
1124
00:51:08,599 --> 00:51:12,859
to copy that quickly because another
1125
00:51:10,489 --> 00:51:17,799
cool thing you can do in cube is you can
1126
00:51:12,859 --> 00:51:20,689
do queue TTL exactly right and this will
1127
00:51:17,799 --> 00:51:24,769
back into the container is like SSH is
1128
00:51:20,689 --> 00:51:26,359
in and runs a command for you so in this
1129
00:51:24,769 --> 00:51:29,089
case I'm gonna give it so that's the
1130
00:51:26,359 --> 00:51:31,038
name of the pod I want to connect to and
1131
00:51:29,089 --> 00:51:33,259
the command I want to run it Redis CLI
1132
00:51:31,039 --> 00:51:35,900
so if we jump in there we can just check
1133
00:51:33,259 --> 00:51:37,759
the Redis Eli's running and you know we
1134
00:51:35,900 --> 00:51:40,309
can go like ping and it responds okay
1135
00:51:37,759 --> 00:51:44,059
great so that's fine
1136
00:51:40,309 --> 00:51:45,949
let's just jump out of there and then we
1137
00:51:44,059 --> 00:51:55,779
also need to create a service for that
1138
00:51:45,949 --> 00:51:57,799
one that ServiceNow will match that
1139
00:51:55,779 --> 00:52:02,179
deployment we created so that it's
1140
00:51:57,799 --> 00:52:03,349
exposed and just in order to so the
1141
00:52:02,179 --> 00:52:05,150
thing I need to do now is the
1142
00:52:03,349 --> 00:52:07,339
application has the code that's written
1143
00:52:05,150 --> 00:52:09,799
for it is automatically going to try and
1144
00:52:07,339 --> 00:52:11,808
connect to Redis if it's available but
1145
00:52:09,799 --> 00:52:14,749
because it's already up and running it's
1146
00:52:11,809 --> 00:52:16,729
now using in-memory database instead we
1147
00:52:14,749 --> 00:52:18,979
need to restart it so there's no real
1148
00:52:16,729 --> 00:52:21,198
real concept of like a restart in Cuba
1149
00:52:18,979 --> 00:52:22,549
Nettie's and because all your containers
1150
00:52:21,199 --> 00:52:25,489
are supposed to be stateless in
1151
00:52:22,549 --> 00:52:30,679
ephemeral and so the way we do that is
1152
00:52:25,489 --> 00:52:35,539
we do a cube CTL elite deploy guess
1153
00:52:30,679 --> 00:52:39,259
Burke v1 so I'm basically deleting my
1154
00:52:35,539 --> 00:52:42,549
deployment I created and then I'm just
1155
00:52:39,259 --> 00:52:42,549
gonna create it again
1156
00:52:45,410 --> 00:52:49,250
and they'd like I could equally I could
1157
00:52:47,480 --> 00:52:51,440
have scaled the replicas to zero and
1158
00:52:49,250 --> 00:52:54,980
scaled them back up again that would
1159
00:52:51,440 --> 00:52:58,960
also have achieved the same like same
1160
00:52:54,980 --> 00:53:02,270
goal and now if I jump over to my
1161
00:52:58,960 --> 00:53:04,180
application refresh it quickly enough
1162
00:53:02,270 --> 00:53:06,920
it's finished
1163
00:53:04,180 --> 00:53:08,839
if those pods of finish creating so
1164
00:53:06,920 --> 00:53:10,369
they're still saying container creating
1165
00:53:08,839 --> 00:53:13,250
two of them are finished so we might get
1166
00:53:10,369 --> 00:53:15,859
a response now there we go right and now
1167
00:53:13,250 --> 00:53:18,560
if I type something in and I say you
1168
00:53:15,859 --> 00:53:21,790
know how about world if I fall to
1169
00:53:18,560 --> 00:53:25,460
refresh this regardless of which of the
1170
00:53:21,790 --> 00:53:27,619
instances I connect to and I can see
1171
00:53:25,460 --> 00:53:30,770
that state because it's being stored in
1172
00:53:27,619 --> 00:53:32,990
my Redis service and we can also like
1173
00:53:30,770 --> 00:53:39,290
let's confirm that for sure by going
1174
00:53:32,990 --> 00:53:41,270
into the let's exec pending on what do
1175
00:53:39,290 --> 00:53:54,770
they call that pod again I'd find it's
1176
00:53:41,270 --> 00:53:56,180
that exact into the Redis pod again all
1177
00:53:54,770 --> 00:53:58,160
right so we're now using the Redis CLI
1178
00:53:56,180 --> 00:54:03,319
again inside that container that we're
1179
00:53:58,160 --> 00:54:04,578
storing the cache and let's do just see
1180
00:54:03,319 --> 00:54:09,140
what this one's called okay it's called
1181
00:54:04,579 --> 00:54:10,160
guestbook in here let's just get like
1182
00:54:09,140 --> 00:54:11,868
the return the phone
1183
00:54:10,160 --> 00:54:15,078
essentially I'm saying to it return the
1184
00:54:11,869 --> 00:54:18,079
first ten rows of whatever stored in
1185
00:54:15,079 --> 00:54:19,970
this cache on the guestbook key and you
1186
00:54:18,079 --> 00:54:22,790
can see it's stored inside there is
1187
00:54:19,970 --> 00:54:24,470
hello world so my cache is working and
1188
00:54:22,790 --> 00:54:27,980
it's replicating across all the
1189
00:54:24,470 --> 00:54:31,700
containers um fantastic so I've now
1190
00:54:27,980 --> 00:54:36,290
deployed like a very simple but pretty
1191
00:54:31,700 --> 00:54:37,490
powerful scalable deployment the final
1192
00:54:36,290 --> 00:54:39,410
thing that I was going to show you but I
1193
00:54:37,490 --> 00:54:45,259
won't do and I'll talk about instead is
1194
00:54:39,410 --> 00:54:47,020
if I jump back to my slides and what I
1195
00:54:45,260 --> 00:54:49,940
was hoping to have time to do was to say
1196
00:54:47,020 --> 00:54:52,400
now I've deployed a Redis master how do
1197
00:54:49,940 --> 00:54:53,690
we keep that scalable well one of the
1198
00:54:52,400 --> 00:54:55,980
ways we could have done that would be to
1199
00:54:53,690 --> 00:54:59,280
deploy slave nodes to that Redis much
1200
00:54:55,980 --> 00:55:01,050
and what those slaves do is is they
1201
00:54:59,280 --> 00:55:03,450
replicate the data that gets stored in
1202
00:55:01,050 --> 00:55:05,640
the Redis master across them so we can
1203
00:55:03,450 --> 00:55:07,919
have multiple instances of the database
1204
00:55:05,640 --> 00:55:10,440
as well and then the way the application
1205
00:55:07,920 --> 00:55:12,839
behaves is it takes reads from those
1206
00:55:10,440 --> 00:55:15,630
slaves and any rights go to the master
1207
00:55:12,839 --> 00:55:18,029
and then they get synced across and at
1208
00:55:15,630 --> 00:55:19,829
that point right very quickly you know
1209
00:55:18,030 --> 00:55:22,109
with in under an hour whilst explaining
1210
00:55:19,829 --> 00:55:24,359
it we have like a three-tier application
1211
00:55:22,109 --> 00:55:28,009
that's fully scalable highly available
1212
00:55:24,359 --> 00:55:30,328
on cloud deployed with kubernetes and
1213
00:55:28,010 --> 00:55:31,800
kubernetes is now constantly monitoring
1214
00:55:30,329 --> 00:55:34,320
that to make sure it's always up and
1215
00:55:31,800 --> 00:55:35,910
running which is it's a pretty cool and
1216
00:55:34,320 --> 00:55:40,380
powerful way to have your application
1217
00:55:35,910 --> 00:55:44,129
running and again like thanks to cuba
1218
00:55:40,380 --> 00:55:46,500
Nettie's so I'm gonna open up very
1219
00:55:44,130 --> 00:55:48,390
quickly to questions and nisha identif
1220
00:55:46,500 --> 00:55:51,210
you mentioned you were going to monitor
1221
00:55:48,390 --> 00:55:53,069
if there were any I don't know if you
1222
00:55:51,210 --> 00:55:57,560
want to let me know if we have any at
1223
00:55:53,070 --> 00:56:00,780
this stage oh yeah people asked about um
1224
00:55:57,560 --> 00:56:02,759
advantages of using kubernetes on IBM
1225
00:56:00,780 --> 00:56:06,740
cloud specifically if you have anything
1226
00:56:02,760 --> 00:56:09,089
to share about that or yeah sure um so
1227
00:56:06,740 --> 00:56:11,549
yeah there's essentially right there's
1228
00:56:09,089 --> 00:56:14,609
like two ways of running communities and
1229
00:56:11,550 --> 00:56:17,550
you can either like run it and host it
1230
00:56:14,609 --> 00:56:19,020
all yourself either on your own
1231
00:56:17,550 --> 00:56:21,060
infrastructure or in cloud
1232
00:56:19,020 --> 00:56:24,300
infrastructure like a lot of a lot of
1233
00:56:21,060 --> 00:56:26,040
cloud providers will will spin up Kuban
1234
00:56:24,300 --> 00:56:29,460
entities for you in a load of virtual
1235
00:56:26,040 --> 00:56:30,329
machines and go like here it is like now
1236
00:56:29,460 --> 00:56:32,910
it's your problem
1237
00:56:30,329 --> 00:56:35,220
and the problem with that is is you have
1238
00:56:32,910 --> 00:56:37,770
to manage and maintain all of the master
1239
00:56:35,220 --> 00:56:39,319
nodes you have to handle a lot of the
1240
00:56:37,770 --> 00:56:41,790
networking that goes on underneath
1241
00:56:39,319 --> 00:56:43,740
you then have to stay up-to-date with
1242
00:56:41,790 --> 00:56:50,430
kubernetes upgrades or you have to
1243
00:56:43,740 --> 00:56:54,078
delete your entire later if you if you
1244
00:56:50,430 --> 00:56:57,089
want to get efforts from provider and
1245
00:56:54,079 --> 00:56:59,250
the other way of doing it is is like a
1246
00:56:57,089 --> 00:57:01,799
managed kubernetes environment which is
1247
00:56:59,250 --> 00:57:02,940
what IDM provide it's what do you get if
1248
00:57:01,800 --> 00:57:04,650
you you know if you go to Google cloud
1249
00:57:02,940 --> 00:57:07,920
as well I think there are some others
1250
00:57:04,650 --> 00:57:09,839
who do it now to essentially the benefit
1251
00:57:07,920 --> 00:57:11,880
with that right is in this case IBM
1252
00:57:09,839 --> 00:57:14,299
masternodes they look after all of the
1253
00:57:11,880 --> 00:57:19,349
kubernetes type upgrades for you and
1254
00:57:14,299 --> 00:57:21,869
they there is still like a an option you
1255
00:57:19,349 --> 00:57:22,979
have as to when you want to upgrade but
1256
00:57:21,869 --> 00:57:25,170
the other thing they'll be doing is
1257
00:57:22,979 --> 00:57:28,558
they'll be providing things like when
1258
00:57:25,170 --> 00:57:29,700
your worker nodes like fall out of day
1259
00:57:28,559 --> 00:57:33,210
or there's a security vulnerability
1260
00:57:29,700 --> 00:57:36,058
within them IBM will notify you and tell
1261
00:57:33,210 --> 00:57:37,619
you like here all you have to do is run
1262
00:57:36,059 --> 00:57:39,089
this command and we can upgrade them for
1263
00:57:37,619 --> 00:57:41,039
you but you've just got to be aware that
1264
00:57:39,089 --> 00:57:42,660
you're working like you know what your
1265
00:57:41,039 --> 00:57:45,239
stuff is you you've deployed on there
1266
00:57:42,660 --> 00:57:46,950
and whether it might be affected so it
1267
00:57:45,239 --> 00:57:48,930
takes a lot of a headache of running
1268
00:57:46,950 --> 00:57:50,249
kubernetes away from you and lets you
1269
00:57:48,930 --> 00:57:51,839
focus more on just deploying your
1270
00:57:50,249 --> 00:57:55,558
applications and being an end-user
1271
00:57:51,839 --> 00:58:00,058
rather than operations manager of a cube
1272
00:57:55,559 --> 00:58:02,759
cluster great answer um someone else
1273
00:58:00,059 --> 00:58:07,079
asked where are the logs to the commands
1274
00:58:02,759 --> 00:58:13,349
and service stored so we're the lost of
1275
00:58:07,079 --> 00:58:16,890
the commands and service perhaps or
1276
00:58:13,349 --> 00:58:17,969
maybe I'm gonna hey I think I thought I
1277
00:58:16,890 --> 00:58:21,058
know what they mean by that I'm gonna
1278
00:58:17,969 --> 00:58:23,729
assume they mean like if I run so when
1279
00:58:21,059 --> 00:58:25,529
I'm running cube CTL like create service
1280
00:58:23,729 --> 00:58:27,718
etc or something like that
1281
00:58:25,529 --> 00:58:30,450
right I'm telling Cuban Eddie's to do a
1282
00:58:27,719 --> 00:58:32,460
bunch of things is there like an audit
1283
00:58:30,450 --> 00:58:34,558
trail about that because you know one of
1284
00:58:32,460 --> 00:58:38,039
my other developers might tell cube to
1285
00:58:34,559 --> 00:58:43,140
do lots of stuff um yes that's that's
1286
00:58:38,039 --> 00:58:44,640
it's all stored in the side the API
1287
00:58:43,140 --> 00:58:48,058
server that I mentioned earlier like
1288
00:58:44,640 --> 00:58:50,670
keeps an audit trail of that I don't
1289
00:58:48,059 --> 00:58:53,249
know how accessible that is like so you
1290
00:58:50,670 --> 00:58:56,099
can see it I know when you run cube
1291
00:58:53,249 --> 00:58:58,529
yourself right you can see that whether
1292
00:58:56,099 --> 00:59:01,499
through IBM cloud because it's like a
1293
00:58:58,529 --> 00:59:03,119
managed service you may have to if you
1294
00:59:01,499 --> 00:59:06,328
had that request you may have to open a
1295
00:59:03,119 --> 00:59:07,979
support ticket and just request could we
1296
00:59:06,329 --> 00:59:11,609
see all the audit trail for our commands
1297
00:59:07,979 --> 00:59:14,089
and that but ultimately like you you
1298
00:59:11,609 --> 00:59:16,769
want to get away from in a you know in a
1299
00:59:14,089 --> 00:59:18,359
multi-person environment you want to get
1300
00:59:16,769 --> 00:59:20,308
away from running as many commands as
1301
00:59:18,359 --> 00:59:22,460
possible and you want all of this to be
1302
00:59:20,309 --> 00:59:24,859
handled by automated tooling
1303
00:59:22,460 --> 00:59:26,450
that you know in reality you write your
1304
00:59:24,859 --> 00:59:28,520
code you check it into your get
1305
00:59:26,450 --> 00:59:31,939
repository and that triggers some sort
1306
00:59:28,520 --> 00:59:33,710
of delivery pipeline that you know
1307
00:59:31,940 --> 00:59:36,530
builds your code into a container it
1308
00:59:33,710 --> 00:59:39,470
deploys it off to kubernetes it asks for
1309
00:59:36,530 --> 00:59:42,970
certain number of replicas etc and the
1310
00:59:39,470 --> 00:59:46,578
only thing that the developers kind of
1311
00:59:42,970 --> 00:59:48,109
in charge of is maybe like changing a
1312
00:59:46,579 --> 00:59:49,309
few bits in the configuration that they
1313
00:59:48,109 --> 00:59:51,319
then have to check in with their code
1314
00:59:49,309 --> 00:59:53,270
anyway so you then have a full audit
1315
00:59:51,319 --> 00:59:54,619
trail from that side and that's probably
1316
00:59:53,270 --> 01:00:01,520
a better way to handle it you know like
1317
00:59:54,619 --> 01:00:13,640
you know multi-user scenario and any
1318
01:00:01,520 --> 01:00:15,589
other questions Anisha we as as do we
1319
01:00:13,640 --> 01:00:18,049
have any more questions or is that all
1320
01:00:15,589 --> 01:00:20,960
should I wrap up that uh yeah I think
1321
01:00:18,050 --> 01:00:24,170
that's all for questions so anyway thank
1322
01:00:20,960 --> 01:00:26,420
you to add and as I said before for for
1323
01:00:24,170 --> 01:00:28,490
more information in the description box
1324
01:00:26,420 --> 01:00:29,750
of the video there's an event page and
1325
01:00:28,490 --> 01:00:32,209
there you'll have links to more
1326
01:00:29,750 --> 01:00:34,400
resources on how to get started along
1327
01:00:32,210 --> 01:00:36,770
with a link to how to sign up for IBM
1328
01:00:34,400 --> 01:00:40,720
cloud so thank you everyone and that's
1329
01:00:36,770 --> 01:00:40,720
our Tech Talk go
101999
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.