From 47fc74a21ac16399d267005466e3ae09fb0d425b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Petazzoni?= Date: Mon, 29 Sep 2025 15:23:22 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=97=20Add=20a=20bunch=20of=20links=20t?= =?UTF-8?q?o=20CNPG=20and=20ZFS=20talks=20in=20concept=20slides?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- slides/k8s/concepts-k8s.md | 88 ++++++++++++++++++++++++++++++++------ 1 file changed, 76 insertions(+), 12 deletions(-) diff --git a/slides/k8s/concepts-k8s.md b/slides/k8s/concepts-k8s.md index 93a63a0b..ac3714af 100644 --- a/slides/k8s/concepts-k8s.md +++ b/slides/k8s/concepts-k8s.md @@ -18,7 +18,7 @@ - API backend - - database (that we will keep out of Kubernetes for now) + - database - We have built images for our frontend and backend components @@ -33,7 +33,15 @@ --- -## Basic things we can ask Kubernetes to do +## Kubernetes, level 1 + +-- + +- Leave our database outside of Kubernetes (because database be scary🥺) + +-- + +- Deploy a managed Kubernetes cluster (cloud or [professional services][enix-k8s-expert]) -- @@ -63,18 +71,24 @@ - Keep processing requests during the upgrade; update my containers one at a time +[enix-k8s-expert]: https://enix.io/en/kubernetes-expert/ + --- -## Other things that Kubernetes can do for us +## Kubernetes, level 2 + +- Deploy a pre-production environment + + (still using our external database, for now) + +- Resource management and scheduling + + (reserve CPU/RAM for containers; placement constraints; priorities) - Autoscaling (straightforward on CPU; more complex on other metrics) -- Resource management and scheduling - - (reserve CPU/RAM for containers; placement constraints) - - Advanced rollout patterns (blue/green deployment, canary deployment) @@ -95,24 +109,74 @@ class: pic --- -## More things that Kubernetes can do for us +## Kubernetes, level 3 -- Batch jobs +- Run staging databases on the cluster - (one-off; parallel; also cron-style periodic execution) + (no replication, no backups, no scaling) + +- Automatic or semi-automatic deployment of feature branches + + (each with its own database) - Fine-grained access control (defining *what* can be done by *whom* on *which* resources) -- Stateful services +- Batch jobs + + (one-off; parallel; also cron-style periodic execution) + +- Package applications with e.g. Helm charts + +--- + +## Kubernetes, level 4 + +- Stateful services with persistence, replication, backups (databases, message queues, etc.) -- Automating complex tasks with *operators* +- Automate complex tasks with *operators* (e.g. database replication, failover, etc.) +- Combine the two previous points with database operators like [CloudNativePG][cnpg] + + (learn more about database operators: [FR][pirates-video-fr], [EN][pirates-video-en]) + +- Leverage advanced storage with e.g. local ZFS volumes + + (learn more about ZFS and databases on k8s: [FR][zfs-video-fr], [EN][zfs-video-en]) + +- Deploy and manage clusters in-house + +[cnpg]: https://cloudnative-pg.io/ +[pirates-video-fr]: https://www.youtube.com/watch?v=d_ka7PlWo1I +[pirates-video-en]: https://www.youtube.com/watch?v=ojUdBjbiKWk&t=5s +[zfs-video-fr]: https://www.youtube.com/watch?v=XN9YL93f8tI +[zfs-video-en]: https://www.youtube.com/watch?v=3sJIYiDnod4 + +--- + +## Kubernetes, level 5 + +- Deploying and managing clusters at scale + + (hundreds of clusters, thousands of nodes...) + +- Writing custom operators + +- Hybrid deployments + +--- + +## Disclaimer + +The levels mentioned in the previous slides are not necessarily linear. + +They aren't exhaustive either (we didn't mention e.g. observability and alerting). + --- ## Kubernetes architecture