├── 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
--------------------------------------------------------------------------------