├── 2019-02-13-microservice-observability └── cncf_nbg_micro_obs.pdf ├── 2019-04-10_13-cloudy-years └── 13-cloudy-years.md ├── 2019-07-10-external-dns └── WhizUs-Meetup-NUE-2019-07-10-ExternalDNS-K8s.pdf ├── 2019-07-10_commit-to-deploy └── README.md ├── 2019-10-09-deep-dive-into-droneci └── deep-dive-into-droneci.md ├── 2019-10-09-kubernetes-networking-101 └── cncf_nbg_k8s_networking.pdf ├── 2019-12-11-grafana-loki └── 2019_12_11_grafana_loki.pdf ├── 2019-12-11-koris └── koris.pdf ├── 2020-08-19-pubquiz ├── answers.md └── quiz.md ├── 2022-09-13-Knative-Serverless-Eventing └── knative-serverless-eventing.pdf ├── 2022-09-13-Kubernetes-Secrets-ConfigMaps └── KubernetesSecrets&ConfigMaps.pdf ├── README.md ├── kubeadm-presentation ├── kubeadm.html ├── slides.css ├── slides.md └── static │ ├── mermaid.min.css │ ├── mermaid.min.js │ └── remark-latest.min.js └── linstor-presentation └── LINBIT-LINSTOR.pdf /2019-02-13-microservice-observability/cncf_nbg_micro_obs.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8s-nue-meetup/talks/a2cf4015f82cc45450c63ecec63e39238597a595/2019-02-13-microservice-observability/cncf_nbg_micro_obs.pdf -------------------------------------------------------------------------------- /2019-04-10_13-cloudy-years/13-cloudy-years.md: -------------------------------------------------------------------------------- 1 | [13 Cloudy Years](https://www.prechtel.eu/talks/13-cloudy-years/index.html) 2 | -------------------------------------------------------------------------------- /2019-07-10-external-dns/WhizUs-Meetup-NUE-2019-07-10-ExternalDNS-K8s.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8s-nue-meetup/talks/a2cf4015f82cc45450c63ecec63e39238597a595/2019-07-10-external-dns/WhizUs-Meetup-NUE-2019-07-10-ExternalDNS-K8s.pdf -------------------------------------------------------------------------------- /2019-07-10_commit-to-deploy/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | author: Stefan Schwarz @foosinn 3 | title: Continuous Integration 4 | date: 10.07.2019 5 | --- 6 | 7 | # post-notes 8 | 9 | You can run the whole deployment and the **live-demo** locally: 10 | [Upstream Repo](https://github.com/foosinn/slides/tree/master/commit-to-deploy) 11 | 12 | Links: 13 | 14 | * https://github.com/foosinn/slides My Slides 15 | * https://github.com/bitsbeats/drone-tree-config Monorepo Plugin 16 | * https://github.com/bitsbeats/drone-docker-matrix Matrix Build Plugin 17 | * https://github.com/bitsbeats/hub Docker Registry Viewer 18 | 19 | # whoami 20 | 21 | * Sysadmin at Thomann Bits & Beats 22 | * Admin at Hackerspace Bamberg 23 | * Lead guitar at Varus @varusband 24 | 25 | # Drone? 26 | 27 | * CI and CD System 28 | * Open Source & Enterprise variant 29 | * 1.0.0 since March 30 | * Container based CI 31 | * Plugin infrastructure 32 | 33 | # Usage 34 | 35 | * Pipline configuration in repository 36 | * Example: 37 | 38 | ```yaml 39 | kind: pipeline 40 | name: default 41 | 42 | - name: backend 43 | image: golang 44 | commands: 45 | - go build 46 | - go test 47 | ``` 48 | 49 | # Goals 50 | 51 | * Staging + Production environment based on commit / git tag 52 | * Rollbacks in production 53 | * No secrets in Docker images 54 | * No development dependencies in containers 55 | * Local testing 56 | 57 | # Demo Time 58 | 59 | What could possibly go wrong? 60 | 61 | # Things to note 62 | 63 | * Include git sha in deployment on pod 64 | * required for stating 65 | * Include secret/configmap sha in deployment on pod 66 | * required for secret / configmap changes 67 | * This example is not production ready (namespace separation / helm security / secrets) 68 | 69 | # Things to come 70 | 71 | * Container update management 72 | * security issues 73 | * os dependencies 74 | * application dependencies 75 | 76 | # Related Software 77 | 78 | * Minio - s3 compatible cache https://min.io/ 79 | * Lots of Plugins http://plugins.drone.io 80 | 81 | # Monorepo Support 82 | 83 | * https://github.com/bitsbeats/drone-tree-config 84 | * Apache 2.0 85 | * Support multiple drone.yml 86 | * Works on directory structure 87 | 88 | # Matrix Builds 89 | 90 | * https://github.com/bitsbeats/drone-docker-matrix 91 | * Apache 2.0 92 | 93 |
94 |
95 | 96 | ``` 97 | ARG VERSION=10 98 | FROM node:$VERSION-alpine 99 | ENV LANG=C.UTF-8 100 | 101 | ARG BUILD_DEPS=clean 102 | 103 | RUN true \ 104 | && test $BUILD_DEPS == "build" \ 105 | && apk --no-cache build-base \ 106 | || true 107 | ``` 108 | 109 |
110 |
111 | 112 | ```yaml 113 | multiply: 114 | VERSION: 115 | - 10 116 | - 8 117 | - 6 118 | BUILD_DEPS: 119 | - '' 120 | - build 121 | ``` 122 | 123 |
124 |
125 | 126 | ``` 127 | images/node:10 128 | images/node:10-build 129 | images/node:6 130 | images/node:6-build 131 | images/node:8 132 | images/node:8-build 133 | ``` 134 | -------------------------------------------------------------------------------- /2019-10-09-deep-dive-into-droneci/deep-dive-into-droneci.md: -------------------------------------------------------------------------------- 1 | [Deep dive into Drone CI](https://talks.boerger.ws/#/deep-dive-into-droneci) 2 | -------------------------------------------------------------------------------- /2019-10-09-kubernetes-networking-101/cncf_nbg_k8s_networking.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8s-nue-meetup/talks/a2cf4015f82cc45450c63ecec63e39238597a595/2019-10-09-kubernetes-networking-101/cncf_nbg_k8s_networking.pdf -------------------------------------------------------------------------------- /2019-12-11-grafana-loki/2019_12_11_grafana_loki.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8s-nue-meetup/talks/a2cf4015f82cc45450c63ecec63e39238597a595/2019-12-11-grafana-loki/2019_12_11_grafana_loki.pdf -------------------------------------------------------------------------------- /2019-12-11-koris/koris.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8s-nue-meetup/talks/a2cf4015f82cc45450c63ecec63e39238597a595/2019-12-11-koris/koris.pdf -------------------------------------------------------------------------------- /2020-08-19-pubquiz/answers.md: -------------------------------------------------------------------------------- 1 | 1. c 2 | 2. b 3 | 3. 1.18.8 4 | 4. “Project Seven”— named after Seven of Nine, a friendly “Star Trek” character hailing from the Borg group. 5 | https://www.vmware.com/radius/what-is-kubernetes-7-facts/ 6 | 5. JD.com https://www.cncf.io/blog/2018/08/02/qa-with-jd-com-kubernetes-cloud-native-and-cncf-projects-driving-big-data-and-ai/ 7 | 6. A component config allows configuring a Kubernetes Components to be configured via a config file instead of CLI fligs. Currently supported by: Kubelet, Kube-Proxy and Kube-Scheduler. 8 | 7. Docker, containerd, CRI-O and any CRI implementation. 9 | 8. 2015 10 | 9. 2017 in Berlin 11 | 10. Gentoo 12 | 11. e, https://github.com/rancher/kine 13 | 12. no korrect answer ;-) https://www.youtube.com/watch?v=2wgAIvXpJqU 14 | 13. b - given that dockerd depends on containerd - if both are found kuberenetes (as for version 1.18 will choose docker) 15 | 14. true https://github.com/automaticserver/lxe 16 | 15. JAVA https://www.reddit.com/r/kubernetes/comments/aizidy/did_you_know_that_kubernetes_was_originally/ 17 | 16. https://www.reddit.com/r/docker/comments/1w2aco/why_is_docker_written_in_go/ 18 | 17. 26 https://k8s.devstats.cncf.io/d/9/companies-table?orgId=1 (The number is for August 2020) 19 | 18. c, https://www.weave.works/blog/weaveworks-named-a-top-kubernetes-contributor 20 | 19. c, https://gcollazo.com/the-security-footgun-in-etcd/ 21 | 20. b, https://github.com/etcd-io/etcd/tree/master/raft 22 | 21. e, all of the above 23 | -------------------------------------------------------------------------------- /2020-08-19-pubquiz/quiz.md: -------------------------------------------------------------------------------- 1 | CNCF Meetup Nürnberg - Pub Quiz August 2020 2 | 3 | These question are meant to be fun some trivia and some knowledge based and help us all learn and test our knowledge of Kubernetes the CNCF eco-system. Don't take them too seriously. The answers with links to sources will be published in our github repository shortly after the meetup. 4 | 5 | 1. What does Giant Swarm have to do with porn? 6 | 7 | a) GiantSwarm powers the largest porn sites of the world 8 | b) GiantSwarm founders also run the website crabpornos.de 9 | c) Fabian Thylmann (known as head if pornhub, youporn etc.) is one of Giant Swarm's investors. His brother Oliver Thylmann is the Founder & CEO. 10 | 11 | 2. How many registrations did KubeCon Europe 2019 in Barcelona have? 12 | 13 | a) 5500 14 | b) 7700 15 | c) 11000 16 | d) 3300 17 | 18 | 3. What is the latest Kubernetes version? 19 | 20 | 4. What was kubernetes originally called? 21 | 22 | 5. Who has the probably largest Kubernetes cluster of the world in productive use? 23 | 24 | a) Alibaba 25 | b) Amazon 26 | c) JD.com 27 | d) Zalando 28 | 29 | 6. What's a component config and which Kubernetes components support one? 30 | 31 | 7. What container engines does Kubernetes support? 32 | 33 | 8. In which year was Kubernetes 1.0 released? 34 | 35 | 9. When and where was the first KubeCon in Europe? 36 | 37 | 10. Which operating system was the originally used as the basis for CoreOS? 38 | 39 | 11. The following databases can be used as data backend for K8S: 40 | 41 | a) etcd b) MySQL c) Postgresql d) SQLite e) All of the above 42 | 43 | 12. How do you pronounce kubectl? (There is no correct answer, just fun ...) 44 | 45 | 13. The default container run time environment in kubernets is: 46 | a) cri-o 47 | b) docker 48 | c) containerd 49 | d) lxc 50 | 51 | 14. Kubernetes can provision LXC containers 52 | true 53 | false 54 | 55 | 15. Kuberenetes was originally written in: 56 | 57 | a) C++ 58 | b) JAVA 59 | c) OCaml 60 | d) Objective-C 61 | 62 | 16. Docker was originally written in: 63 | 64 | a) Python 65 | b) JAVA 66 | c) C++ 67 | d) Haskell 68 | 69 | 17. Among the top 1000 contributing companies to Kubernetes are X German companies: 70 | 71 | a) 126 72 | b) 12 73 | c) 99 74 | d) 26 75 | 76 | 18. In 2019 Kuberenetes has had contributions from X developers: 77 | 78 | a) 32K 79 | b) 25K 80 | c) 35K 81 | d) 23K 82 | 83 | 19. The etcd footgun in older (2.1 and earlier) was: 84 | 85 | a) quirky command line API 86 | b) no JAVA client 87 | c) no authentication per default 88 | d) broken quorum which caused k8s clusters to loose data 89 | 90 | 20. etcd is a distributed data store which is coordinated using: 91 | 92 | a) the swift protocol 93 | b) the raft protocol 94 | c) the 0mq protocol 95 | d) the paxos protocol 96 | 97 | 21. One can write kubectl plugins in: 98 | 99 | a) Go 100 | b) Python 101 | c) Shell 102 | d) Kotlin 103 | e) all of the above 104 | -------------------------------------------------------------------------------- /2022-09-13-Knative-Serverless-Eventing/knative-serverless-eventing.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8s-nue-meetup/talks/a2cf4015f82cc45450c63ecec63e39238597a595/2022-09-13-Knative-Serverless-Eventing/knative-serverless-eventing.pdf -------------------------------------------------------------------------------- /2022-09-13-Kubernetes-Secrets-ConfigMaps/KubernetesSecrets&ConfigMaps.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8s-nue-meetup/talks/a2cf4015f82cc45450c63ecec63e39238597a595/2022-09-13-Kubernetes-Secrets-ConfigMaps/KubernetesSecrets&ConfigMaps.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Talks for the Kubernetes Meetup Nürnberg 2 | 3 | This repository is aggregating slides and talk suggestion for [Kubernetes Meetup Nürnberg][1]. 4 | 5 | ## Workflow 6 | 7 | 1. You have an idea for a talk 8 | 2. Create an issue with your talk title, write a few words about your talk. 9 | 3. Everyone can vote for a talk which they find interesting. 10 | 4. If a talk has enough votes it gets approved by the organizers. 11 | 5. The talk is scheduled and announced in the meetup page. 12 | 6. The talk is given and the slides are added to this repo. 13 | 14 | 15 | [1]: https://community.cncf.io/nurnberg/ 16 | -------------------------------------------------------------------------------- /kubeadm-presentation/kubeadm.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Advanced Web Programming with Python 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /kubeadm-presentation/slides.css: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz); 2 | @import url(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic); 3 | @import url(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic); 4 | 5 | body { 6 | font-family: 'Droid Serif'; 7 | } 8 | p { 9 | font-size: 34px; 10 | } 11 | h1, h2, h3 { 12 | font-family: 'Yanone Kaffeesatz'; 13 | font-weight: 400; 14 | margin-bottom: 0; 15 | } 16 | .remark-slide-content h1 { font-size: 3em; } 17 | .remark-slide-content h2 { font-size: 2em; } 18 | .remark-slide-content h3 { font-size: 1.6em; } 19 | .footnote { 20 | position: absolute; 21 | bottom: 3em; 22 | } 23 | li p { line-height: 1.20em; 24 | font-size: 32px; 25 | } 26 | .red { color: #fa0000; } 27 | .large { font-size: 2em; } 28 | a, a > code { 29 | color: rgb(249, 38, 114); 30 | text-decoration: none; 31 | } 32 | code { 33 | background: #e7e8e2; 34 | border-radius: 5px; 35 | color: black; 36 | } 37 | 38 | .remark-code, .remark-inline-code { 39 | font-family: 'Ubuntu Mono'; 40 | background: #e7e8e2; 41 | 42 | } 43 | .remark-code-line-highlighted { 44 | background-color: #373832; 45 | background: #e7e8e2; 46 | } 47 | .pull-left { 48 | float: left; 49 | width: 47%; 50 | } 51 | .pull-right { 52 | float: right; 53 | width: 47%; 54 | } 55 | .pull-right ~ p { 56 | clear: both; 57 | } 58 | #slideshow .slide .content code { 59 | font-size: 0.8em; 60 | } 61 | #slideshow .slide .content pre code { 62 | font-size: 0.6em; 63 | padding: 12px; 64 | } 65 | 66 | ul li { 67 | font-size: 32px; 68 | padding: 3px 0px; } 69 | 70 | .remark-inline-code { 71 | font-family: 'Ubuntu Mono'; 72 | background: #e7e8e2; 73 | font-size: 1.0em; 74 | } 75 | 76 | .remark-code { 77 | font-family: 'Ubuntu Mono'; 78 | background: #e7e8e2; 79 | font-size: 1.2em; 80 | } 81 | 82 | .remark-small-code { 83 | font-family: 'Ubuntu Mono'; 84 | font-size: 0.9em; 85 | } 86 | 87 | .remark-small-code p { 88 | font-size: 18px; 89 | } 90 | 91 | .img-left { 92 | width: 50%; 93 | float: left; 94 | } 95 | .img-right { 96 | width: 50%; 97 | float: right; 98 | } 99 | /* Two-column layout */ 100 | .left-column { 101 | color: #777; 102 | width: 20%; 103 | height: 92%; 104 | float: left; 105 | } 106 | .left-column h2:last-of-type, .left-column h3:last-child { 107 | color: yellow; 108 | } 109 | .yellow{ 110 | color: yellow; 111 | } 112 | 113 | img[alt$="-resize-50"]{ 114 | margin-top: -30px; 115 | width: 75%; 116 | height: 30%; 117 | } 118 | 119 | img[alt$="-resize-b"]{ 120 | width: 100%; 121 | } 122 | 123 | .span { 124 | width: 100%; 125 | } 126 | /*trbl*/ 127 | img[alt$="-clip-b"]{ 128 | margin-top: 10px; 129 | position: absolute; 130 | clip: rect(0px auto 225px auto); 131 | } 132 | .right-column { 133 | width: 75%; 134 | float: right; 135 | padding-top: 1em; 136 | } 137 | 138 | .right-column .{ 139 | background: #e7e8e2; 140 | } 141 | .lblue { 142 | background: #A9BFD4; 143 | } 144 | .term { 145 | /*color: #6CF02B;*/ 146 | color: #61DD24; 147 | /*background: #4D4D4D;*/ 148 | background: #383B3E; 149 | } 150 | 151 | .actions li { 152 | font-size: 32px; 153 | } 154 | -------------------------------------------------------------------------------- /kubeadm-presentation/slides.md: -------------------------------------------------------------------------------- 1 | name: inverse 2 | layout: true 3 | class: center, middle, inverse 4 | 5 | --- 6 | # Bootstrap a kubernetes cluster in 5 minutes or so 7 | ## Kubernetes Meetup - Nürnberg 8 | ### Oz Tiram, 10 April 2019 9 | #### github.com/oz123 10 | 11 | --- 12 | layout: false 13 | class: left 14 | 15 | # What is kubeadm? 16 | 17 | * a minimum viable Kubernetes cluster installer. 18 | * Conform. 19 | * support upgrades, downgrades, bootstrap tokens and more. 20 | 21 | --- 22 | # Installing kubeadm 23 | 24 | * Packages for all major Linux distributions. 25 | * Just do `yum install`, `apt get` or so. 26 | 27 | --- 28 | # Demo - quick installation 29 | 30 | One the master node: 31 | 32 | ``` 33 | kubeadm init --pod-network 10.233.0.0/16 34 | kubectl apply -f calico*yml 35 | ``` 36 | 37 | One the worker node: 38 | 39 | ``` 40 | kubeadm join 192.168.0.13:6443 --token cb0... --discovery-token-ca-cert-hash sha256:.. 41 | ``` 42 | 43 | --- 44 | class: center, middle, inverse 45 | 46 | # 👏 👏 👏 👏 👏 47 | 48 | --- 49 | # woah! 50 | 51 | ## you want to know what happend there? 52 | 53 | ### let's repeat in slow motion 54 | 55 | ``` 56 | kubeadm alpha 57 | ``` 58 | --- 59 | class: remark-small-code 60 | # Customisation with config file 61 | 62 | all (!) subcommands accept a configuration file in a yaml format. 63 | 64 | ``` 65 | apiVersion: kubeadm.k8s.io/v1alpha2 66 | kind: MasterConfiguration 67 | kubernetesVersion: v1.12.7 68 | apiServerCertSANs: 69 | - "${LOAD_BALANCER_DNS} 70 | api: 71 | controlPlaneEndpoint: "${LOAD_BALANCER_DNS}:${LOAD_BALANCER_PORT}" 72 | etcd: 73 | local: 74 | extraArgs: 75 | listen-client-urls: "https://127.0.0.1:2379,https://${HOST_IP}:2379" 76 | advertise-client-urls: "https://${HOST_IP}:2379" 77 | listen-peer-urls: "https://${HOST_IP}:2380" 78 | initial-advertise-peer-urls: "https://${HOST_IP}:2380" 79 | initial-cluster: "${CURRENT_CLUSTER}" 80 | initial-cluster-state: "${CLUSTER_STATE}" 81 | serverCertSANs: 82 | - ${HOST_NAME} 83 | - ${HOST_IP} 84 | peerCertSANs: 85 | - ${HOST_NAME} 86 | - ${HOST_IP} 87 | networking: 88 | # This CIDR is a Calico default. Substitute or remove for your CNI provider. 89 | podSubnet: 10.233.0.0/16 90 | apiServerExtraArgs: 91 | allow-privileged: "true" 92 | ``` 93 | --- 94 | # Finding information about kubeadm configuration 95 | 96 | ``` 97 | kubeadm config print-default 98 | ``` 99 | or: 100 | 101 | [godoc kubeadm](https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm) 102 | --- 103 | class: center, middle, inverse 104 | 105 | # Questions ? 106 | 107 | ## 🤔🤔🤔🤔🤔 108 | 109 | --- 110 | class: center, middle, inverse 111 | # Thank you ! 112 | 113 | ## 👍👍👍👍👍👍 114 | -------------------------------------------------------------------------------- /kubeadm-presentation/static/mermaid.min.css: -------------------------------------------------------------------------------- 1 | .loopLine,.messageLine0{marker-end:"url(#arrowhead)"}.node text,.noteText,div.mermaidTooltip{font-family:'trebuchet ms',verdana,arial}.mermaid .label{color:#333}.node circle,.node ellipse,.node polygon,.node rect{fill:#ECECFF;stroke:#CCF;stroke-width:1px}.edgePath .path{stroke:#333}.edgeLabel{background-color:#e8e8e8}.cluster rect{fill:#ffffde!important;rx:4!important;stroke:#aa3!important;stroke-width:1px!important}.cluster text{fill:#333}.actor{stroke:#CCF;fill:#ECECFF}text.actor{fill:#000;stroke:none}.actor-line{stroke:grey}.messageLine0,.messageLine1{stroke-width:1.5;stroke-dasharray:"2 2";stroke:#333}#arrowhead{fill:#333}#crosshead path{fill:#333!important;stroke:#333!important}.messageText{fill:#333;stroke:none}.labelBox{stroke:#CCF;fill:#ECECFF}.labelText,.loopText{fill:#000;stroke:none}.loopLine{stroke-width:2;stroke-dasharray:"2 2";stroke:#CCF}.note{stroke:#aa3;fill:#fff5ad}.noteText{fill:#000;stroke:none;font-size:14px}.section{stroke:none;opacity:.2}.section0{fill:rgba(102,102,255,.49)}.section2{fill:#fff400}.section1,.section3{fill:#fff;opacity:.2}.sectionTitle0,.sectionTitle1,.sectionTitle2,.sectionTitle3{fill:#333}.sectionTitle{text-anchor:start;font-size:11px;text-height:14px}.grid .tick{stroke:#d3d3d3;opacity:.3;shape-rendering:crispEdges}.grid path{stroke-width:0}.today{fill:none;stroke:red;stroke-width:2px}.task{stroke-width:2}.taskText{text-anchor:middle;font-size:11px}.taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px}.taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}.taskText0,.taskText1,.taskText2,.taskText3{fill:#fff}.task0,.task1,.task2,.task3{fill:#8a90dd;stroke:#534fbc}.taskTextOutside0,.taskTextOutside1,.taskTextOutside2,.taskTextOutside3{fill:#000}.active0,.active1,.active2,.active3{fill:#bfc7ff;stroke:#534fbc}.activeText0,.activeText1,.activeText2,.activeText3{fill:#000!important}.done0,.done1,.done2,.done3{stroke:grey;fill:#d3d3d3;stroke-width:2}.doneText0,.doneText1,.doneText2,.doneText3{fill:#000!important}.crit0,.crit1,.crit2,.crit3{stroke:#f88;fill:red;stroke-width:2}.activeCrit0,.activeCrit1,.activeCrit2,.activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}.doneCrit0,.doneCrit1,.doneCrit2,.doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.activeCritText0,.activeCritText1,.activeCritText2,.activeCritText3,.doneCritText0,.doneCritText1,.doneCritText2,.doneCritText3{fill:#000!important}.titleText{text-anchor:middle;font-size:18px;fill:#000}.node text{font-size:14px}div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100} -------------------------------------------------------------------------------- /linstor-presentation/LINBIT-LINSTOR.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/k8s-nue-meetup/talks/a2cf4015f82cc45450c63ecec63e39238597a595/linstor-presentation/LINBIT-LINSTOR.pdf --------------------------------------------------------------------------------