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!