-
Notifications
You must be signed in to change notification settings - Fork 18
/
Copy pathoperator-capabilities.html
438 lines (425 loc) · 31.1 KB
/
operator-capabilities.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
---
title: "Operator capabilities"
date: 2020-02-12T15:41:36-03:00
draft: false
---
<section class="of-section-page-intro of-page--capabilities">
<header class="of-section-page-intro__header">
<h1 class="of-heading of-heading--md">Operator capability levels</h1>
<p>Operators come in different maturity levels in regards to their lifecycle management capabilities for the application or workload they deliver. The capability models aims to provide guidance in terminology to express what features users can expect from an Operator.</p>
</header>
<div class="of-capability-content of-section-separator">
<ul class="of-capability-content__model">
<li>
<h3 class="of-heading of-heading--lg"><span>level Ⅰ</span></h3>
<h4 class="of-heading of-heading--sm">Basic install</h4>
<p>Automated application provisioning and configuration management</p>
</li>
<li>
<h3 class="of-heading of-heading--lg"><span>Level Ⅱ</span></h3>
<h4 class="of-heading of-heading--sm">Seamless Upgrades</h4>
<p>Patch and minor version upgrades supported</p>
</li>
<li>
<h3 class="of-heading of-heading--lg"><span>Level Ⅲ</span></h3>
<h4 class="of-heading of-heading--sm">Full lifecycle</h4>
<p>App lifecycle, storage lifecycle (backup, failure recovery)</p>
</li>
<li>
<h3 class="of-heading of-heading--lg"><span>Level Ⅳ</span></h3>
<h4 class="of-heading of-heading--sm">Deep Insights</h4>
<p>Metrics, alerts, log processing and workload analysis</p>
</li>
<li>
<h3 class="of-heading of-heading--lg"><span>Level Ⅴ</span></h3>
<h4 class="of-heading of-heading--sm">Auto Pilot</h4>
<p>Horizontal/vertical scaling, auto config tuning, abnormal detection, scheduling tuning</p>
</li>
</ul>
<!-- Generator: Adobe Illustrator 24.0.1, SVG Export Plug-In -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 1120.9 233.9" style="enable-background:new 0 0 1120.9 233.9;"
xml:space="preserve">
<style type="text/css">
.st0{fill:#FFFFFF;}
.st1{fill:#1A1918;}
.st2{fill:#37BAAE;}
.st3{fill:#307C9B;enable-background:new ;}
</style>
<defs>
</defs>
<g>
<path class="st0" d="M178.6,77.9c-25,0-50,0-74.9,0c0-26,0-51.9,0-77.9c25,0,50,0,74.9,0C178.6,26,178.6,51.9,178.6,77.9z
M143.5,11.6c0,0,0-0.1,0-0.2c0.6-2.3,0.6-4.5,0.2-6.8c-0.2-1.3-0.5-2.6-1.4-3.6c-0.7-0.8-1.4-0.8-2,0c-0.5,0.7-0.9,1.5-1.1,2.3
c-0.7,2.5-0.7,5.1-0.2,7.7c0.2,0.8,0.2,0.8-0.7,0.9c-0.4,0-0.8,0.1-1.2,0.1c-3.6,0.5-7,1.7-10.2,3.5c-0.2,0.1-0.4,0.2-0.5,0.3
c-0.1-0.1-0.1-0.1-0.1-0.1c-0.1-0.2-0.2-0.4-0.3-0.6c-1-2.1-2.3-4.1-4.1-5.6c-0.7-0.6-1.6-1.1-2.5-1.5c-0.9-0.4-1.7,0.1-1.8,1.1
c0,0.4,0,0.8,0.1,1.2c0.4,2.2,1.5,4.1,2.9,5.9c0.6,0.8,1.4,1.5,2.1,2.3c-1.9,1.7-3.6,3.6-5,5.8c1.2,0.8,2.4,1.5,3.5,2.3
c0.2-0.2,0.3-0.4,0.4-0.5c5.7-7.7,13.3-11.1,22.9-9.7c6.5,0.9,11.5,4.3,15.4,9.6c0.9,1.2,0.9,1.2,2.1,0.4c0.8-0.5,1.5-0.9,2.3-1.4
c-1.4-2.3-3.1-4.2-5-6.1c0.3-0.3,0.5-0.4,0.7-0.6c2-1.8,3.5-4,4.4-6.5c0.3-0.8,0.4-1.6,0.4-2.5c0-1.1-0.7-1.6-1.8-1.3
c-0.6,0.2-1.3,0.6-1.8,1c-1.7,1.3-3,3-4.1,4.8c-0.4,0.8-0.8,1.6-1.2,2.3c-2-0.9-4-2-6.1-2.7C148,12.6,145.8,12.2,143.5,11.6z
M122.4,59.7c0,0,0,0.1,0,0.1c-0.1,0.1-0.3,0.3-0.4,0.4c-1.7,1.7-3,3.7-3.8,6c-0.3,0.8-0.4,1.6-0.4,2.4c0,1.1,0.7,1.7,1.8,1.3
c0.7-0.2,1.3-0.6,1.9-1c2-1.5,3.4-3.5,4.5-5.8c0.1-0.2,0.2-0.4,0.3-0.7c4,2.4,8.2,3.8,12.8,4.2c0,0.2,0,0.3,0,0.4
c-0.5,2.5-0.5,5.1,0.2,7.6c0.3,0.9,0.7,1.7,1.3,2.5c0.5,0.6,1.2,0.6,1.7,0c0.4-0.4,0.7-0.9,0.9-1.4c0.8-2.1,1-4.3,0.8-6.5
c-0.1-0.8-0.2-1.7-0.3-2.6c4.6-0.5,8.8-2,12.6-4.5c0.1,0.3,0.3,0.5,0.4,0.7c1,2.1,2.3,4.1,4.1,5.6c0.7,0.6,1.6,1.1,2.4,1.5
c1.1,0.5,1.9-0.1,1.9-1.3c0-0.5-0.1-1.1-0.2-1.6c-0.8-2.8-2.4-5.2-4.5-7.2c-0.2-0.2-0.4-0.2-0.6-0.3c1.4-1.6,2.6-3.1,3.9-4.5
c-1.3-0.9-2.4-1.6-3.5-2.4c-4.8,6.4-11.1,9.9-19.1,9.9c-8,0-14.3-3.5-19.2-9.9c-1.2,0.8-2.3,1.6-3.5,2.5
C119.7,56.6,121,58.1,122.4,59.7z M174,36.5c0.1,0,0.1,0,0.2,0c0,0.2,0,0.4,0,0.6c-0.2,1.7-0.5,3.3-0.5,5c-0.1,2.3,0,4.6,0,6.9
c0,0.4,0.1,0.6,0.6,0.6c1.2,0,2.3,0,3.5,0c0.5,0,0.6-0.1,0.6-0.6c0-6.3,0-12.5,0-18.8c0-0.5-0.2-0.6-0.6-0.6c-1.5,0-2.9,0-4.4,0
c-0.4,0-0.6,0.1-0.7,0.5c-1.2,3.5-2.4,7.1-3.6,10.6c-0.1,0.2-0.1,0.4-0.2,0.6c-0.1,0-0.1,0-0.2,0c-0.1-0.2-0.2-0.3-0.2-0.5
c-1.2-3.5-2.5-7-3.7-10.6c-0.2-0.5-0.4-0.6-0.9-0.6c-1.4,0-2.7,0-4.1,0c-0.8,0-0.8,0-0.8,0.9c0,5.9,0,11.8,0,17.6c0,0.3,0,0.7,0,1
c0,0.3,0.1,0.5,0.5,0.5c1.2,0,2.4,0,3.6,0c0.3,0,0.5-0.1,0.5-0.5c0-0.6,0-1.2,0-1.8c0.1-3.5,0-6.9-0.6-10.3c0-0.2,0-0.3,0-0.5
c0.1,0,0.1,0,0.2,0c0.1,0.2,0.2,0.4,0.3,0.6c1.2,3.4,2.4,6.8,3.6,10.2c0.2,0.5,0.4,0.7,0.9,0.6c0.5,0,0.9,0,1.4,0
c0.5,0,0.8-0.2,0.9-0.7c1.2-3.4,2.4-6.8,3.7-10.1C173.8,36.9,173.9,36.7,174,36.5z M104.1,39.6c0,3.1,0,6.2,0,9.3
c0,0.5,0.1,0.7,0.6,0.6c1.3,0,2.6,0,3.9,0c0.5,0,0.6-0.1,0.6-0.6c0-2.2,0-4.5,0-6.7c0-0.6,0.2-0.7,0.7-0.7c1.6,0,3.2,0,4.8,0
c0.5,0,0.7,0.2,0.7,0.7c0,2.2,0,4.5,0,6.7c0,0.5,0.1,0.7,0.6,0.6c1.3,0,2.6,0,3.9,0c0.4,0,0.6-0.2,0.6-0.6c0-6.3,0-12.5,0-18.8
c0-0.5-0.2-0.6-0.7-0.6c-1.3,0-2.5,0-3.8,0c-0.5,0-0.7,0.2-0.7,0.7c0,2.1,0,4.1,0,6.2c0,0.5-0.1,0.6-0.6,0.6c-1.6,0-3.2,0-4.8,0
c-0.6,0-0.7-0.1-0.7-0.7c0-2,0-4,0-6c0-0.6-0.2-0.7-0.7-0.7c-1.2,0-2.5,0-3.7,0c-0.6,0-0.8,0.2-0.8,0.8
C104.2,33.5,104.1,36.5,104.1,39.6z M125.1,39.6c0,3.1,0,6.2,0,9.3c0,0.5,0.1,0.6,0.6,0.6c4,0,7.9,0,11.9,0c0.5,0,0.6-0.1,0.6-0.6
c0-1,0-2,0-3c0-0.6-0.1-0.7-0.7-0.7c-2.2,0-4.4,0-6.7,0c-0.4,0-0.6-0.1-0.6-0.6c0-0.7,0-1.5,0-2.2c0-1,0-1,1-1c1.6,0,3.3,0,4.9,0
c0.5,0,0.7-0.1,0.7-0.7c0-1,0-2,0-3c0-0.5-0.1-0.6-0.6-0.6c-1.8,0-3.6,0-5.4,0c-0.4,0-0.6-0.1-0.6-0.6c0-0.7,0-1.4,0-2.1
c0-0.5,0.1-0.7,0.7-0.7c2.1,0,4.3,0,6.4,0c0.5,0,0.6-0.1,0.6-0.6c0-1,0-2,0-3c0-0.6-0.2-0.7-0.7-0.7c-3.8,0-7.6,0-11.4,0
c-0.6,0-0.8,0.2-0.8,0.8C125.1,33.5,125.1,36.6,125.1,39.6z M142.4,39.6c0,3.1,0,6.2,0,9.4c0,0.4,0,0.7,0.6,0.6c3.9,0,7.8,0,11.7,0
c0.4,0,0.6-0.2,0.6-0.6c0-1,0-2.1,0-3.1c0-0.5-0.2-0.6-0.6-0.6c-2.1,0-4.1,0-6.2,0c-0.6,0-0.8-0.2-0.8-0.8c0-4.7,0-9.4,0-14.1
c0-0.6-0.2-0.8-0.8-0.8c-1.2,0-2.4,0-3.6,0c-0.6,0-0.8,0.2-0.8,0.8C142.4,33.4,142.4,36.5,142.4,39.6z"/>
</g>
<g>
<polygon class="st1" points="484.8,113.6 495.5,122.1 488.4,104.5 "/>
<path class="st1" d="M515.4,115.2c0-15.2-12.3-27.5-27.5-27.5c-15.2,0-27.5,12.3-27.5,27.5c0,15.2,12.3,27.5,27.5,27.5
C503.1,142.7,515.4,130.4,515.4,115.2L515.4,115.2z M499.2,128.9c-0.5,0-0.9-0.2-1.5-0.7l-14.2-11.5l-4.8,11.9h-4.1l12-28.9
c0.3-0.8,1-1.2,1.7-1.2c0.8,0,1.4,0.4,1.7,1.2l10.9,26.3h0c0.1,0.3,0.2,0.6,0.2,0.8C501.2,128.1,500.3,128.9,499.2,128.9z"/>
</g>
<path class="st1" d="M467.2,168c-0.3,0-0.5-0.1-0.7-0.3l-8.4-11.1v11.3h-1.9v-14c0-0.6,0.5-1,1-1c0.3,0,0.6,0.1,0.8,0.4l8.4,11.1
v-11.3h1.9V167C468.2,167.5,467.7,168,467.2,168C467.2,168,467.2,168,467.2,168 M478.3,168.1c-1.9,0-3.9-0.4-5.8-1.1l0.5-1.6
c1.7,0.6,3.6,1,5.4,1c2.4,0,3.7-0.9,3.7-2.1c0-1.1-1-1.7-4.4-3.3c-3.4-1.6-4.7-2.6-4.7-4.6c0-2.5,1.9-3.5,5.6-3.5
c1.5,0,3.8,0.3,5.2,0.7l-0.3,1.6c-1.6-0.4-3.2-0.6-4.8-0.6c-2.6,0-3.6,0.5-3.6,1.7c0,1.2,0.8,1.7,4.4,3.4c3.8,1.8,4.7,2.6,4.7,4.5
C484,166.8,481.5,168.1,478.3,168.1 M488.4,153.1h2v14.8h-2V153.1z M503.7,161h-4.9v5h4.9c1.7,0,2.7-1.1,2.7-2.6
C506.4,162,505.3,161,503.7,161 M502.7,154.6h-4v4.7h4c1.6,0,2.8-1,2.8-2.4C505.4,155.5,504.4,154.6,502.7,154.6 M503.7,167.7h-6
c-0.6,0-1-0.4-1-1v-12.8c0-0.6,0.5-1,1-1h4.9c3,0,4.8,1.5,4.8,3.8c0,1.3-0.7,2.4-1.9,3.1c1.7,0.5,2.8,1.9,2.8,3.6
C508.4,165.8,506.5,167.7,503.7,167.7 M514.2,167.5c-0.5,0-1-0.5-1-1v-13.8h2v13h7.9v1.8L514.2,167.5z M532.4,167.6
c-4.1,0-6.5-1.5-6.5-4.6c0-1.4,0.8-2.8,2.4-3.5c-1.3-0.8-1.9-1.9-1.9-3.2c0-2.8,2.1-4.1,6.1-4.1c1.6,0,3.2,0.2,4.8,0.5l-0.2,1.6
c-1.7-0.3-3.2-0.4-4.7-0.4c-2.6,0-4,0.7-4,2.4c0,1.4,1.3,2.4,3,2.4h3.4c0.5,0,0.8,0.4,0.9,0.8c0,0,0,0,0,0c0,0.5-0.4,0.9-0.9,0.9
h-3.7c-1.9,0-3.2,1-3.2,2.4c0,2.2,2,2.8,4.5,2.8c1.4,0,3.2-0.2,4.7-0.5l0.3,1.6C535.8,167.4,534.1,167.6,532.4,167.6 M445.2,156
l3.5,8.7l-5.3-4.2L445.2,156z M451.4,166.7l-5.4-13.1c-0.2-0.4-0.5-0.6-0.8-0.6c-0.4,0-0.7,0.2-0.9,0.6l-5.9,14.8l2-0.4l2.3-5.9
l7,5.7c0.3,0.2,0.5,0.3,0.7,0.3c0.5,0,1-0.4,1-1c0,0,0,0,0,0C451.4,167,451.4,166.9,451.4,166.7L451.4,166.7z"/>
<g>
<g>
<g>
<g>
<path class="st2" d="M792.7,209c-0.2,0-0.2-0.1-0.1-0.2l1-1.3c0.1-0.1,0.3-0.2,0.5-0.2h16.6c0.2,0,0.2,0.1,0.1,0.3l-0.8,1.2
c-0.1,0.1-0.3,0.3-0.5,0.3L792.7,209z"/>
</g>
</g>
</g>
<g>
<g>
<g>
<path class="st2" d="M785.6,213.3c-0.2,0-0.2-0.1-0.1-0.2l1-1.3c0.1-0.1,0.3-0.2,0.5-0.2h21.3c0.2,0,0.3,0.1,0.2,0.3l-0.4,1.1
c0,0.2-0.2,0.3-0.4,0.3L785.6,213.3z"/>
</g>
</g>
</g>
<g>
<g>
<g>
<path class="st2" d="M796.9,217.5c-0.2,0-0.2-0.1-0.1-0.3l0.7-1.2c0.1-0.1,0.3-0.3,0.5-0.3h9.3c0.2,0,0.3,0.1,0.3,0.3l-0.1,1.1
c0,0.2-0.2,0.3-0.3,0.3L796.9,217.5z"/>
</g>
</g>
</g>
<g>
<g id="CXHf1q_2_">
<g>
<g>
<path class="st2" d="M845.3,208.1c-2.9,0.7-4.9,1.3-7.8,2.1c-0.7,0.2-0.7,0.2-1.4-0.5c-0.7-0.8-1.2-1.3-2.2-1.8
c-2.9-1.4-5.8-1-8.4,0.7c-3.2,2.1-4.8,5.1-4.8,8.9c0,3.7,2.6,6.8,6.3,7.3c3.2,0.4,5.8-0.7,7.9-3.1c0.4-0.5,0.8-1.1,1.3-1.7
c-1.7,0-3.8,0-9,0c-1,0-1.2-0.6-0.9-1.4c0.6-1.4,1.7-3.9,2.4-5.1c0.1-0.3,0.5-0.7,1.2-0.7c2.4,0,11.1,0,17,0
c-0.1,1.3-0.1,2.5-0.3,3.8c-0.5,3.4-1.8,6.4-3.8,9.1c-3.4,4.4-7.7,7.2-13.3,7.9c-4.6,0.6-8.8-0.3-12.5-3.1
c-3.4-2.6-5.4-6.1-5.9-10.3c-0.6-5.1,0.9-9.6,4-13.7c3.3-4.3,7.7-7.1,13-8.1c4.4-0.8,8.6-0.3,12.3,2.3c2.5,1.6,4.2,3.9,5.4,6.6
C846,207.8,845.8,208,845.3,208.1z"/>
</g>
<g>
<path class="st2" d="M860.7,233.9c-4.2-0.1-8.1-1.3-11.4-4.1c-2.7-2.4-4.5-5.4-5-9c-0.8-5.3,0.6-9.9,3.8-14.1
c3.4-4.5,7.5-6.8,13-7.8c4.8-0.8,9.2-0.4,13.3,2.4c3.7,2.5,6,5.9,6.6,10.4c0.8,6.3-1,11.4-5.4,15.8c-3.1,3.1-6.9,5.1-11.2,6
C863.2,233.7,861.9,233.8,860.7,233.9z M871.8,215.1c0-0.6,0-1.1-0.1-1.5c-0.8-4.6-5.1-7.2-9.5-6.2c-4.3,1-7.1,3.7-8.2,8.1
c-0.8,3.6,0.9,7.3,4.3,8.8c2.6,1.1,5.1,1,7.6-0.3C869.6,222.1,871.6,219.1,871.8,215.1z"/>
</g>
</g>
</g>
</g>
</g>
<polygon class="st3" points="80.4,39 11.4,39 11.4,33.1 0,40.5 11.4,47.9 11.4,42 80.4,42 "/>
<polygon class="st3" points="205,42 419,42 419,47.9 430.4,40.5 419,33.1 419,39 205,39 "/>
<polygon class="st1" points="423.4,128 11.4,128 11.4,122.1 0,129.5 11.4,136.9 11.4,131 423.4,131 "/>
<polygon class="st2" points="771.4,216 11.4,216 11.4,210.1 0,217.5 11.4,224.9 11.4,219 771.4,219 "/>
<polygon class="st1" points="552.4,131 1109.4,131 1109.4,136.9 1120.9,129.5 1109.4,122.1 1109.4,128 552.4,128 "/>
<polygon class="st2" points="898.4,218 1109.4,218 1109.4,223.9 1120.9,216.5 1109.4,209.1 1109.4,215 898.4,215 "/>
<path class="st3" d="M143.5,11.6c2.2,0.6,4.4,1,6.5,1.7c2.1,0.7,4.1,1.8,6.1,2.7c0.4-0.7,0.7-1.5,1.2-2.3c1-1.9,2.3-3.5,4.1-4.8
c0.6-0.4,1.2-0.8,1.8-1c1-0.4,1.8,0.2,1.8,1.3c0,0.8-0.2,1.7-0.4,2.5c-0.9,2.5-2.4,4.7-4.4,6.5c-0.2,0.2-0.4,0.4-0.7,0.6
c1.9,1.8,3.6,3.7,5,6.1c-0.8,0.5-1.5,0.9-2.3,1.4c-1.3,0.8-1.2,0.8-2.1-0.4c-3.8-5.3-8.9-8.6-15.4-9.6c-9.5-1.4-17.2,2-22.9,9.7
c-0.1,0.1-0.2,0.3-0.4,0.5c-1.2-0.8-2.3-1.5-3.5-2.3c1.4-2.2,3.1-4.1,5-5.8c-0.7-0.8-1.4-1.5-2.1-2.3c-1.4-1.8-2.5-3.7-2.9-5.9
c-0.1-0.4-0.1-0.8-0.1-1.2c0.1-1,0.8-1.5,1.8-1.1c0.9,0.4,1.8,0.9,2.5,1.5c1.8,1.5,3.1,3.4,4.1,5.6c0.1,0.2,0.2,0.4,0.3,0.6
c0,0,0.1,0.1,0.1,0.1c0.2-0.1,0.3-0.2,0.5-0.3c3.1-1.9,6.6-3,10.2-3.5c0.4-0.1,0.8-0.1,1.2-0.1c0.8-0.1,0.8-0.1,0.7-0.9
c-0.5-2.6-0.5-5.1,0.2-7.7c0.2-0.8,0.6-1.6,1.1-2.3c0.6-0.8,1.4-0.8,2,0c0.9,1,1.2,2.3,1.4,3.6c0.4,2.3,0.3,4.6-0.2,6.8
C143.5,11.5,143.5,11.6,143.5,11.6z"/>
<path class="st3" d="M122.4,59.7c-1.4-1.6-2.7-3.1-4.2-4.7c1.3-0.9,2.4-1.7,3.5-2.5c4.9,6.4,11.2,9.9,19.2,9.9
c8,0,14.3-3.5,19.1-9.9c1.1,0.8,2.3,1.6,3.5,2.4c-1.3,1.5-2.5,2.9-3.9,4.5c0.2,0.1,0.4,0.2,0.6,0.3c2.1,2,3.7,4.3,4.5,7.2
c0.1,0.5,0.2,1,0.2,1.6c0,1.2-0.8,1.8-1.9,1.3c-0.9-0.4-1.7-0.9-2.4-1.5c-1.8-1.5-3.1-3.5-4.1-5.6c-0.1-0.2-0.2-0.4-0.4-0.7
c-3.8,2.5-8,4-12.6,4.5c0.1,0.9,0.2,1.7,0.3,2.6c0.2,2.2,0,4.4-0.8,6.5c-0.2,0.5-0.5,1-0.9,1.4c-0.5,0.6-1.3,0.6-1.7,0
c-0.5-0.7-1-1.6-1.3-2.5c-0.7-2.5-0.7-5-0.2-7.6c0-0.1,0-0.2,0-0.4c-4.6-0.4-8.8-1.7-12.8-4.2c-0.1,0.3-0.2,0.5-0.3,0.7
c-1.1,2.2-2.6,4.2-4.5,5.8c-0.6,0.4-1.2,0.8-1.9,1c-1,0.4-1.8-0.2-1.8-1.3c0-0.8,0.2-1.6,0.4-2.4c0.8-2.3,2.1-4.2,3.8-6
c0.1-0.1,0.3-0.3,0.4-0.4C122.4,59.8,122.4,59.7,122.4,59.7z"/>
<path class="st3" d="M174,36.5c-0.1,0.2-0.2,0.4-0.2,0.6c-1.2,3.4-2.5,6.8-3.7,10.1c-0.2,0.5-0.4,0.7-0.9,0.7c-0.5,0-0.9,0-1.4,0
c-0.5,0-0.7-0.1-0.9-0.6c-1.2-3.4-2.4-6.8-3.6-10.2c-0.1-0.2-0.2-0.4-0.3-0.6c-0.1,0-0.1,0-0.2,0c0,0.2,0,0.3,0,0.5
c0.6,3.4,0.7,6.9,0.6,10.3c0,0.6,0,1.2,0,1.8c0,0.3-0.1,0.5-0.5,0.5c-1.2,0-2.4,0-3.6,0c-0.3,0-0.5-0.1-0.5-0.5c0-0.3,0-0.7,0-1
c0-5.9,0-11.8,0-17.6c0-0.9,0-0.9,0.8-0.9c1.4,0,2.7,0,4.1,0c0.5,0,0.7,0.1,0.9,0.6c1.2,3.5,2.5,7.1,3.7,10.6
c0.1,0.2,0.1,0.3,0.2,0.5c0.1,0,0.1,0,0.2,0c0.1-0.2,0.2-0.4,0.2-0.6c1.2-3.5,2.4-7.1,3.6-10.6c0.1-0.4,0.3-0.5,0.7-0.5
c1.5,0,2.9,0,4.4,0c0.4,0,0.6,0.2,0.6,0.6c0,6.3,0,12.5,0,18.8c0,0.5-0.1,0.6-0.6,0.6c-1.2,0-2.3,0-3.5,0c-0.4,0-0.6-0.1-0.6-0.6
c0-2.3,0-4.6,0-6.9c0.1-1.7,0.4-3.3,0.5-5c0-0.2,0-0.4,0-0.6C174.2,36.5,174.1,36.5,174,36.5z"/>
<path class="st3" d="M104.1,39.6c0-3.1,0-6.2,0-9.3c0-0.6,0.2-0.8,0.8-0.8c1.2,0,2.5,0,3.7,0c0.5,0,0.8,0.1,0.7,0.7c0,2,0,4,0,6
c0,0.6,0.2,0.7,0.7,0.7c1.6,0,3.2,0,4.8,0c0.5,0,0.6-0.2,0.6-0.6c0-2.1,0-4.1,0-6.2c0-0.5,0.2-0.7,0.7-0.7c1.3,0,2.5,0,3.8,0
c0.5,0,0.7,0.2,0.7,0.6c0,6.3,0,12.5,0,18.8c0,0.4-0.1,0.6-0.6,0.6c-1.3,0-2.6,0-3.9,0c-0.5,0-0.6-0.2-0.6-0.6c0-2.2,0-4.5,0-6.7
c0-0.5-0.1-0.7-0.7-0.7c-1.6,0-3.2,0-4.8,0c-0.5,0-0.7,0.1-0.7,0.7c0,2.2,0,4.5,0,6.7c0,0.5-0.2,0.6-0.6,0.6c-1.3,0-2.6,0-3.9,0
c-0.5,0-0.6-0.2-0.6-0.6C104.2,45.8,104.1,42.7,104.1,39.6z"/>
<path class="st3" d="M125.1,39.6c0-3.1,0-6.1,0-9.2c0-0.6,0.1-0.8,0.8-0.8c3.8,0,7.6,0,11.4,0c0.6,0,0.8,0.1,0.7,0.7c0,1,0,2,0,3
c0,0.5-0.1,0.6-0.6,0.6c-2.1,0-4.3,0-6.4,0c-0.5,0-0.7,0.2-0.7,0.7c0,0.7,0,1.4,0,2.1c0,0.4,0.1,0.6,0.6,0.6c1.8,0,3.6,0,5.4,0
c0.5,0,0.6,0.2,0.6,0.6c0,1,0,2,0,3c0,0.6-0.2,0.7-0.7,0.7c-1.6,0-3.3,0-4.9,0c-1,0-1,0-1,1c0,0.7,0,1.5,0,2.2
c0,0.4,0.1,0.6,0.6,0.6c2.2,0,4.4,0,6.7,0c0.6,0,0.7,0.2,0.7,0.7c0,1,0,2,0,3c0,0.5-0.2,0.6-0.6,0.6c-4,0-7.9,0-11.9,0
c-0.5,0-0.6-0.2-0.6-0.6C125.1,45.8,125.1,42.7,125.1,39.6z"/>
<path class="st3" d="M142.4,39.6c0-3.1,0-6.1,0-9.2c0-0.6,0.2-0.8,0.8-0.8c1.2,0,2.4,0,3.6,0c0.6,0,0.8,0.2,0.8,0.8
c0,4.7,0,9.4,0,14.1c0,0.6,0.1,0.8,0.8,0.8c2.1,0,4.1,0,6.2,0c0.5,0,0.7,0.1,0.6,0.6c0,1,0,2.1,0,3.1c0,0.4-0.1,0.6-0.6,0.6
c-3.9,0-7.8,0-11.7,0c-0.5,0-0.6-0.2-0.6-0.6C142.4,45.8,142.4,42.7,142.4,39.6z"/>
</svg>
<h3 class="of-heading of-heading-md">Terminology</h3>
<ul>
<li><strong>Operator</strong> - the custom controller installed on a Kubernetes cluster</li>
<li><strong>Operand</strong> - the managed workload provided by the Operator as a service</li>
<li><strong>Custom Resource (CR)</strong> - an instance of the CustomResourceDefinition the Operator ships that represents the Operand or an Operation on an Operand (also known as primary resources)</li>
<li><strong>Managed resources</strong> - the Kubernetes objects or off-cluster services the Operator uses to constitute an Operand (also known as secondary resources)</li>
<li><strong>Custom Resource Definition (CRD)</strong> - an API of the Operator, providing the blueprint and validation rules for Custom Resources</li>
</ul>
</div>
<div class="of-capability-level__item of-section-separator">
<h3 class="of-heading of-heading--xl">Level Ⅰ: basic install</h3>
<p>The Operator offers the following basic features:</p>
<table class="of-capability-level__table of-capability-level__table__level-1">
<thead>
<tr>
<th scope="col">Feature</th>
<th scope="col">Example</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="Feature">
<h4 class="of-heading of-heading--sm">Installation of the workload</h4>
<ul class="of-list">
<li>Operator deploys an Operand or configures off-cluster resources</li>
<li>Operator waits for managed resources to reach a healthy state</li>
<li>Operator conveys readiness of application or managed resources to the user leveraging the status block of the Custom Resource</li>
</ul>
</td>
<td data-label="Example"><p>An Operator deploys a database by creating Deployment, ServiceAccount, RoleBinding, ConfigMap, PersistentVolumeClaim and Secret object, initializes an empty database schema and signals readiness of the database to accept queries.</p></td>
</tr>
<tr>
<td scope="row" data-label="Feature">
<h4 class="of-heading of-heading--sm">Configuration of the workload</h4>
<ul class="of-list">
<li>Operator provides configuration via the spec section of the Custom Resource</li>
<li>Operator reconciles configuration and updates to it with the status of the managed resources</li>
</ul>
</td>
<td data-label="Example">
<p>An Operator, managing a database, offers increasing the capacity of the database by resizing the underlying PersistentVolumeClaim based on changes the databases Custom Resource instance.</p>
</td>
</tr>
</tbody>
</table>
<h3 class="of-heading of-heading--md of-heading--secondary">GUIDING QUESTIONS TO DETERMINE OPERATOR REACHING LEVEL I</h3>
<ol class="of-ordered-list">
<li>What installation configuration can be set in the CR?</li>
<li>What additional installation configuration could still be added?</li>
<li>Can you set operand configuration in the CR? If so, what configuration is supported for each operand?</li>
<li>Does the managed application / workload get updated in a non-disruptive fashion when the configuration of the CR is changed?</li>
<li>Does the status of the CR reflect that configuration changes are currently applied?</li>
<li>What additional operand configuration could still be added?</li>
<li>Do all of the instantiated CRs include a status block? If so, does it provide enough insight to the user about the application state?</li>
<li>Do all of your CRs have documentation listing valid values and mandatory fields?</li>
</ol>
</div>
<div class="of-capability-level__item of-section-separator">
<h3 class="of-heading of-heading--xl">Level Ⅱ: Seamless Upgrades</h3>
<p>The Operator offers the following features related to upgrades:</p>
<table class="of-capability-level__table of-capability-level__table__level-2">
<thead>
<tr>
<th scope="col">Feature</th>
<th scope="col">Example</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="Feature">
<h4 class="of-heading of-heading--sm">Upgrade of the managed workload</h4>
<ul class="of-list">
<li>Operand can be upgraded in the process of upgrading the Operator, or</li>
<li>Operand can be upgraded as part of changing the CR</li>
<li>Operator understands how to upgrade older versions of the Operand, managed previously by an older version of the Operator</li>
</ul>
</td>
<td data-label="Example"><p>An Operator deploys a database by creating Deployment, ServiceAccount, RoleBinding, ConfigMap, PersistentVolumeClaim and Secret object, initializes an empty database schema and signals readiness of the database to accept queries.</p></td>
</tr>
<tr>
<td scope="row" data-label="Feature">
<h4 class="of-heading of-heading--sm">Upgrade of the Operator</h4>
<ul class="of-list">
<li>Operator can be upgraded seamlessly and can either still manage older versions of the Operand or update them</li>
<li>Operator conveys inability to manage an unsupported version of the Operand in the status section of the CR</li>
</ul>
</td>
<td data-label="Example">
<p>An Operator managing a database can update an existing database from a previous to a newer version without data loss. The Operator might do so as part of a configuration change or as part of an update of the Operator itself.</p>
</td>
</tr>
</tbody>
</table>
<h3 class="of-heading of-heading--md of-heading--secondary">GUIDING QUESTIONS TO DETERMINE OPERATOR REACHING LEVEL Ⅱ</h3>
<ol class="of-ordered-list">
<li>Can your Operator upgrade your Operand?</li>
<li>Does your Operator upgrade your Operand during updates of the Operator?</li>
<li>Can your Operator manage older Operand version versions?</li>
<li>Is the Operand upgrade potentially disruptive?</li>
<li>If there is downtime during an upgrade, does the Operator convey this in the status of the CR?</li>
</ol>
</div>
<div class="of-capability-level__item of-section-separator">
<h3 class="of-heading of-heading--xl">Level Ⅲ: Full lifecycle</h3>
<p>The Operator offers one or more of the following lifecycle management features:</p>
<table class="of-capability-level__table of-capability-level__table__level-3">
<thead>
<tr>
<th scope="col">Feature</th>
<th scope="col">Example</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="Feature">
<p><strong>Operator provides the ability to create backups of the Operand</strong></p>
<p><strong>Operator is able to restore a backup of an Operand</strong></p>
<p><strong>Operator orchestrates complex re-configuration flows on the Operand</strong></p>
<p><strong>Operator implements fail-over and fail-back of clustered Operands</strong></p>
<p><strong>Operator supports add/removing members to a clustered Operand</strong></p>
<p><strong>Operator enables application-aware scaling of the Operand</strong></p>
</td>
<td data-label="Example"><p>An Operator managing a database provides the ability to create an application consistent backup of the data by flushing the database log and quiescing the write activity to the database files.</p></td>
</tr>
</tbody>
</table>
<h3 class="of-heading of-heading--md of-heading--secondary">GUIDING QUESTIONS TO DETERMINE OPERATOR REACHING LEVEL Ⅲ</h3>
<ol class="of-ordered-list">
<li>Does your Operator support backing up the Operand?</li>
<li>Does your Operator support restoring an Operand from a backup and get it under management again?</li>
<li>Does your Operator wait for reconfiguration work to be finished and in the expected sequence?</li>
<li>Is your Operator taking cluster quorum into account, if present?</li>
<li>Does your Operator allow adding/removing read-only slave instances of your Operator?</li>
</ol>
</div>
<div class="of-capability-level__item of-section-separator">
<h3 class="of-heading of-heading--xl">Level Ⅳ: Deep insights</h3>
<table class="of-capability-level__table of-capability-level__table__level-4">
<thead>
<tr>
<th scope="col">Feature</th>
<th scope="col">Example</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="Feature">
<h4 class="of-heading of-heading--sm">Monitoring</h4>
<ul class="of-list">
<li>Operator exposing metrics about its health</li>
<li>Operator exposes health and performance metrics about the Operand</li>
</ul>
<h4 class="of-heading of-heading--sm">Alerting and Events</h4>
<ul class="of-list of-capability-level__table__footnotes">
<li><a aria-describedby="footnote-label" href="#alerts">Operand sends useful alerts</a></li>
<li><a aria-describedby="footnote-label" href="#events">Custom Resources emit custom events</a></li>
</ul>
<h4 class="of-heading of-heading--sm">Metering</h4>
<ul class="of-list">
<li>Operator leverages Operator Metering</li>
</ul>
</td>
<td data-label="Example"><p>A database Operator continues to parse the logging output of the database software and understands noteworthy log events, e.g. running out of space for database files and produces alerts. The operator also instruments the database and exposes application level, e.g. database queries per second.</p></td>
</tr>
</tbody>
</table>
<footer class="of-table-footnotes">
<ol>
<li id="alerts">Aim to have as few alerts as possible, by alerting on symptoms that are associated with end-user pain rather than trying to catch every possible way that pain could be caused. Alerts should link to relevant consoles and make it easy to figure out which component is at fault</li>
<li id="events">Native k8s objects emit events (“Events” objects) as their states change. Your operator should do similar for state changes related to your operand. “Custom”, here, means that it should emit events specific to your Operator/Operand outside of the events already emitted by their deployment methodology. This, in conjunction with status descriptors, give much needed visibility into actions taken by your Operator/Operand. Operators are codified domain-specific knowledge. Your end user should not need this domain-specific knowledge to gain visibility into what’s happening with their resource.</li>
</ol>
</footer>
<h3 class="of-heading of-heading--md of-heading--secondary">GUIDING QUESTIONS TO DETERMINE OPERATOR REACHING LEVEL Ⅳ</h3>
<ol class="of-ordered-list">
<li>Does your Operator expose a health metrics endpoint?</li>
<li>Does your Operator expose Operand alerts?</li>
<li>Does your Operator watch the Operand to create alerts?</li>
<li>Does your Operator emit custom Kubernetes events?</li>
<li>Does your Operator expose Operand performance metrics?</li>
</ol>
</div>
<div class="of-capability-level__item">
<h3 class="of-heading of-heading--xl">Level Ⅴ: Auto Pilot</h3>
<table class="of-capability-level__table of-capability-level__table__level-5">
<thead>
<tr>
<th scope="col">Feature</th>
<th scope="col">Example</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="Feature">
<h4 class="of-heading of-heading--sm">Auto Scaling</h4>
<ul class="of-list">
<li>Operator scales the Operand up under increased load based on Operand metric</li>
<li>Operator scales the Operand down below a certain load based on Operand metric</li>
</ul>
<h4 class="of-heading of-heading--sm">Auto-healing</h4>
<ul class="of-list of-capability-level__table__footnotes">
<li>Operator can automatically heal unhealthy Operands based on Operand metrics/alerts/logs</li>
<li>Operator can prevent the Operand from transitioning into an unhealthy state based on Operand metrics</li>
</ul>
<h4 class="of-heading of-heading--sm">Auto-tuning</h4>
<ul class="of-list">
<li>Operator is able to automatically tune the Operand to a certain workload pattern</li>
<li>Operator dynamically shifts workloads onto best suited nodes</li>
</ul>
<h4 class="of-heading of-heading--sm">Abnormality detection</h4>
<ul class="of-list">
<li>Operator determines deviations from a standard performance profile</li>
</ul>
</td>
<td data-label="Example"><p>A database Operator monitors the query load of the database and automatically scales additional read-only slave replicas up and down. The Operator also detects subpar index performance and automatically rebuilds the index in times of reduced load. Further, the Operator understands the normal performance profile of the database and creates alerts on excessive amount of slow queries. In the event of slow queries and high disk latency the Operator automatically transitions the database files to another PersistentVolume of a higher performance class.</p></td>
</tr>
</tbody>
</table>
<footer class="of-table-footnotes">
<ol>
<li id="alerts">Aim to have as few alerts as possible, by alerting on symptoms that are associated with end-user pain rather than trying to catch every possible way that pain could be caused. Alerts should link to relevant consoles and make it easy to figure out which component is at fault</li>
<li id="events">Native k8s objects emit events (“Events” objects) as their states change. Your Operator should do similar for state changes related to your operand. “Custom”, here, means that it should emit events specific to your Operator/Operand outside of the events already emitted by their deployment methodology. This, in conjunction with status descriptors, give much needed visibility into actions taken by your Operator/Operand. Operators are codified domain-specific knowledge. Your end user should not need this domain-specific knowledge to gain visibility into what’s happening with their resource.</li>
</ol>
</footer>
<h3 class="of-heading of-heading--md of-heading--secondary">GUIDING QUESTIONS TO DETERMINE OPERATOR REACHING LEVEL Ⅴ</h3>
<ol class="of-ordered-list">
<li>Can your Operator read metrics such as requests per second or other relevant metrics and auto-scale horizontally or vertically, i.e., increasing the number of pods or resources used by pods?</li>
<li>Based on question number 1 can it scale down or decrease the number of pods or the total amount of resources used by pods?</li>
<li>Based on the deep insights built upon level 4 capabilities can your Operator determine when an operand became unhealthy and take action such as redeploying, changing configurations, restoring backups etc.?</li>
<li>Again considering that with level 4 deep insights the Operator has information to learn the performance baseline dynamically and can learn the best configurations for peak performance can it adjust the configurations to do so?</li>
<li>Can it move the workloads to better nodes, storage or networks to do so?</li>
<li>Can it detect and alert when anything is working below the learned performance baseline that can’t be corrected automatically?</li>
</ol>
</div>
</section>