[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:18.45,Default,,0000,0000,0000,,{\i1}35C3 Vorspannmusik{\i0} Dialogue: 0,0:00:18.45,0:00:23.92,Default,,0000,0000,0000,,Herald: Hallo, hallo! Okay, unser nächster\NSpeaker hier ist der Tobias von "Code for Dialogue: 0,0:00:23.92,0:00:30.89,Default,,0000,0000,0000,,Münster" und hat das Thema Kubernetes\NDevelopment oder so – und ich habe keine Dialogue: 0,0:00:30.89,0:00:33.55,Default,,0000,0000,0000,,Ahnung, was das ist und er konnte es mir so\Nschnell auch nicht wirklich verständlich Dialogue: 0,0:00:33.55,0:00:37.69,Default,,0000,0000,0000,,erklären, aber er wird das jetzt für\Neuch sicher ausführlich machen. Also ein Dialogue: 0,0:00:37.69,0:00:40.94,Default,,0000,0000,0000,,kleiner Applaus für Tobias bitte.\N{\i1}Applause{\i0} Dialogue: 0,0:00:40.94,0:00:47.04,Default,,0000,0000,0000,,Tobias: Vielen Dank! Ja, also ich werde\Njetzt in ein paar Minuten mal versuchen Dialogue: 0,0:00:47.04,0:00:51.92,Default,,0000,0000,0000,,Kubernetes so ein bisschen die\NArchitektur zu erklären und warum ich Dialogue: 0,0:00:51.92,0:00:58.11,Default,,0000,0000,0000,,glaube, dass das ein ganz gute Plattform\Nist um eben in "Code-for-Labs" seine Apps zu Dialogue: 0,0:00:58.11,0:01:03.57,Default,,0000,0000,0000,,deployen und dann auch weiter maintainen\Nzu können. Wer von euch weiß ungefähr, was Dialogue: 0,0:01:03.57,0:01:11.28,Default,,0000,0000,0000,,Kubernetes ist? Ja top! Und kennt ihr auch\Nalle schon Docker und Container- Dialogue: 0,0:01:11.28,0:01:15.70,Default,,0000,0000,0000,,Technologie? Also grundsätzlich, wenn\Nirgendwelche fragen sind, haut die einfach Dialogue: 0,0:01:15.70,0:01:19.62,Default,,0000,0000,0000,,zwischendurch raus. Wir können hier auch\Nso ein bisschen, einfach so, Frage-und-Antwort Dialogue: 0,0:01:19.62,0:01:27.83,Default,,0000,0000,0000,,machen. Ansonsten fange ich einfach mal so\Nan. In Münster treffen wir uns regelmäßig, Dialogue: 0,0:01:27.83,0:01:35.04,Default,,0000,0000,0000,,seit drei Jahren mittlerweile, unter dem\NTopic "Code for Münster" und ich glaube seit Dialogue: 0,0:01:35.04,0:01:38.81,Default,,0000,0000,0000,,zwei Jahren haben wir auch schon ein\NKubernetes-Cluster laufen. Ich selber mache Dialogue: 0,0:01:38.81,0:01:45.93,Default,,0000,0000,0000,,auch beruflich einiges damit, also auch\Ndeswegen habe ich da eigentlich Spaß dran Dialogue: 0,0:01:45.93,0:01:50.22,Default,,0000,0000,0000,,und mittlerweile, bei uns in Münster, sind\Nglaube ich auch schon so drei Leute, die Dialogue: 0,0:01:50.22,0:01:54.89,Default,,0000,0000,0000,,theoretisch Kubernetes betreuen könnten\Nund grundsätzlich jeder der neu irgendwie Dialogue: 0,0:01:54.89,0:02:02.28,Default,,0000,0000,0000,,dazu kommt, kommt nicht darum, irgendwie\NDocker kennen zu lernen, aber hat auch Dialogue: 0,0:02:02.28,0:02:08.92,Default,,0000,0000,0000,,durchaus viele Vorteile und ich hoffe die\Nkriege ich jetzt rüber gebracht. Wir können Dialogue: 0,0:02:08.92,0:02:13.86,Default,,0000,0000,0000,,mit dem spaßigsten Teil beginnen, da\Nversuche ich was zu zeichnen. Wenn das Dialogue: 0,0:02:13.86,0:02:17.53,Default,,0000,0000,0000,,jetzt irgendwie gar nicht klappt, dann habe ich\Ndie Zeichnung von gestern aus dem Zug noch, Dialogue: 0,0:02:17.53,0:02:23.44,Default,,0000,0000,0000,,die ich Ihnen zeigen könnte. Grundsätzlich\Nzur Architektur von Kubernetes: Es gibt Dialogue: 0,0:02:23.44,0:02:31.82,Default,,0000,0000,0000,,da drei Grundprinzipien. Das eine ist das\Nalles, was man gegen die Kubernetes-API Dialogue: 0,0:02:31.82,0:02:36.57,Default,,0000,0000,0000,,schicken möchte, also alles was nachher im\NCluster laufen soll, das definiert man Dialogue: 0,0:02:36.57,0:02:43.68,Default,,0000,0000,0000,,vorher in einer Datei, in einem Manifest. Das ist\Nklassischerweise in YAML, kann auch JSON Dialogue: 0,0:02:43.68,0:02:47.32,Default,,0000,0000,0000,,sein, aber es ist einfach ein\Nstrukturiertes Format. Ich kann mal kurz Dialogue: 0,0:02:47.32,0:02:56.49,Default,,0000,0000,0000,,ein Beispiel, glaube ich, auch zeigen. Hier,\Ndas sind alle unsere Sachen, die wir bei Dialogue: 0,0:02:56.49,0:03:06.11,Default,,0000,0000,0000,,uns im Cluster laufen lassen und eine\NBeispiel-App hier. Da haben wir halt einige Dialogue: 0,0:03:06.11,0:03:11.49,Default,,0000,0000,0000,,Dateien. Die wichtigste ist diese hier, das \Nsieht am Anfang ein bisschen wild aus, Dialogue: 0,0:03:11.49,0:03:16.09,Default,,0000,0000,0000,,im Endeffekt, wenn man Docker kennt und\NContainerisierung, ist das die Zeile. Man Dialogue: 0,0:03:16.09,0:03:22.19,Default,,0000,0000,0000,,sagt dieses Image soll ausgeführt werden\Nund kann dazu noch ein paar Dinge angeben Dialogue: 0,0:03:22.19,0:03:25.63,Default,,0000,0000,0000,,und dann gibt es noch so weitere\NAbstraktions-Geschichten, wie Service und Dialogue: 0,0:03:25.63,0:03:29.63,Default,,0000,0000,0000,,Ingress, erzähl ich gleich auch noch was\Ndazu. Dialogue: 0,0:03:29.63,0:03:35.37,Default,,0000,0000,0000,,Am Anfang mag das alles ein\Nbisschen viel sein, hat aber den Vorteil, Dialogue: 0,0:03:35.37,0:03:39.65,Default,,0000,0000,0000,,dass eben egal auf welchem Cloud-Provider\Nman läuft oder ob man selber Server Dialogue: 0,0:03:39.65,0:03:47.09,Default,,0000,0000,0000,,betreibt, man quasi nur diese Kubernetes-\NAbstraktionsschicht braucht und man Dialogue: 0,0:03:47.09,0:03:54.74,Default,,0000,0000,0000,,sich gegenseitig aushelfen kann, gerade\Nspeziell in diese "Code-For-Labs". Also Dialogue: 0,0:03:54.74,0:04:01.27,Default,,0000,0000,0000,,diese Manifeste kann die Kubernetes-API\Nverstehen. Das heißt, am Anfang haben wir Dialogue: 0,0:04:01.27,0:04:15.00,Default,,0000,0000,0000,,hier - ach so - unsere YAML-Dateien und dann\Ndie Kubernetes-API, die läuft auf einem Dialogue: 0,0:04:15.00,0:04:27.03,Default,,0000,0000,0000,,Server. Das Ganze ist dann die Control\NPlane von Kubernetes, quasi das ist das Dialogue: 0,0:04:27.03,0:04:32.32,Default,,0000,0000,0000,,Herzstück und alles was wir machen, über\Ndie Kommandozeile oder Ähnliches, geht über Dialogue: 0,0:04:32.32,0:04:38.58,Default,,0000,0000,0000,,den API-Server. Der API-Server hat dann\Nnoch eine Datenbank im Hintergrund, weil er Dialogue: 0,0:04:38.58,0:04:45.22,Default,,0000,0000,0000,,selbst einfach nicht viel macht. Der nimmt\Neinfach nur die Manifeste entgegen, legt die in Dialogue: 0,0:04:45.22,0:04:51.58,Default,,0000,0000,0000,,der Datenbank ab und verteilt die dann\Neventuell an Controller, die es dann noch Dialogue: 0,0:04:51.58,0:04:58.00,Default,,0000,0000,0000,,gibt und davon kann's dann mehrere geben.\NAlso an sich, die Struktur, serverseitig, ist Dialogue: 0,0:04:58.00,0:05:06.65,Default,,0000,0000,0000,,relativ simpel. Dann hat man noch weitere\NServer, die nennen wir einfach nur "Nodes", Dialogue: 0,0:05:06.65,0:05:14.79,Default,,0000,0000,0000,,und jeder von diesen Servern hat eine\NSoftware laufen, nennt sich "Cubelet", und der Dialogue: 0,0:05:14.79,0:05:25.61,Default,,0000,0000,0000,,API-Server unterhält sich mit denen dann\Nin erster Linie und, ja, das ist im Grunde Dialogue: 0,0:05:25.61,0:05:28.97,Default,,0000,0000,0000,,die Grundstruktur. Auf all diesen Nodes\Nläuft dann Docker oder eine andere Dialogue: 0,0:05:28.97,0:05:36.55,Default,,0000,0000,0000,,Containerisierungsform und die Idee, das\NBesondere jetzt oder ein weiterer Dialogue: 0,0:05:36.55,0:05:40.24,Default,,0000,0000,0000,,Architekturpunkt von Kubernetes ist, dass\Ner ständig vergleicht: Was möchten wir Dialogue: 0,0:05:40.24,0:05:47.38,Default,,0000,0000,0000,,eigentlich, dass auf dem Cluster läuft –\Ndas sind eben unsere YAML Manifeste – Dialogue: 0,0:05:47.38,0:05:52.43,Default,,0000,0000,0000,,und über die Cubelets kann er eben erfragen:\NWas läuft wirklich? Also sobald es eine Dialogue: 0,0:05:52.43,0:05:58.41,Default,,0000,0000,0000,,Differenz gibt, kann er hingehen und\Nversuchen, das irgendwie auszugleichen. Also Dialogue: 0,0:05:58.41,0:06:02.55,Default,,0000,0000,0000,,wenn irgendeine App abgestürzt ist oder zu\Nviel Speicher gebraucht hat oder ist Dialogue: 0,0:06:02.55,0:06:07.37,Default,,0000,0000,0000,,Netzwerkprobleme gab, dann kriegt er das\Nmit. Das ist eventuell Dialogue: 0,0:06:07.37,0:06:12.46,Default,,0000,0000,0000,,ein Unterschied gegenüber einem Setup, wo\Nman selber Docker-Container startet oder Dialogue: 0,0:06:12.46,0:06:27.54,Default,,0000,0000,0000,,über "Docker Compose" oder Ähnliches. Gibt's so\Nweit schon mal Fragen? Sonst ist das im Dialogue: 0,0:06:27.54,0:06:32.23,Default,,0000,0000,0000,,Grunde das Wichtigste, was so Kubernetes\Nangeht. Und es soll jetzt ja auch nicht Dialogue: 0,0:06:32.23,0:06:37.81,Default,,0000,0000,0000,,jeder in den Code-for-Labs komplett das \NBedienen von Kubernetes Dialogue: 0,0:06:37.81,0:06:43.66,Default,,0000,0000,0000,,beherrschen müssen. Das ist bei uns in\NMünster auch nicht der Fall, aber trotzdem Dialogue: 0,0:06:43.66,0:06:47.75,Default,,0000,0000,0000,,hilft es, dass man mit mehreren Leuten\Ngemeinsam Dinge auf dem Cluster spielt Dialogue: 0,0:06:47.75,0:06:59.19,Default,,0000,0000,0000,,oder auf Servern laufen lässt. Diese YAML-\NManifeste kann man nämlich sehr gut Dialogue: 0,0:06:59.19,0:07:05.20,Default,,0000,0000,0000,,einfach alle in einem Git-Repo liegen\Nhaben. Diese YAML-Manifeste schickt man Dialogue: 0,0:07:05.20,0:07:10.51,Default,,0000,0000,0000,,gegen die Kubernetes-API, indem man auf\Nder Kommandozeile "cubecontrol apply" ausführt, Dialogue: 0,0:07:10.51,0:07:15.02,Default,,0000,0000,0000,,kann man rekursiv machen über ganze\NVerzeichnisse. Und hier bei uns in Münster Dialogue: 0,0:07:15.02,0:07:20.52,Default,,0000,0000,0000,,habt ihr eben schon gesehen, das sind quasi\Ndie Verzeichnisse mit allen Apps, die wir Dialogue: 0,0:07:20.52,0:07:27.53,Default,,0000,0000,0000,,drauf laufen lassen haben und – halt alle\NÄnderungen, die am Server, einem Cluster, Dialogue: 0,0:07:27.53,0:07:33.16,Default,,0000,0000,0000,,geschehen sollen, laufen über dieses Repo.\NAlso das heißt: Die Leute stellen Pull- Dialogue: 0,0:07:33.16,0:07:38.53,Default,,0000,0000,0000,,Requests, wenn eine neue App rein soll oder\Nwenn irgendwelche Konfigurationen geändert Dialogue: 0,0:07:38.53,0:07:42.83,Default,,0000,0000,0000,,werden oder neue Versionen ausgerollt\Nwerden soll – und andere können drüber Dialogue: 0,0:07:42.83,0:07:52.96,Default,,0000,0000,0000,,schauen, ob das okay ist und das Ganze dann\Ncommitten, mergen und dann kann man es Dialogue: 0,0:07:52.96,0:07:57.72,Default,,0000,0000,0000,,gegen den Cluster spielen. Das heißt, es\Nist nicht so, dass irgendjemand mit SSH auf Dialogue: 0,0:07:57.72,0:08:03.44,Default,,0000,0000,0000,,Maschinen draufgeht und da dann\Nirgendwelche Details konfiguriert und man Dialogue: 0,0:08:03.44,0:08:07.49,Default,,0000,0000,0000,,hat nachher mehrere Server und\Ntypischerweise weiß keiner so genau wie Dialogue: 0,0:08:07.49,0:08:14.55,Default,,0000,0000,0000,,wichtig welche Konfigurationseinstellung\Nist oder irgendwelche Sicherheitspatches Dialogue: 0,0:08:14.55,0:08:20.17,Default,,0000,0000,0000,,jetzt schon drauf sind oder eben nicht. In\Ndiesem Kubernetes-Setup können wir Dialogue: 0,0:08:20.17,0:08:25.40,Default,,0000,0000,0000,,theoretisch auch hingehen und den ganzen\NCluster wegschmeißen, neue Server Dialogue: 0,0:08:25.40,0:08:29.55,Default,,0000,0000,0000,,aufsetzen und alles gegen den Server\Nspielen und die Sachen kämen dann wieder Dialogue: 0,0:08:29.55,0:08:34.56,Default,,0000,0000,0000,,hoch. Abgesehen von dem Kram, den man in den\NDatenbanken oder auf dem Filesystem hat, da Dialogue: 0,0:08:34.56,0:08:39.03,Default,,0000,0000,0000,,muss man sich dann eben um die Backups\Nkümmern, aber theoretisch ist es ein Dialogue: 0,0:08:39.03,0:08:48.97,Default,,0000,0000,0000,,relativ klar strukturierter Ansatz, also\Nman hat gut einsehbar, was auf dem Cluster Dialogue: 0,0:08:48.97,0:08:54.31,Default,,0000,0000,0000,,laufen soll und Kubernetes sorgt dann dafür,\Ndass es auch der Fall ist. Man hat einige Dialogue: 0,0:08:54.31,0:08:59.77,Default,,0000,0000,0000,,Abstraktionsmöglichkeiten, wenn es um die\NDomainverwaltung geht oder Let's Encrypt, Dialogue: 0,0:08:59.77,0:09:05.64,Default,,0000,0000,0000,,zeig ich gleich kurz. Und man hat quasi\Ndann auch, wenn man sich dieses Repo Dialogue: 0,0:09:05.64,0:09:13.31,Default,,0000,0000,0000,,anschaut, dann so ein Audit Log. Also man\Nweiß, was passiert ist, wer wann was gemacht hat, Dialogue: 0,0:09:13.31,0:09:19.27,Default,,0000,0000,0000,,sodass man durchaus mit mehreren Leuten\Ngemeinsam so ein Cluster betreiben kann Dialogue: 0,0:09:19.27,0:09:23.17,Default,,0000,0000,0000,,und solange ein paar Leute Kubernetes\Nverstehen, können die halt aushelfen und es Dialogue: 0,0:09:23.17,0:09:33.43,Default,,0000,0000,0000,,ist nicht irgendwie eine Person, die nur Zugang\Nhat und an der dann alles hängt. Also ein Dialogue: 0,0:09:33.43,0:09:42.80,Default,,0000,0000,0000,,Beispiel ist die unsere "Traffics Shiny App".\NDa kam einer zu uns, der gut R konnte, hatte Dialogue: 0,0:09:42.80,0:09:46.63,Default,,0000,0000,0000,,aber noch keine Idee von Docker und meinte,\Nbei ihnen an der Uni gehen sie auch Dialogue: 0,0:09:46.63,0:09:51.96,Default,,0000,0000,0000,,einfach per SSH auf die Maschinen und\Nstarten da irgendwas und – Aber da Dialogue: 0,0:09:51.96,0:09:57.58,Default,,0000,0000,0000,,wir das halt gar nicht mehr machen, haben\Nwir ihm soweit Docker beigebracht – oder es Dialogue: 0,0:09:57.58,0:10:01.55,Default,,0000,0000,0000,,hat ihn auch interessiert und im Endeffekt,\Nwenn er an seiner App halt was Neues Dialogue: 0,0:10:01.55,0:10:08.06,Default,,0000,0000,0000,,gebastelt hat, dann kann er auf GitHub\Nhingehen und ein neues Release erzeugen, als Dialogue: 0,0:10:08.06,0:10:15.92,Default,,0000,0000,0000,,ein Beispiel für eine sehr einfache Pipeline.\NUnd das würde dann automatisch einen neuen Dialogue: 0,0:10:15.92,0:10:27.62,Default,,0000,0000,0000,,Build anstoßen, auf dem Docker-Hub. Und dann\Nläuft auf dem Cluster ein Tool von der Dialogue: 0,0:10:27.62,0:10:33.79,Default,,0000,0000,0000,,Firma "weaveworks", das einfach im Cluster\Nsitzt und die ganze Zeit auf dem Docker-Hub Dialogue: 0,0:10:33.79,0:10:38.56,Default,,0000,0000,0000,,schaut, ob neue Images da sind. Und\Nsobald er eine neue Version findet, würde Dialogue: 0,0:10:38.56,0:10:45.55,Default,,0000,0000,0000,,er die auf den Cluster schieben. Also, da\Nmuss man jetzt auch nicht unbedingt den Dialogue: 0,0:10:45.55,0:10:50.57,Default,,0000,0000,0000,,Docker-Hub nehmen, man kann auch Quay\Nnehmen, anstatt GitHub auch GitLab. GitLab hat Dialogue: 0,0:10:50.57,0:10:56.33,Default,,0000,0000,0000,,selber für Kubernetes, glaube ich, ein paar\NTools und Integrationen. Aber theoretisch Dialogue: 0,0:10:56.33,0:11:01.83,Default,,0000,0000,0000,,können halt Leute, die auch eben gar keine\NLust haben an Server-Management, mit Dialogue: 0,0:11:01.83,0:11:06.49,Default,,0000,0000,0000,,relativ simplen Sachen ihre neue App basteln,\Nsagen neues Release und wenn sie ein Dialogue: 0,0:11:06.49,0:11:16.47,Default,,0000,0000,0000,,bisschen warten, ist die automatisch dann\Nauf dem Cluster in der neuen Version. Wenn Dialogue: 0,0:11:16.47,0:11:21.08,Default,,0000,0000,0000,,jetzt mehrere Leute gemeinsam auf dem\NCluster unterwegs sind, dann möchte man ja Dialogue: 0,0:11:21.08,0:11:26.76,Default,,0000,0000,0000,,trotzdem, auch wenn sie gegenseitig sich\Nfreundlich gesinnt sind, ein bisschen Dialogue: 0,0:11:26.76,0:11:35.41,Default,,0000,0000,0000,,Isolation haben, sodass man ihnen die\N– wenn eine App irgendwie Amok läuft, Dialogue: 0,0:11:35.41,0:11:41.64,Default,,0000,0000,0000,,dass das dann nicht alle anderen mit runter\Nreißt – und da bietet Kubernetes auch von Dialogue: 0,0:11:41.64,0:11:49.33,Default,,0000,0000,0000,,Haus aus eine Menge Sachen. Einmal kann man\Nnach Namespaces isolieren. Hier, das Dialogue: 0,0:11:49.33,0:11:54.72,Default,,0000,0000,0000,,wäre das Kommandozeilen-Tool "CubeControl".\NHier sieht man jetzt die Namespaces, die Dialogue: 0,0:11:54.72,0:12:00.51,Default,,0000,0000,0000,,laufen und die Apps kann man mehr oder\Nweniger gegeneinander über Namespaces Dialogue: 0,0:12:00.51,0:12:05.38,Default,,0000,0000,0000,,isolieren. Aber so könnte man neben meinem\NTeam oder eben auch einem Code-For-Lab in Dialogue: 0,0:12:05.38,0:12:13.59,Default,,0000,0000,0000,,die Namespace zuweisen und ihnen den\NZugriff auf anderen Namespaces verhindern. Dialogue: 0,0:12:13.59,0:12:17.38,Default,,0000,0000,0000,,Und was auch noch interessant ist: Man kann\Ndann nachher die Container, die man laufen Dialogue: 0,0:12:17.38,0:12:23.25,Default,,0000,0000,0000,,lässt, denen kann man jeweils zuweisen, wie\Nviel Speicher sie maximal benutzen dürfen Dialogue: 0,0:12:23.25,0:12:26.71,Default,,0000,0000,0000,,oder wie viel CPU und in Zukunft\Nwahrscheinlich auch noch ein paar mehr Dialogue: 0,0:12:26.71,0:12:33.65,Default,,0000,0000,0000,,Sachen. Das definiert man dann genauso in\Nden in den YAML-Manifesten. Deswegen sehen Dialogue: 0,0:12:33.65,0:12:43.50,Default,,0000,0000,0000,,die halt sehr komplex aus, weil man darüber\Nalles Mögliche nachher einrichten kann. Es Dialogue: 0,0:12:43.50,0:12:51.93,Default,,0000,0000,0000,,gibt dann – ja – also Kubernetes wird, alle\Ndrei Monate gibt es ein neues Release und Dialogue: 0,0:12:51.93,0:13:00.40,Default,,0000,0000,0000,,da kommen eigentlich halt laufend neue\NFeatures rein. Es wird von einer Foundation, Dialogue: 0,0:13:00.40,0:13:09.99,Default,,0000,0000,0000,,von der "Cloud Native Computing Foundation"\Nheißt sie glaube ich, soweit betreut und im Dialogue: 0,0:13:09.99,0:13:14.20,Default,,0000,0000,0000,,Hintergrund stehen halt alle möglichen\Ngroßen Firmen und auch viele kleine, von Dialogue: 0,0:13:14.20,0:13:20.21,Default,,0000,0000,0000,,RedHat, Microsoft, Amazon, Google\Nlogischerweise und die gesamte Entwicklung Dialogue: 0,0:13:20.21,0:13:26.42,Default,,0000,0000,0000,,geschieht aber komplett offen, also man\Nkann alles auf GitHub – Kubernetes verfolgen Dialogue: 0,0:13:26.42,0:13:29.95,Default,,0000,0000,0000,,und es gibt so Special Interest Groups für\Ndie verschiedenen Bereiche, eben auch bei Dialogue: 0,0:13:29.95,0:13:35.66,Default,,0000,0000,0000,,Netzwerk-Geschichten oder Rechte-\NGeschichten, die machen auch teilweise Dialogue: 0,0:13:35.66,0:13:40.25,Default,,0000,0000,0000,,wöchentliche Treffen, wo man sich dann\Nirgendwie zuschalten kann über Hangout. Also das Dialogue: 0,0:13:40.25,0:13:45.68,Default,,0000,0000,0000,,ganze System ist halt sehr offen und die\NCommunity ist sehr wichtig in dem ganzen Dialogue: 0,0:13:45.68,0:13:52.58,Default,,0000,0000,0000,,Entwicklungsprozess und laufend gibt es\Nhalt weitere Features vor allem in Sachen Dialogue: 0,0:13:52.58,0:14:01.84,Default,,0000,0000,0000,,Sicherheit, ja, oder auch Dinge, die uns\Ndas Leben einfacher machen. Zum Beispiel Dialogue: 0,0:14:01.84,0:14:07.15,Default,,0000,0000,0000,,gibt es eine Abstraktionsschicht, das nennt\Nsich Ingresses. Also wir haben unsere Apps Dialogue: 0,0:14:07.15,0:14:12.51,Default,,0000,0000,0000,,jetzt in Containern laufen auf dem\NCluster. Jetzt hätten wir gerne, dass wir Dialogue: 0,0:14:12.51,0:14:17.65,Default,,0000,0000,0000,,die von außen immer die Domain erreichen\Nkönnen. Und da gibt es einfach ein Tool das Dialogue: 0,0:14:17.65,0:14:26.82,Default,,0000,0000,0000,,man installieren kann. Das nennt sich – das\Nist im Endeffekt ein Proxy auf Basis von Dialogue: 0,0:14:26.82,0:14:35.54,Default,,0000,0000,0000,,NGINX, hier haben wir nur Text, wir können\Nmal kurz bei uns schauen, die werden auch Dialogue: 0,0:14:35.54,0:14:40.89,Default,,0000,0000,0000,,über die YAML-Manifeste\Ndefiniert und hier sehen wir jetzt die Dialogue: 0,0:14:40.89,0:14:46.87,Default,,0000,0000,0000,,verschiedenen Domains und die verweisen\Njeweils dann quasi über einen Dialogue: 0,0:14:46.87,0:14:52.17,Default,,0000,0000,0000,,Zwischenschritt noch auf die Container, die\Nlaufen. Das heißt, wir definieren, ich habe Dialogue: 0,0:14:52.17,0:15:01.84,Default,,0000,0000,0000,,glaube ich, wo hab ichs, wahrscheinlich hier –\NGenau. Das sieht im Endeffekt so aus. Auch Dialogue: 0,0:15:01.84,0:15:08.94,Default,,0000,0000,0000,,wieder für diese "Traffics Shiny App", da\Ntragen wir ein: Das soll die Domain Dialogue: 0,0:15:08.94,0:15:17.35,Default,,0000,0000,0000,,sein, verweist auf Container, die unter dem\NNamen laufen und außerdem hätten wir gerne Dialogue: 0,0:15:17.35,0:15:24.04,Default,,0000,0000,0000,,das automatisch Let's Encrypt eingerichtet\Nwird. Also derjenige, der diese App bastelt Dialogue: 0,0:15:24.04,0:15:28.71,Default,,0000,0000,0000,,und auf den Cluster schiebt, braucht sich\Nselbst darum auch nicht kümmern. Er muss Dialogue: 0,0:15:28.71,0:15:33.27,Default,,0000,0000,0000,,nur sagen, wie die Adresse heißen soll, dann\Nwird es angelegt, im Hintergrund "Let´s Dialogue: 0,0:15:33.27,0:15:40.15,Default,,0000,0000,0000,,Encrypt"-Zertifikate erzeugt – die werden\Nauch passend erneuert. Man muss es nur halt Dialogue: 0,0:15:40.15,0:15:42.95,Default,,0000,0000,0000,,einmal definieren, dass man das gerne haben\Nmöchte und man muss noch ein Cert- Dialogue: 0,0:15:42.95,0:15:49.31,Default,,0000,0000,0000,,Manager im Cluster laufen lassen. Also im\NEndeffekt: Dieser Ingres-Controller oder Dialogue: 0,0:15:49.31,0:15:55.41,Default,,0000,0000,0000,,die Cert-Manager, die laufen die ganze Zeit\Nim Hintergrund und gucken, ob eine neue Dialogue: 0,0:15:55.41,0:16:00.58,Default,,0000,0000,0000,,Ingress-Definition gegen die Kubernetes-\NAPI geschickt wird. Und sobald sie das Dialogue: 0,0:16:00.58,0:16:05.52,Default,,0000,0000,0000,,sehen, konfigurieren sie NGINX neu, holen\Nsich die "Let's Encrypt"-Zertifikate, legen Dialogue: 0,0:16:05.52,0:16:12.15,Default,,0000,0000,0000,,die passend ab. Also alles Dinge, die man\Nsich im Detail anschauen kann, wenn man Dialogue: 0,0:16:12.15,0:16:26.20,Default,,0000,0000,0000,,möchte, aber eben nicht unbedingt muss.\NWas natürlich auch ganz nett ist, wenn man Dialogue: 0,0:16:26.20,0:16:33.08,Default,,0000,0000,0000,,einmal Monitoring für den Cluster\Neingerichtet hat – oder eben Logdateien, die Dialogue: 0,0:16:33.08,0:16:37.17,Default,,0000,0000,0000,,kann man alle zentral sich von all den\NContainern holen, die über mehrere Server Dialogue: 0,0:16:37.17,0:16:45.05,Default,,0000,0000,0000,,verteilt laufen und dann zentral sich\Nanschauen. Also zu Monitoring wird oft Dialogue: 0,0:16:45.05,0:16:52.13,Default,,0000,0000,0000,,Prometheus im Hintergrund eingesetzt und\NGraphana, und so kann man sich Dashboards Dialogue: 0,0:16:52.13,0:16:56.29,Default,,0000,0000,0000,,irgendwie basteln und jeweils dann auch für\Neine bestimmte App oder für einen Namespace Dialogue: 0,0:16:56.29,0:17:02.22,Default,,0000,0000,0000,,filtern und den tatsächlichen CPU oder\NNetzwerkverkehr sich anschauen. Also es Dialogue: 0,0:17:02.22,0:17:06.55,Default,,0000,0000,0000,,muss halt nur einmal gemacht werden und\Nauch wenn neue Apps eingerichtet werden Dialogue: 0,0:17:06.55,0:17:13.54,Default,,0000,0000,0000,,und hoch kommen, läuft automatisch alles\Nmit ins Monitoring oder Logging über Dialogue: 0,0:17:13.54,0:17:22.54,Default,,0000,0000,0000,,Elasticsearch und Kibana. Ja, und dann kann\Nman auf der Basis auch Alerts definieren Dialogue: 0,0:17:22.54,0:17:28.33,Default,,0000,0000,0000,,und die in seinen Slack-Channel (also Open-\NKnowledge-Channel) theoretisch irgendwie Dialogue: 0,0:17:28.33,0:17:32.43,Default,,0000,0000,0000,,schicken lassen und dann könnten ein paar\NFreiwillige sich darum kümmern, wenn sie Dialogue: 0,0:17:32.43,0:17:42.24,Default,,0000,0000,0000,,sehen, dass irgendwas im Argen liegt. Paar\NSachen gibt es auch bei uns immer noch zu Dialogue: 0,0:17:42.24,0:17:48.31,Default,,0000,0000,0000,,verbessern. Also einmal zur Zeit nutzen wir \Nden Standardweg zur Authentifizierung. Das Dialogue: 0,0:17:48.31,0:17:54.16,Default,,0000,0000,0000,,sind Zertifikate bei Kubernetes. Das kann\Nman eventuell auch eleganter lösen über Dialogue: 0,0:17:54.16,0:17:59.49,Default,,0000,0000,0000,,ein Keycloak-Setup und dann hauen wir\Nunsere Leute in eine GitHub-Gruppe und die Dialogue: 0,0:17:59.49,0:18:03.70,Default,,0000,0000,0000,,bekommen dann darüber Zugriff. Wir haben\Nauch schon laufen ein verteiltes Dialogue: 0,0:18:03.70,0:18:13.88,Default,,0000,0000,0000,,Dateisystem. Also alle unsere drei Server\Nlaufen zur Zeit bei Scaleway, und die haben Dialogue: 0,0:18:13.88,0:18:17.89,Default,,0000,0000,0000,,halt irgendwie keinen Cloudspeicher.\NDeswegen muss man sich halt selber darum Dialogue: 0,0:18:17.89,0:18:24.83,Default,,0000,0000,0000,,kümmern, dass man sein System am\Nbesten verteilt laufen lässt, weil wir ja Dialogue: 0,0:18:24.83,0:18:30.16,Default,,0000,0000,0000,,auch ausfallsicher sein wollen, falls\Nmal ein Node irgendwie komplett abschmiert. Dialogue: 0,0:18:30.16,0:18:34.48,Default,,0000,0000,0000,,Und da gibt es auch verschiedene Sachen,\Ndie fürs Kubernetes Umfeld gebastelt Dialogue: 0,0:18:34.48,0:18:40.66,Default,,0000,0000,0000,,werden. Zum Beispiel OpenEBS. Da\Nkann man dann einfach die dis definieren, Dialogue: 0,0:18:40.66,0:18:47.38,Default,,0000,0000,0000,,die bei den bei den Servern hängen und\Nsagt, wie stark die Replizierung sein soll. Dialogue: 0,0:18:47.38,0:18:52.52,Default,,0000,0000,0000,,Wir spielen ein bisschen rum. Also da gibt es\Nauch immer Versionsupdates und man muss Dialogue: 0,0:18:52.52,0:18:56.56,Default,,0000,0000,0000,,gucken, wie gut man das migriert kriegt. Ist\Nnoch ein bisschen testweise, aber auch Dialogue: 0,0:18:56.56,0:19:03.69,Default,,0000,0000,0000,,theoretisch dann die Möglichkeit, dass man\Neinfach eine App starten lässt, der Dialogue: 0,0:19:03.69,0:19:08.06,Default,,0000,0000,0000,,Speicher OpenEBS zuweist und egal,\Nob diese App nachher – auf welchem Server Dialogue: 0,0:19:08.06,0:19:16.83,Default,,0000,0000,0000,,die nachher startet, kriegt die Zugriff auf\Nihre Daten. Das ist falsch, da muss Dialogue: 0,0:19:16.83,0:19:23.77,Default,,0000,0000,0000,,man ein Leerzeichen zwischen. So weit von\Nmir. Wir haben unser Setup bei Dialogue: 0,0:19:23.77,0:19:29.50,Default,,0000,0000,0000,,"Code for Münster" laufen. Ich selber kann auch\Ngerne noch mehr zu Kubernetes erzählen. Dialogue: 0,0:19:29.50,0:19:37.36,Default,,0000,0000,0000,,Also auch die nächsten ein, zwei Tage.\N@webwurst ist das Kürzel auf Twitter, GitHub, Dialogue: 0,0:19:37.36,0:19:43.57,Default,,0000,0000,0000,,Gmail oder einfach googlen. Der Name ist nicht so\Noft verwendet. Ja, also die Grundidee für Dialogue: 0,0:19:43.57,0:19:47.78,Default,,0000,0000,0000,,den Talk war ein bisschen, dass, wenn andere\NCode-for-Labs irgendwie auch Lust haben... Am Dialogue: 0,0:19:47.78,0:19:51.18,Default,,0000,0000,0000,,meisten Sinn macht es wahrscheinlich, dass\Nman sich Server teilt. Also wir haben eben Dialogue: 0,0:19:51.18,0:19:56.03,Default,,0000,0000,0000,,drei Server, die jetzt jeweils – die\Ninsgesamt ungefähr 100 Gigabyte RAM Dialogue: 0,0:19:56.03,0:20:02.37,Default,,0000,0000,0000,,haben. Das ist uns eigentlich zu viel, aber\Nkleinere sind irgendwie wieder teurer. Also Dialogue: 0,0:20:02.37,0:20:07.25,Default,,0000,0000,0000,,falls sich Leute zusammentun wollen oder\Neinfach nur neugierig sind auf Kubernetes Dialogue: 0,0:20:07.25,0:20:13.73,Default,,0000,0000,0000,,und wie man das sinnvoll einsetzt, haben\Nwir die Beispiele, helfen gerne aus – ja, und Dialogue: 0,0:20:13.73,0:20:20.92,Default,,0000,0000,0000,,würden gerne auch zusammenarbeit mit\Nanderen Code-for-Labs. Vielen Dank. Dialogue: 0,0:20:20.92,0:20:26.51,Default,,0000,0000,0000,,{\i1}Applaus{\i0} Dialogue: 0,0:20:26.51,0:20:31.76,Default,,0000,0000,0000,,Herald: Tobias – danke dir. So, wir haben noch\Nein bisschen Zeit für Fragen. Also wenn Dialogue: 0,0:20:31.76,0:20:35.07,Default,,0000,0000,0000,,irgendwer eine Frage hat, dann könnt ihr\Nmal irgendein Zeichen geben. Dann komme ich Dialogue: 0,0:20:35.07,0:20:46.04,Default,,0000,0000,0000,,gerne mit dem Mikrofon zu euch.\NMensch 1: Ich hätte 'ne Frage, und zwar: Dialogue: 0,0:20:46.04,0:20:52.54,Default,,0000,0000,0000,,Ich hab das eben nicht ganz verstanden.\NOpenEBS wolltet ihr als verteiltes Dateisystem Dialogue: 0,0:20:52.54,0:20:59.44,Default,,0000,0000,0000,,später einsetzen. Was nutzt ihr jetzt und\Nwieso habt ihr euch für OpenEBS entschieden? Dialogue: 0,0:20:59.44,0:21:04.24,Default,,0000,0000,0000,,Tobias: Wir hatten uns vorher mal Rook\Nangeschaut. Wir haben jetzt OpenEBS schon Dialogue: 0,0:21:04.24,0:21:07.92,Default,,0000,0000,0000,,laufen, aber ich nenne es noch\Nexperimentell. Also version 0.7 läuft, Dialogue: 0,0:21:07.92,0:21:14.02,Default,,0000,0000,0000,,gerade 0.8 ist glaube ich raus. Warum? Ich\Nhatte mit denen auf der auf der KubeCon Dialogue: 0,0:21:14.02,0:21:17.99,Default,,0000,0000,0000,,in Kopenhagen gesprochen und das sind\Nirgendwie 200 Leute im Team, die viel Storage Dialogue: 0,0:21:17.99,0:21:24.40,Default,,0000,0000,0000,,schon gemacht haben, komplett Open Source\Nund ich glaube, die haben da ganz gute Dialogue: 0,0:21:24.40,0:21:28.53,Default,,0000,0000,0000,,ideen – auch wenn das relativ komplex ist,\Nwas die da so schreiben zu ihrer Dialogue: 0,0:21:28.53,0:21:32.55,Default,,0000,0000,0000,,Architektur. Aber ja, das ist einfach der\NGrund. Wir sind auch offen für anderes, wenn's Dialogue: 0,0:21:32.55,0:21:37.62,Default,,0000,0000,0000,,gute Erfahrungen gibt, wenn du welche hast...\NMensch1: Nee, also ich frage deshalb, weil Dialogue: 0,0:21:37.62,0:21:43.28,Default,,0000,0000,0000,,wir haben nämlich auch den Instanzen,\Nmit denen ich bisher Erfahrungen gesammelt Dialogue: 0,0:21:43.28,0:21:48.24,Default,,0000,0000,0000,,habe, war das immer das große Fragezeichen\Nam Ende: Was was benutzen wir als Persistant Dialogue: 0,0:21:48.24,0:21:55.65,Default,,0000,0000,0000,,Storage? Weil ich finde, da sind die\NHürden sehr hoch für einen Einstieg, sage ich Dialogue: 0,0:21:55.65,0:22:01.64,Default,,0000,0000,0000,,mal. – oder was auch immer man da\Nirgendwie als als Dateisystem benutzen kann... Dialogue: 0,0:22:01.64,0:22:04.44,Default,,0000,0000,0000,,Und deswegen war ich einfach \Nnur neugierig. Dialogue: 0,0:22:04.44,0:22:06.37,Default,,0000,0000,0000,,Tobias: Das stimmt.\NMensch1: Weil, die Entscheidung steht Dialogue: 0,0:22:06.37,0:22:09.74,Default,,0000,0000,0000,,uns auch noch bevor.\NTobias: Alternativ, wenn du eine verteilte Dialogue: 0,0:22:09.74,0:22:15.65,Default,,0000,0000,0000,,Datenbank hast, kannst du eben auch Local\NStorage benutzen, aber – ja – musst du Dialogue: 0,0:22:15.65,0:22:20.52,Default,,0000,0000,0000,,halt irgendwie über die Datenbank\Ndann gehen. Ja. Dialogue: 0,0:22:20.52,0:22:23.59,Default,,0000,0000,0000,,Herald: Hier hinten war noch... Dialogue: 0,0:22:23.59,0:22:27.63,Default,,0000,0000,0000,,Mensch 2: Hallo. Ich wollte fragen: Wie lange\Nhat es dauert, euch das ganze Setup aufzusetzen Dialogue: 0,0:22:27.63,0:22:32.02,Default,,0000,0000,0000,,und seid ihr irgendwo darauf gestoßen,\Nwo ihr das nicht so umsetzen konntet, wie ihr Dialogue: 0,0:22:32.02,0:22:36.00,Default,,0000,0000,0000,,das umsetzen wolltet, beim Alarming oder\NMonitoring oder so? Also irgendwas rein Dialogue: 0,0:22:36.00,0:22:41.63,Default,,0000,0000,0000,,hacken haben müssen?\NTobias: Das Ganze ist schwer zu sagen. Als Dialogue: 0,0:22:41.63,0:22:47.83,Default,,0000,0000,0000,,wir angefangen haben, hatten wir auch\Nrelativ – ich glaube, da gab es noch nicht so Dialogue: 0,0:22:47.83,0:22:51.40,Default,,0000,0000,0000,,super viel fertiges Tooling. Ich glaub,\NPrometheus und Graphana hatten wir selbst Dialogue: 0,0:22:51.40,0:22:57.33,Default,,0000,0000,0000,,gebastelt, dann mit Docker auch noch, und das\Nwar so "learning by doing" auch ein bisschen. Dialogue: 0,0:22:57.33,0:23:02.63,Default,,0000,0000,0000,,Aber mittlerweile sehe ich jetzt eben\Nhalt: Storage ist immer ein bisschen eine Dialogue: 0,0:23:02.63,0:23:07.81,Default,,0000,0000,0000,,Schwierigkeit oder verteilte Datenbanken,\Naber grundsätzlich – der Aufbau von dem Dialogue: 0,0:23:07.81,0:23:14.82,Default,,0000,0000,0000,,System oder eben auch diese einfache\NPipeline mit Flux, das steht halt und Dialogue: 0,0:23:14.82,0:23:22.48,Default,,0000,0000,0000,,tut. Also, da haben wir keine großen Probleme\Ngerade. Auch im Monitoring ändert Dialogue: 0,0:23:22.48,0:23:27.69,Default,,0000,0000,0000,,sich halt laufend was. Also am spannendsten\Nist jetzt der Prometheus Operator Dialogue: 0,0:23:27.69,0:23:31.72,Default,,0000,0000,0000,,eventuell und da gibt es dann Kube\NPrometheus, und die generieren dir eine Dialogue: 0,0:23:31.72,0:23:36.31,Default,,0000,0000,0000,,ganze Menge Dashboards, und du hast auch\Neine Art Programmiersprache dann für die Dialogue: 0,0:23:36.31,0:23:40.79,Default,,0000,0000,0000,,Dashboards, die du verwenden kannst. Ja, es gibt\Nständig was Neues zu entdecken und Dialogue: 0,0:23:40.79,0:23:46.46,Default,,0000,0000,0000,,auszuprobieren.\NHerald: Okay, hier war noch jemand... Dialogue: 0,0:23:46.46,0:23:56.09,Default,,0000,0000,0000,,Mensch 3: Vielleicht könnt ihr auch noch\Nprobieren, die StorageOS. ich Dialogue: 0,0:23:56.09,0:24:01.78,Default,,0000,0000,0000,,habe mit den Leuten auch geredet auch in\NKopenhagen. Sieht auch interessant aus. Dialogue: 0,0:24:01.78,0:24:05.23,Default,,0000,0000,0000,,Und dann, Sie haben drei Server?\NTobias: Ja. Dialogue: 0,0:24:05.23,0:24:07.51,Default,,0000,0000,0000,,Mensch 3: So, das sind drei Master \Nund auch Node? Dialogue: 0,0:24:07.51,0:24:12.61,Default,,0000,0000,0000,,Tobias: Ja. Also wir haben den Master\Nhalt nur auf einem laufen, aber Dialogue: 0,0:24:12.61,0:24:16.43,Default,,0000,0000,0000,,trotzdem nutzen wir den auch für normale –\NMensch 3: Nur ein Master? Dialogue: 0,0:24:16.43,0:24:19.47,Default,,0000,0000,0000,,Tobias: Ja, wir haben einen Master,\Nund wenn der down geht, Dialogue: 0,0:24:19.47,0:24:23.49,Default,,0000,0000,0000,,läuft ja der restliche Kram auch noch\Nweiter, bis wir ihn wieder hochziehen. Dialogue: 0,0:24:23.49,0:24:26.53,Default,,0000,0000,0000,,Das Ding ist, dass wir das eben auch \Nalles hobbymäßig machen und selber Dialogue: 0,0:24:26.53,0:24:34.96,Default,,0000,0000,0000,,finanzieren. Also für das Code-for... auch\Nnur einer. Funktioniert aber, wenn Dialogue: 0,0:24:34.96,0:24:38.64,Default,,0000,0000,0000,,ich den einfach neu starte, dann\Nwarte ich fünf Minuten und dann hat sich Dialogue: 0,0:24:38.64,0:24:44.40,Default,,0000,0000,0000,,alles wieder gefunden. Ja, und die Apps auf\Nden anderen Nodes laufen halt eh weiter und Dialogue: 0,0:24:44.40,0:24:48.54,Default,,0000,0000,0000,,können weiter von außen erreichbar sein.\NMensch 3: Habt ihr schon mal gedacht, ein Dialogue: 0,0:24:48.54,0:24:55.12,Default,,0000,0000,0000,,Operator? Dann bräuchte man nicht\Ndie Storage distribuieren, aber dann Dialogue: 0,0:24:55.12,0:25:01.69,Default,,0000,0000,0000,,alle sieben, dann wird zum Beispiel Postgres,\Nder wird realisiert und der Operator, der Dialogue: 0,0:25:01.69,0:25:04.56,Default,,0000,0000,0000,,handelt das.\NTobias: Ja, gucken wir uns auf jeden Fall Dialogue: 0,0:25:04.56,0:25:11.85,Default,,0000,0000,0000,,an, was es da gibt. Oft hat man eben nicht –\NElasticsearch tut es ganz gut, wenn man Dialogue: 0,0:25:11.85,0:25:17.08,Default,,0000,0000,0000,,das Ding in dreifach laufen lässt. Postgres\Nund MySQL kann man ganz gut hochziehen als Dialogue: 0,0:25:17.08,0:25:23.53,Default,,0000,0000,0000,,Operator über mehrere Nodes, aber\Nsobald irgendwas schief läuft, können die Dialogue: 0,0:25:23.53,0:25:27.48,Default,,0000,0000,0000,,Operator zur Zeit da noch nicht aushelfen.\NDann muss man die man alle manuell neu Dialogue: 0,0:25:27.48,0:25:31.13,Default,,0000,0000,0000,,starten. Das ist okay, aber irgendwie –\Nes gibt nicht so viel was sich selbst dann Dialogue: 0,0:25:31.13,0:25:32.97,Default,,0000,0000,0000,,repariert. Wird wahrscheinlich noch kommen,\Naber – Dialogue: 0,0:25:32.97,0:25:40.08,Default,,0000,0000,0000,,Herald: Du hattest eine Frage?\NMensch 4: Du hattest gerade, wenn der Dialogue: 0,0:25:40.08,0:25:44.88,Default,,0000,0000,0000,,Master kaputt geht, dann funktionieren die\NServices trotzdem weiter. Wie macht ihr das Dialogue: 0,0:25:44.88,0:25:48.81,Default,,0000,0000,0000,,dann mit diesem Ingress, also wo kommt\Ndas DNS an? Dialogue: 0,0:25:48.81,0:25:53.96,Default,,0000,0000,0000,,Tobias: Wir haben es versucht über so\Neinen DNS Round Robin. Also es war einfach – Dialogue: 0,0:25:53.96,0:25:59.42,Default,,0000,0000,0000,,Der Ingress Controller läuft auf allen – dingens.\NJa gerne was Besseres, aber bei Scaleway, wo wir Dialogue: 0,0:25:59.42,0:26:02.83,Default,,0000,0000,0000,,sind, die haben halt keinen Loadbalancer\Ndavor. Also die bieten das nicht irgendwie als Dialogue: 0,0:26:02.83,0:26:06.84,Default,,0000,0000,0000,,Service an. Die haben wohl eine IP, die man\Nvon Node zu Node ziehen kann, aber auch nicht Dialogue: 0,0:26:06.84,0:26:12.77,Default,,0000,0000,0000,,gleichzeitig an mehrere. Ja, es ist halt ein\Ngünstiges Setup für Code-for. Wenn sich mehr Dialogue: 0,0:26:12.77,0:26:17.42,Default,,0000,0000,0000,,zusammentun, können wir vielleicht auch\Netwas Spannenderes uns überlegen. Ja, aber Dialogue: 0,0:26:17.42,0:26:28.44,Default,,0000,0000,0000,,bisher ist es einfach so gelöst. Wir haben jetzt\Nja auch nicht so lebenswichtige Apps, genau. Dialogue: 0,0:26:28.44,0:26:41.34,Default,,0000,0000,0000,,Herald: Okay, hat noch jemand eine Frage? Ich\Nsehe keine mehr. Sonst schreit noch mal jemand. Dialogue: 0,0:26:41.34,0:26:47.39,Default,,0000,0000,0000,,Tobias: Gut, also wenn noch irgendwie\NFragen später sind: Schreibt auf "Open-\N Dialogue: 0,0:26:47.39,0:26:51.34,Default,,0000,0000,0000,,Knowledge-Slack, Code for Münster" oder\N@webwurst oder über Twitter oder sonstwie. \N Dialogue: 0,0:26:51.34,0:26:55.82,Default,,0000,0000,0000,,Würde ich mich gerne unterhalten mit Leuten.\NHerald: Dann nochmal Applaus für Tobias, bitte. Dialogue: 0,0:26:55.82,0:27:01.52,Default,,0000,0000,0000,,{\i1}Applaus{\i0}\NTobias: Vielen Dank. Dialogue: 0,0:27:01.52,0:27:07.39,Default,,0000,0000,0000,,{\i1}Abspannmusik{\i0} Dialogue: 0,0:27:07.39,0:27:24.41,Default,,0000,0000,0000,,Untertitel erstellt von c3subtitles.de\Nim Jahr 2019. Mach mit und hilf uns!