0:00:00.000,0:00:18.450
35C3 Vorspannmusik
0:00:18.450,0:00:23.920
Herald: Hallo, hallo! Okay, unser nächster[br]Speaker hier ist der Tobias von "Code for
0:00:23.920,0:00:30.890
Münster" und hat das Thema Kubernetes[br]Development oder so – und ich habe keine
0:00:30.890,0:00:33.550
Ahnung, was das ist und er konnte es mir so[br]schnell auch nicht wirklich verständlich
0:00:33.550,0:00:37.690
erklären, aber er wird das jetzt für[br]euch sicher ausführlich machen. Also ein
0:00:37.690,0:00:40.939
kleiner Applaus für Tobias bitte.[br]Applause
0:00:40.939,0:00:47.039
Tobias: Vielen Dank! Ja, also ich werde[br]jetzt in ein paar Minuten mal versuchen
0:00:47.039,0:00:51.920
Kubernetes so ein bisschen die[br]Architektur zu erklären und warum ich
0:00:51.920,0:00:58.109
glaube, dass das ein ganz gute Plattform[br]ist um eben in "Code-for-Labs" seine Apps zu
0:00:58.109,0:01:03.569
deployen und dann auch weiter maintainen[br]zu können. Wer von euch weiß ungefähr, was
0:01:03.569,0:01:11.279
Kubernetes ist? Ja top! Und kennt ihr auch[br]alle schon Docker und Container-
0:01:11.279,0:01:15.700
Technologie? Also grundsätzlich, wenn[br]irgendwelche fragen sind, haut die einfach
0:01:15.700,0:01:19.619
zwischendurch raus. Wir können hier auch[br]so ein bisschen, einfach so, Frage-und-Antwort
0:01:19.619,0:01:27.829
machen. Ansonsten fange ich einfach mal so[br]an. In Münster treffen wir uns regelmäßig,
0:01:27.829,0:01:35.039
seit drei Jahren mittlerweile, unter dem[br]Topic "Code for Münster" und ich glaube seit
0:01:35.039,0:01:38.810
zwei Jahren haben wir auch schon ein[br]Kubernetes-Cluster laufen. Ich selber mache
0:01:38.810,0:01:45.929
auch beruflich einiges damit, also auch[br]deswegen habe ich da eigentlich Spaß dran
0:01:45.929,0:01:50.219
und mittlerweile, bei uns in Münster, sind[br]glaube ich auch schon so drei Leute, die
0:01:50.219,0:01:54.890
theoretisch Kubernetes betreuen könnten[br]und grundsätzlich jeder der neu irgendwie
0:01:54.890,0:02:02.280
dazu kommt, kommt nicht darum, irgendwie[br]Docker kennen zu lernen, aber hat auch
0:02:02.280,0:02:08.919
durchaus viele Vorteile und ich hoffe die[br]kriege ich jetzt rüber gebracht. Wir können
0:02:08.919,0:02:13.860
mit dem spaßigsten Teil beginnen, da[br]versuche ich was zu zeichnen. Wenn das
0:02:13.860,0:02:17.530
jetzt irgendwie gar nicht klappt, dann habe ich[br]die Zeichnung von gestern aus dem Zug noch,
0:02:17.530,0:02:23.440
die ich Ihnen zeigen könnte. Grundsätzlich[br]zur Architektur von Kubernetes: Es gibt
0:02:23.440,0:02:31.819
da drei Grundprinzipien. Das eine ist das[br]alles, was man gegen die Kubernetes-API
0:02:31.819,0:02:36.569
schicken möchte, also alles was nachher im[br]Cluster laufen soll, das definiert man
0:02:36.569,0:02:43.680
vorher in einer Datei, in einem Manifest. Das ist[br]klassischerweise in YAML, kann auch JSON
0:02:43.680,0:02:47.319
sein, aber es ist einfach ein[br]strukturiertes Format. Ich kann mal kurz
0:02:47.319,0:02:56.489
ein Beispiel, glaube ich, auch zeigen. Hier,[br]das sind alle unsere Sachen, die wir bei
0:02:56.489,0:03:06.110
uns im Cluster laufen lassen und eine[br]Beispiel-App hier. Da haben wir halt einige
0:03:06.110,0:03:11.490
Dateien. Die wichtigste ist diese hier, das [br]sieht am Anfang ein bisschen wild aus,
0:03:11.490,0:03:16.090
im Endeffekt, wenn man Docker kennt und[br]Containerisierung, ist das die Zeile. Man
0:03:16.090,0:03:22.189
sagt dieses Image soll ausgeführt werden[br]und kann dazu noch ein paar Dinge angeben
0:03:22.189,0:03:25.630
und dann gibt es noch so weitere[br]Abstraktions-Geschichten, wie Service und
0:03:25.630,0:03:29.629
Ingress, erzähl ich gleich auch noch was[br]dazu.
0:03:29.629,0:03:35.369
Am Anfang mag das alles ein[br]bisschen viel sein, hat aber den Vorteil,
0:03:35.369,0:03:39.650
dass eben egal auf welchem Cloud-Provider[br]man läuft oder ob man selber Server
0:03:39.650,0:03:47.090
betreibt, man quasi nur diese Kubernetes-[br]Abstraktionsschicht braucht und man
0:03:47.090,0:03:54.740
sich gegenseitig aushelfen kann, gerade[br]speziell in diese "Code-For-Labs". Also
0:03:54.740,0:04:01.269
diese Manifeste kann die Kubernetes-API[br]verstehen. Das heißt, am Anfang haben wir
0:04:01.269,0:04:15.000
hier - ach so - unsere YAML-Dateien und dann[br]die Kubernetes-API, die läuft auf einem
0:04:15.000,0:04:27.031
Server. Das Ganze ist dann die Control[br]Plane von Kubernetes, quasi das ist das
0:04:27.031,0:04:32.320
Herzstück und alles was wir machen, über[br]die Kommandozeile oder Ähnliches, geht über
0:04:32.320,0:04:38.580
den API-Server. Der API-Server hat dann[br]noch eine Datenbank im Hintergrund, weil er
0:04:38.580,0:04:45.220
selbst einfach nicht viel macht. Der nimmt[br]einfach nur die Manifeste entgegen, legt die in
0:04:45.220,0:04:51.580
der Datenbank ab und verteilt die dann[br]eventuell an Controller, die es dann noch
0:04:51.580,0:04:58.000
gibt und davon kann's dann mehrere geben.[br]Also an sich, die Struktur, serverseitig, ist
0:04:58.000,0:05:06.650
relativ simpel. Dann hat man noch weitere[br]Server, die nennen wir einfach nur "Nodes",
0:05:06.650,0:05:14.790
und jeder von diesen Servern hat eine[br]Software laufen, nennt sich "Cubelet", und der
0:05:14.790,0:05:25.610
API-Server unterhält sich mit denen dann[br]in erster Linie und, ja, das ist im Grunde
0:05:25.610,0:05:28.970
die Grundstruktur. Auf all diesen Nodes[br]läuft dann Docker oder eine andere
0:05:28.970,0:05:36.550
Containerisierungsform und die Idee, das[br]Besondere jetzt oder ein weiterer
0:05:36.550,0:05:40.240
Architekturpunkt von Kubernetes ist, dass[br]er ständig vergleicht: Was möchten wir
0:05:40.240,0:05:47.380
eigentlich, dass auf dem Cluster läuft –[br]das sind eben unsere YAML Manifeste –
0:05:47.380,0:05:52.430
und über die Cubelets kann er eben erfragen:[br]Was läuft wirklich? Also sobald es eine
0:05:52.430,0:05:58.410
Differenz gibt, kann er hingehen und[br]versuchen, das irgendwie auszugleichen. Also
0:05:58.410,0:06:02.550
wenn irgendeine App abgestürzt ist oder zu[br]viel Speicher gebraucht hat oder ist
0:06:02.550,0:06:07.370
Netzwerkprobleme gab, dann kriegt er das[br]mit. Das ist eventuell
0:06:07.370,0:06:12.460
ein Unterschied gegenüber einem Setup, wo[br]man selber Docker-Container startet oder
0:06:12.460,0:06:27.540
über "Docker Compose" oder Ähnliches. Gibt's so[br]weit schon mal Fragen? Sonst ist das im
0:06:27.540,0:06:32.230
Grunde das Wichtigste, was so Kubernetes[br]angeht. Und es soll jetzt ja auch nicht
0:06:32.230,0:06:37.810
jeder in den Code-for-Labs komplett das [br]Bedienen von Kubernetes
0:06:37.810,0:06:43.660
beherrschen müssen. Das ist bei uns in[br]Münster auch nicht der Fall, aber trotzdem
0:06:43.660,0:06:47.750
hilft es, dass man mit mehreren Leuten[br]gemeinsam Dinge auf dem Cluster spielt
0:06:47.750,0:06:59.190
oder auf Servern laufen lässt. Diese YAML-[br]Manifeste kann man nämlich sehr gut
0:06:59.190,0:07:05.200
einfach alle in einem Git-Repo liegen[br]haben. Diese YAML-Manifeste schickt man
0:07:05.200,0:07:10.510
gegen die Kubernetes-API, indem man auf[br]der Kommandozeile "cubecontrol apply" ausführt,
0:07:10.510,0:07:15.020
kann man rekursiv machen über ganze[br]Verzeichnisse. Und hier bei uns in Münster
0:07:15.020,0:07:20.520
habt ihr eben schon gesehen, das sind quasi[br]die Verzeichnisse mit allen Apps, die wir
0:07:20.520,0:07:27.530
drauf laufen lassen haben und – halt alle[br]Änderungen, die am Server, einem Cluster,
0:07:27.530,0:07:33.160
geschehen sollen, laufen über dieses Repo.[br]Also das heißt: Die Leute stellen Pull-
0:07:33.160,0:07:38.530
Requests, wenn eine neue App rein soll oder[br]wenn irgendwelche Konfigurationen geändert
0:07:38.530,0:07:42.830
werden oder neue Versionen ausgerollt[br]werden soll – und andere können drüber
0:07:42.830,0:07:52.960
schauen, ob das okay ist und das Ganze dann[br]committen, mergen und dann kann man es
0:07:52.960,0:07:57.720
gegen den Cluster spielen. Das heißt, es[br]ist nicht so, dass irgendjemand mit SSH auf
0:07:57.720,0:08:03.440
Maschinen draufgeht und da dann[br]irgendwelche Details konfiguriert und man
0:08:03.440,0:08:07.490
hat nachher mehrere Server und[br]typischerweise weiß keiner so genau wie
0:08:07.490,0:08:14.550
wichtig welche Konfigurationseinstellung[br]ist oder irgendwelche Sicherheitspatches
0:08:14.550,0:08:20.170
jetzt schon drauf sind oder eben nicht. In[br]diesem Kubernetes-Setup können wir
0:08:20.170,0:08:25.400
theoretisch auch hingehen und den ganzen[br]Cluster wegschmeißen, neue Server
0:08:25.400,0:08:29.550
aufsetzen und alles gegen den Server[br]spielen und die Sachen kämen dann wieder
0:08:29.550,0:08:34.559
hoch. Abgesehen von dem Kram, den man in den[br]Datenbanken oder auf dem Filesystem hat, da
0:08:34.559,0:08:39.032
muss man sich dann eben um die Backups[br]kümmern, aber theoretisch ist es ein
0:08:39.032,0:08:48.970
relativ klar strukturierter Ansatz, also[br]man hat gut einsehbar, was auf dem Cluster
0:08:48.970,0:08:54.310
laufen soll und Kubernetes sorgt dann dafür,[br]dass es auch der Fall ist. Man hat einige
0:08:54.310,0:08:59.769
Abstraktionsmöglichkeiten, wenn es um die[br]Domainverwaltung geht oder Let's Encrypt,
0:08:59.769,0:09:05.640
zeig ich gleich kurz. Und man hat quasi[br]dann auch, wenn man sich dieses Repo
0:09:05.640,0:09:13.310
anschaut, dann so ein Audit Log. Also man[br]weiß, was passiert ist, wer wann was gemacht hat,
0:09:13.310,0:09:19.269
sodass man durchaus mit mehreren Leuten[br]gemeinsam so ein Cluster betreiben kann
0:09:19.269,0:09:23.170
und solange ein paar Leute Kubernetes[br]verstehen, können die halt aushelfen und es
0:09:23.170,0:09:33.430
ist nicht irgendwie eine Person, die nur Zugang[br]hat und an der dann alles hängt. Also ein
0:09:33.430,0:09:42.800
Beispiel ist die unsere "Traffics Shiny App".[br]Da kam einer zu uns, der gut R konnte, hatte
0:09:42.800,0:09:46.629
aber noch keine Idee von Docker und meinte,[br]bei ihnen an der Uni gehen sie auch
0:09:46.629,0:09:51.959
einfach per SSH auf die Maschinen und[br]starten da irgendwas und – Aber da
0:09:51.959,0:09:57.579
wir das halt gar nicht mehr machen, haben[br]wir ihm soweit Docker beigebracht – oder es
0:09:57.579,0:10:01.550
hat ihn auch interessiert und im Endeffekt,[br]wenn er an seiner App halt was Neues
0:10:01.550,0:10:08.060
gebastelt hat, dann kann er auf GitHub[br]hingehen und ein neues Release erzeugen, als
0:10:08.060,0:10:15.920
ein Beispiel für eine sehr einfache Pipeline.[br]Und das würde dann automatisch einen neuen
0:10:15.920,0:10:27.620
Build anstoßen, auf dem Docker-Hub. Und dann[br]läuft auf dem Cluster ein Tool von der
0:10:27.620,0:10:33.790
Firma "weaveworks", das einfach im Cluster[br]sitzt und die ganze Zeit auf dem Docker-Hub
0:10:33.790,0:10:38.560
schaut, ob neue Images da sind. Und[br]sobald er eine neue Version findet, würde
0:10:38.560,0:10:45.550
er die auf den Cluster schieben. Also, da[br]muss man jetzt auch nicht unbedingt den
0:10:45.550,0:10:50.570
Docker-Hub nehmen, man kann auch Quay[br]nehmen, anstatt GitHub auch GitLab. GitLab hat
0:10:50.570,0:10:56.329
selber für Kubernetes, glaube ich, ein paar[br]Tools und Integrationen. Aber theoretisch
0:10:56.329,0:11:01.829
können halt Leute, die auch eben gar keine[br]Lust haben an Server-Management, mit
0:11:01.829,0:11:06.490
relativ simplen Sachen ihre neue App basteln,[br]sagen neues Release und wenn sie ein
0:11:06.490,0:11:16.470
bisschen warten, ist die automatisch dann[br]auf dem Cluster in der neuen Version. Wenn
0:11:16.470,0:11:21.079
jetzt mehrere Leute gemeinsam auf dem[br]Cluster unterwegs sind, dann möchte man ja
0:11:21.079,0:11:26.759
trotzdem, auch wenn sie gegenseitig sich[br]freundlich gesinnt sind, ein bisschen
0:11:26.759,0:11:35.410
Isolation haben, sodass man ihnen die[br]– wenn eine App irgendwie Amok läuft,
0:11:35.410,0:11:41.639
dass das dann nicht alle anderen mit runter[br]reißt – und da bietet Kubernetes auch von
0:11:41.639,0:11:49.329
Haus aus eine Menge Sachen. Einmal kann man[br]nach Namespaces isolieren. Hier, das
0:11:49.329,0:11:54.720
wäre das Kommandozeilen-Tool "CubeControl".[br]Hier sieht man jetzt die Namespaces, die
0:11:54.720,0:12:00.509
laufen und die Apps kann man mehr oder[br]weniger gegeneinander über Namespaces
0:12:00.509,0:12:05.379
isolieren. Aber so könnte man neben meinem[br]Team oder eben auch einem Code-For-Lab in
0:12:05.379,0:12:13.589
die Namespace zuweisen und ihnen den[br]Zugriff auf anderen Namespaces verhindern.
0:12:13.589,0:12:17.379
Und was auch noch interessant ist: Man kann[br]dann nachher die Container, die man laufen
0:12:17.379,0:12:23.249
lässt, denen kann man jeweils zuweisen, wie[br]viel Speicher sie maximal benutzen dürfen
0:12:23.249,0:12:26.709
oder wie viel CPU und in Zukunft[br]wahrscheinlich auch noch ein paar mehr
0:12:26.709,0:12:33.649
Sachen. Das definiert man dann genauso in[br]den in den YAML-Manifesten. Deswegen sehen
0:12:33.649,0:12:43.500
die halt sehr komplex aus, weil man darüber[br]alles Mögliche nachher einrichten kann. Es
0:12:43.500,0:12:51.930
gibt dann – ja – also Kubernetes wird, alle[br]drei Monate gibt es ein neues Release und
0:12:51.930,0:13:00.399
da kommen eigentlich halt laufend neue[br]Features rein. Es wird von einer Foundation,
0:13:00.399,0:13:09.990
von der "Cloud Native Computing Foundation"[br]heißt sie glaube ich, soweit betreut und im
0:13:09.990,0:13:14.199
Hintergrund stehen halt alle möglichen[br]großen Firmen und auch viele kleine, von
0:13:14.199,0:13:20.209
RedHat, Microsoft, Amazon, Google[br]logischerweise und die gesamte Entwicklung
0:13:20.209,0:13:26.420
geschieht aber komplett offen, also man[br]kann alles auf GitHub – Kubernetes verfolgen
0:13:26.420,0:13:29.949
und es gibt so Special Interest Groups für[br]die verschiedenen Bereiche, eben auch bei
0:13:29.949,0:13:35.660
Netzwerk-Geschichten oder Rechte-[br]Geschichten, die machen auch teilweise
0:13:35.660,0:13:40.249
wöchentliche Treffen, wo man sich dann[br]irgendwie zuschalten kann über Hangout. Also das
0:13:40.249,0:13:45.680
ganze System ist halt sehr offen und die[br]Community ist sehr wichtig in dem ganzen
0:13:45.680,0:13:52.580
Entwicklungsprozess und laufend gibt es[br]halt weitere Features vor allem in Sachen
0:13:52.580,0:14:01.839
Sicherheit, ja, oder auch Dinge, die uns[br]das Leben einfacher machen. Zum Beispiel
0:14:01.839,0:14:07.149
gibt es eine Abstraktionsschicht, das nennt[br]sich Ingresses. Also wir haben unsere Apps
0:14:07.149,0:14:12.509
jetzt in Containern laufen auf dem[br]Cluster. Jetzt hätten wir gerne, dass wir
0:14:12.509,0:14:17.649
die von außen immer die Domain erreichen[br]können. Und da gibt es einfach ein Tool das
0:14:17.649,0:14:26.819
man installieren kann. Das nennt sich – das[br]ist im Endeffekt ein Proxy auf Basis von
0:14:26.819,0:14:35.540
NGINX, hier haben wir nur Text, wir können[br]mal kurz bei uns schauen, die werden auch
0:14:35.540,0:14:40.889
über die YAML-Manifeste[br]definiert und hier sehen wir jetzt die
0:14:40.889,0:14:46.869
verschiedenen Domains und die verweisen[br]jeweils dann quasi über einen
0:14:46.869,0:14:52.170
Zwischenschritt noch auf die Container, die[br]laufen. Das heißt, wir definieren, ich habe
0:14:52.170,0:15:01.839
glaube ich, wo hab ichs, wahrscheinlich hier –[br]Genau. Das sieht im Endeffekt so aus. Auch
0:15:01.839,0:15:08.940
wieder für diese "Traffics Shiny App", da[br]tragen wir ein: Das soll die Domain
0:15:08.940,0:15:17.350
sein, verweist auf Container, die unter dem[br]Namen laufen und außerdem hätten wir gerne
0:15:17.350,0:15:24.040
das automatisch Let's Encrypt eingerichtet[br]wird. Also derjenige, der diese App bastelt
0:15:24.040,0:15:28.709
und auf den Cluster schiebt, braucht sich[br]selbst darum auch nicht kümmern. Er muss
0:15:28.709,0:15:33.269
nur sagen, wie die Adresse heißen soll, dann[br]wird es angelegt, im Hintergrund "Let´s
0:15:33.269,0:15:40.150
Encrypt"-Zertifikate erzeugt – die werden[br]auch passend erneuert. Man muss es nur halt
0:15:40.150,0:15:42.949
einmal definieren, dass man das gerne haben[br]möchte und man muss noch ein Cert-
0:15:42.949,0:15:49.310
Manager im Cluster laufen lassen. Also im[br]Endeffekt: Dieser Ingres-Controller oder
0:15:49.310,0:15:55.410
die Cert-Manager, die laufen die ganze Zeit[br]im Hintergrund und gucken, ob eine neue
0:15:55.410,0:16:00.579
Ingress-Definition gegen die Kubernetes-[br]API geschickt wird. Und sobald sie das
0:16:00.579,0:16:05.520
sehen, konfigurieren sie NGINX neu, holen[br]sich die "Let's Encrypt"-Zertifikate, legen
0:16:05.520,0:16:12.149
die passend ab. Also alles Dinge, die man[br]sich im Detail anschauen kann, wenn man
0:16:12.149,0:16:26.199
möchte, aber eben nicht unbedingt muss.[br]Was natürlich auch ganz nett ist, wenn man
0:16:26.199,0:16:33.079
einmal Monitoring für den Cluster[br]eingerichtet hat – oder eben Logdateien, die
0:16:33.079,0:16:37.170
kann man alle zentral sich von all den[br]Containern holen, die über mehrere Server
0:16:37.170,0:16:45.050
verteilt laufen und dann zentral sich[br]anschauen. Also zu Monitoring wird oft
0:16:45.050,0:16:52.129
Prometheus im Hintergrund eingesetzt und[br]Graphana, und so kann man sich Dashboards
0:16:52.129,0:16:56.290
irgendwie basteln und jeweils dann auch für[br]eine bestimmte App oder für einen Namespace
0:16:56.290,0:17:02.220
filtern und den tatsächlichen CPU oder[br]Netzwerkverkehr sich anschauen. Also es
0:17:02.220,0:17:06.550
muss halt nur einmal gemacht werden und[br]auch wenn neue Apps eingerichtet werden
0:17:06.550,0:17:13.540
und hoch kommen, läuft automatisch alles[br]mit ins Monitoring oder Logging über
0:17:13.540,0:17:22.540
Elasticsearch und Kibana. Ja, und dann kann[br]man auf der Basis auch Alerts definieren
0:17:22.540,0:17:28.329
und die in seinen Slack-Channel (also Open-[br]Knowledge-Channel) theoretisch irgendwie
0:17:28.329,0:17:32.430
schicken lassen und dann könnten ein paar[br]Freiwillige sich darum kümmern, wenn sie
0:17:32.430,0:17:42.240
sehen, dass irgendwas im Argen liegt. Paar[br]Sachen gibt es auch bei uns immer noch zu
0:17:42.240,0:17:48.310
verbessern. Also einmal zur Zeit nutzen wir [br]den Standardweg zur Authentifizierung. Das
0:17:48.310,0:17:54.160
sind Zertifikate bei Kubernetes. Das kann[br]man eventuell auch eleganter lösen über
0:17:54.160,0:17:59.490
ein Keycloak-Setup und dann hauen wir[br]unsere Leute in eine GitHub-Gruppe und die
0:17:59.490,0:18:03.700
bekommen dann darüber Zugriff. Wir haben[br]auch schon laufen ein verteiltes
0:18:03.700,0:18:13.880
Dateisystem. Also alle unsere drei Server[br]laufen zur Zeit bei Scaleway, und die haben
0:18:13.880,0:18:17.890
halt irgendwie keinen Cloudspeicher.[br]Deswegen muss man sich halt selber darum
0:18:17.890,0:18:24.830
kümmern, dass man sein System am[br]besten verteilt laufen lässt, weil wir ja
0:18:24.830,0:18:30.160
auch ausfallsicher sein wollen, falls[br]mal ein Node irgendwie komplett abschmiert.
0:18:30.160,0:18:34.480
Und da gibt es auch verschiedene Sachen,[br]die fürs Kubernetes Umfeld gebastelt
0:18:34.480,0:18:40.660
werden. Zum Beispiel OpenEBS. Da[br]kann man dann einfach die dis definieren,
0:18:40.660,0:18:47.380
die bei den bei den Servern hängen und[br]sagt, wie stark die Replizierung sein soll.
0:18:47.380,0:18:52.520
Wir spielen ein bisschen rum. Also da gibt es[br]auch immer Versionsupdates und man muss
0:18:52.520,0:18:56.560
gucken, wie gut man das migriert kriegt. Ist[br]noch ein bisschen testweise, aber auch
0:18:56.560,0:19:03.690
theoretisch dann die Möglichkeit, dass man[br]einfach eine App starten lässt, der
0:19:03.690,0:19:08.060
Speicher OpenEBS zuweist und egal,[br]ob diese App nachher – auf welchem Server
0:19:08.060,0:19:16.830
die nachher startet, kriegt die Zugriff auf[br]ihre Daten. Das ist falsch, da muss
0:19:16.830,0:19:23.770
man ein Leerzeichen zwischen. So weit von[br]mir. Wir haben unser Setup bei
0:19:23.770,0:19:29.500
"Code for Münster" laufen. Ich selber kann auch[br]gerne noch mehr zu Kubernetes erzählen.
0:19:29.500,0:19:37.360
Also auch die nächsten ein, zwei Tage.[br]@webwurst ist das Kürzel auf Twitter, GitHub,
0:19:37.360,0:19:43.570
Gmail oder einfach googlen. Der Name ist nicht so[br]oft verwendet. Ja, also die Grundidee für
0:19:43.570,0:19:47.780
den Talk war ein bisschen, dass, wenn andere[br]Code-for-Labs irgendwie auch Lust haben... Am
0:19:47.780,0:19:51.180
meisten Sinn macht es wahrscheinlich, dass[br]man sich Server teilt. Also wir haben eben
0:19:51.180,0:19:56.030
drei Server, die jetzt jeweils – die[br]insgesamt ungefähr 100 Gigabyte RAM
0:19:56.030,0:20:02.370
haben. Das ist uns eigentlich zu viel, aber[br]kleinere sind irgendwie wieder teurer. Also
0:20:02.370,0:20:07.250
falls sich Leute zusammentun wollen oder[br]einfach nur neugierig sind auf Kubernetes
0:20:07.250,0:20:13.730
und wie man das sinnvoll einsetzt, haben[br]wir die Beispiele, helfen gerne aus – ja, und
0:20:13.730,0:20:20.920
würden gerne auch zusammenarbeit mit[br]anderen Code-for-Labs. Vielen Dank.
0:20:20.920,0:20:26.510
Applaus
0:20:26.510,0:20:31.760
Herald: Tobias – danke dir. So, wir haben noch[br]ein bisschen Zeit für Fragen. Also wenn
0:20:31.760,0:20:35.070
irgendwer eine Frage hat, dann könnt ihr[br]mal irgendein Zeichen geben. Dann komme ich
0:20:35.070,0:20:46.040
gerne mit dem Mikrofon zu euch.[br]Mensch 1: Ich hätte 'ne Frage, und zwar:
0:20:46.040,0:20:52.540
Ich hab das eben nicht ganz verstanden.[br]OpenEBS wolltet ihr als verteiltes Dateisystem
0:20:52.540,0:20:59.440
später einsetzen. Was nutzt ihr jetzt und[br]wieso habt ihr euch für OpenEBS entschieden?
0:20:59.440,0:21:04.240
Tobias: Wir hatten uns vorher mal Rook[br]angeschaut. Wir haben jetzt OpenEBS schon
0:21:04.240,0:21:07.920
laufen, aber ich nenne es noch[br]experimentell. Also version 0.7 läuft,
0:21:07.920,0:21:14.020
gerade 0.8 ist glaube ich raus. Warum? Ich[br]hatte mit denen auf der auf der KubeCon
0:21:14.020,0:21:17.990
in Kopenhagen gesprochen und das sind[br]irgendwie 200 Leute im Team, die viel Storage
0:21:17.990,0:21:24.400
schon gemacht haben, komplett Open Source[br]und ich glaube, die haben da ganz gute
0:21:24.400,0:21:28.530
ideen – auch wenn das relativ komplex ist,[br]was die da so schreiben zu ihrer
0:21:28.530,0:21:32.550
Architektur. Aber ja, das ist einfach der[br]Grund. Wir sind auch offen für anderes, wenn's
0:21:32.550,0:21:37.620
gute Erfahrungen gibt, wenn du welche hast...[br]Mensch1: Nee, also ich frage deshalb, weil
0:21:37.620,0:21:43.280
wir haben nämlich auch den Instanzen,[br]mit denen ich bisher Erfahrungen gesammelt
0:21:43.280,0:21:48.240
habe, war das immer das große Fragezeichen[br]am Ende: Was was benutzen wir als Persistant
0:21:48.240,0:21:55.650
Storage? Weil ich finde, da sind die[br]Hürden sehr hoch für einen Einstieg, sage ich
0:21:55.650,0:22:01.640
mal. – oder was auch immer man da[br]irgendwie als als Dateisystem benutzen kann...
0:22:01.640,0:22:04.440
Und deswegen war ich einfach [br]nur neugierig.
0:22:04.440,0:22:06.370
Tobias: Das stimmt.[br]Mensch1: Weil, die Entscheidung steht
0:22:06.370,0:22:09.740
uns auch noch bevor.[br]Tobias: Alternativ, wenn du eine verteilte
0:22:09.740,0:22:15.651
Datenbank hast, kannst du eben auch Local[br]Storage benutzen, aber – ja – musst du
0:22:15.651,0:22:20.520
halt irgendwie über die Datenbank[br]dann gehen. Ja.
0:22:20.520,0:22:23.590
Herald: Hier hinten war noch...
0:22:23.590,0:22:27.630
Mensch 2: Hallo. Ich wollte fragen: Wie lange[br]hat es dauert, euch das ganze Setup aufzusetzen
0:22:27.630,0:22:32.020
und seid ihr irgendwo darauf gestoßen,[br]wo ihr das nicht so umsetzen konntet, wie ihr
0:22:32.020,0:22:36.000
das umsetzen wolltet, beim Alarming oder[br]Monitoring oder so? Also irgendwas rein
0:22:36.000,0:22:41.630
hacken haben müssen?[br]Tobias: Das Ganze ist schwer zu sagen. Als
0:22:41.630,0:22:47.831
wir angefangen haben, hatten wir auch[br]relativ – ich glaube, da gab es noch nicht so
0:22:47.831,0:22:51.400
super viel fertiges Tooling. Ich glaub,[br]Prometheus und Graphana hatten wir selbst
0:22:51.400,0:22:57.330
gebastelt, dann mit Docker auch noch, und das[br]war so "learning by doing" auch ein bisschen.
0:22:57.330,0:23:02.630
Aber mittlerweile sehe ich jetzt eben[br]halt: Storage ist immer ein bisschen eine
0:23:02.630,0:23:07.810
Schwierigkeit oder verteilte Datenbanken,[br]aber grundsätzlich – der Aufbau von dem
0:23:07.810,0:23:14.820
System oder eben auch diese einfache[br]Pipeline mit Flux, das steht halt und
0:23:14.820,0:23:22.480
tut. Also, da haben wir keine großen Probleme[br]gerade. Auch im Monitoring ändert
0:23:22.480,0:23:27.690
sich halt laufend was. Also am spannendsten[br]ist jetzt der Prometheus Operator
0:23:27.690,0:23:31.720
eventuell und da gibt es dann Kube[br]Prometheus, und die generieren dir eine
0:23:31.720,0:23:36.310
ganze Menge Dashboards, und du hast auch[br]eine Art Programmiersprache dann für die
0:23:36.310,0:23:40.790
Dashboards, die du verwenden kannst. Ja, es gibt[br]ständig was Neues zu entdecken und
0:23:40.790,0:23:46.460
auszuprobieren.[br]Herald: Okay, hier war noch jemand...
0:23:46.460,0:23:56.091
Mensch 3: Vielleicht könnt ihr auch noch[br]probieren, die StorageOS. ich
0:23:56.091,0:24:01.780
habe mit den Leuten auch geredet auch in[br]Kopenhagen. Sieht auch interessant aus.
0:24:01.780,0:24:05.230
Und dann, Sie haben drei Server?[br]Tobias: Ja.
0:24:05.230,0:24:07.510
Mensch 3: So, das sind drei Master [br]und auch Node?
0:24:07.510,0:24:12.610
Tobias: Ja. Also wir haben den Master[br]halt nur auf einem laufen, aber
0:24:12.610,0:24:16.430
trotzdem nutzen wir den auch für normale –[br]Mensch 3: Nur ein Master?
0:24:16.430,0:24:19.470
Tobias: Ja, wir haben einen Master,[br]und wenn der down geht,
0:24:19.470,0:24:23.490
läuft ja der restliche Kram auch noch[br]weiter, bis wir ihn wieder hochziehen.
0:24:23.490,0:24:26.530
Das Ding ist, dass wir das eben auch [br]alles hobbymäßig machen und selber
0:24:26.530,0:24:34.960
finanzieren. Also für das Code-for... auch[br]nur einer. Funktioniert aber, wenn
0:24:34.960,0:24:38.640
ich den einfach neu starte, dann[br]warte ich fünf Minuten und dann hat sich
0:24:38.640,0:24:44.400
alles wieder gefunden. Ja, und die Apps auf[br]den anderen Nodes laufen halt eh weiter und
0:24:44.400,0:24:48.540
können weiter von außen erreichbar sein.[br]Mensch 3: Habt ihr schon mal gedacht, ein
0:24:48.540,0:24:55.120
Operator? Dann bräuchte man nicht[br]die Storage distribuieren, aber dann
0:24:55.120,0:25:01.690
alle sieben, dann wird zum Beispiel Postgres,[br]der wird realisiert und der Operator, der
0:25:01.690,0:25:04.560
handelt das.[br]Tobias: Ja, gucken wir uns auf jeden Fall
0:25:04.560,0:25:11.850
an, was es da gibt. Oft hat man eben nicht –[br]Elasticsearch tut es ganz gut, wenn man
0:25:11.850,0:25:17.080
das Ding in dreifach laufen lässt. Postgres[br]und MySQL kann man ganz gut hochziehen als
0:25:17.080,0:25:23.530
Operator über mehrere Nodes, aber[br]sobald irgendwas schief läuft, können die
0:25:23.530,0:25:27.480
Operator zur Zeit da noch nicht aushelfen.[br]Dann muss man die man alle manuell neu
0:25:27.480,0:25:31.130
starten. Das ist okay, aber irgendwie –[br]es gibt nicht so viel was sich selbst dann
0:25:31.130,0:25:32.970
repariert. Wird wahrscheinlich noch kommen,[br]aber –
0:25:32.970,0:25:40.080
Herald: Du hattest eine Frage?[br]Mensch 4: Du hattest gerade, wenn der
0:25:40.080,0:25:44.880
Master kaputt geht, dann funktionieren die[br]Services trotzdem weiter. Wie macht ihr das
0:25:44.880,0:25:48.810
dann mit diesem Ingress, also wo kommt[br]das DNS an?
0:25:48.810,0:25:53.960
Tobias: Wir haben es versucht über so[br]einen DNS Round Robin. Also es war einfach –
0:25:53.960,0:25:59.420
Der Ingress Controller läuft auf allen – dingens.[br]Ja gerne was Besseres, aber bei Scaleway, wo wir
0:25:59.420,0:26:02.830
sind, die haben halt keinen Loadbalancer[br]davor. Also die bieten das nicht irgendwie als
0:26:02.830,0:26:06.840
Service an. Die haben wohl eine IP, die man[br]von Node zu Node ziehen kann, aber auch nicht
0:26:06.840,0:26:12.770
gleichzeitig an mehrere. Ja, es ist halt ein[br]günstiges Setup für Code-for. Wenn sich mehr
0:26:12.770,0:26:17.420
zusammentun, können wir vielleicht auch[br]etwas Spannenderes uns überlegen. Ja, aber
0:26:17.420,0:26:28.441
bisher ist es einfach so gelöst. Wir haben jetzt[br]ja auch nicht so lebenswichtige Apps, genau.
0:26:28.441,0:26:41.340
Herald: Okay, hat noch jemand eine Frage? Ich[br]sehe keine mehr. Sonst schreit noch mal jemand.
0:26:41.340,0:26:47.390
Tobias: Gut, also wenn noch irgendwie[br]Fragen später sind: Schreibt auf "Open-[br]
0:26:47.390,0:26:51.340
Knowledge-Slack, Code for Münster" oder[br]@webwurst oder über Twitter oder sonstwie. [br]
0:26:51.340,0:26:55.820
Würde ich mich gerne unterhalten mit Leuten.[br]Herald: Dann nochmal Applaus für Tobias, bitte.
0:26:55.820,0:27:01.520
Applaus[br]Tobias: Vielen Dank.
0:27:01.520,0:27:07.394
Abspannmusik
0:27:07.394,0:27:24.409
Untertitel erstellt von c3subtitles.de[br]im Jahr 2019. Mach mit und hilf uns!