Slide 1

Slide 1 text

MARTIN HELMICH @mittwald HOW TO BUILD YOUR OWN CLOUD PLATFORM August 3rd, 2024

Slide 2

Slide 2 text

MARTIN HELMICH Head of Architecture & Developer Relations Lecturer, Software Engineering & Cloud Computing Sci-Fi-Nerd, Metalhead, Amateur Woodworker

Slide 3

Slide 3 text

Image Source

Slide 4

Slide 4 text

HOSTING BACK THEN

Slide 5

Slide 5 text

HOSTING BACK THEN

Slide 6

Slide 6 text

APACHE PHP MYSQL HOSTING BACK THEN

Slide 7

Slide 7 text

APACHE PHP MYSQL ... AND NOW OPENSEARCH KEYCLOAK MOBILE APP ...OR NODE.JS DOCKER PWA NGINX 💥 ...OR P CDN HOSTING BACK THEN BOOP VARNISH

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

MITTWALD CLOUD PLATFORM ARCHITECTURAL GOALS FLEXIBILITY RESOURCE EFFICIENCY ( INTERNAL ) EASE OF USE *) apart from obvious ones, like security, reliability and performance *

Slide 10

Slide 10 text

MITTWALD CLOUD PLATFORM ARCHITECTURAL GOALS FLEXIBILITY STANDARDS CONFORMANCE KUBERNETES/COE CONTAINERIZED CUSTOMIZABLE OCI IMAGES QUALITY GOAL SOLUTION STRATEGY RESOURCE EFFICIENCY ELASTICITY OPTIMIZED SCHEDULING ( INTERNAL ) EASE OF USE DECLARATIVE APIS KUBERNETES OPERATORS

Slide 11

Slide 11 text

NODE BASIC KUBERNETES PRINCIPLES NODE NODE CLUSTER YEET USER POD POD POD POD ( SLIGHTLY SIMPLIFIED ) POD

Slide 12

Slide 12 text

martin @ local $ mw app install typo3 -q --version=12.4.17 --install-mode composer [...] martin @ local $ kubectl get pods --all-namespaces \ --field-selector spec.nodeName=shoot--chp-prod--gestringen-pm-sps-3669c938-z1-797d7-gtfmz NAMESPACE NAME READY STATUS RESTARTS AGE kube-system node-local-dns-69btw 1/1 Running 0 36d kube-system node-problem-detector-2bq2z 1/1 Running 0 36d kube-system openstack-manila-csi-nodeplugin-sk8sm 2/2 Running 0 36d monitoring kube-prometheus-stack-prometheus-node-exporter-dnq9l 1/1 Running 0 36d monitoring loki-stack-promtail-mntw2 1/1 Running 0 36d pg-s-piryq0 mysql-default-80-low-latency-knlw2-0 1/1 Running 0 12s pg-s-piryq0 p-elfmx0-64db467d4b-qzmdv 2/2 Running 0 2d20h pg-s-piryq0 p-elfmx0-l2qzd-b79b7fdf6-qxjl4 2/2 Running 0 12s pg-s-piryq0 p-elfmx0-logrotation-28698480-47mvh 0/1 Completed 0 23h

Slide 13

Slide 13 text

POD

Slide 14

Slide 14 text

DEPLOYMENT REPLICASET POD STATEFULSET DAEMONSET SERVICE INGRESS INGRESS CLASS PERSISTENT VOLUME PERSISTENT VOLUMECLAIM STORAGE CLASS JOB CRON JOB CERTIFICATE SECRET CONFIG MAP NODE

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

ABSTRACTION

Slide 18

Slide 18 text

DEPLOYMENT REPLICASET POD STATEFULSET DAEMONSET SERVICE INGRESS INGRESS CLASS PERSISTENT VOLUME PERSISTENT VOLUMECLAIM STORAGE CLASS JOB CRON JOB CERTIFICATE SECRET CONFIG MAP NODE KUBERNTES CORE CONCEPTS PROJECT CUSTOMER PROJECT GROUP APP DATABASE DOMAIN HOSTING DOMAIN MODEL

Slide 19

Slide 19 text

apiVersion: apphosting.mittwald.cloud/v1 kind: App metadata: name: a-XXXXX namespace: s-YYYYY spec: app: typo3 version: 12.4.17 project: name: p-ZZZZZ requirements: - name: php version: ^8.3 - name: composer version: ^2 installPath: /my-typo3-site

Slide 20

Slide 20 text

CUSTOM RESOURCE CONTROLLER KUBERNETES API USER create / update watch notify reconcile desired state control loop

Slide 21

Slide 21 text

https://speakerdeck.com/martinhelmich/the-anatomy-of-docker-image

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

PRODUCT SPECIFIC K8S OPERATORS K8S CORE COMPONENTS

Slide 24

Slide 24 text

MACRO ARCHITECTURE PRODUCT SPECIFIC MICROSERVICES PRODUCT SPECIFIC K8S OPERATORS K8S CORE COMPONENTS IaaS CLOUD DATA CENTER

Slide 25

Slide 25 text

ORGANIZATIONAL STRUCTURE PRODUCT SPECIFIC MICROSERVICES PRODUCT SPECIFIC K8S OPERATORS K8S CORE COMPONENTS IaaS CLOUD DATA CENTER PRODUCT DEV TEAMS CLOUD PLATFORM TEAM IaaS + NETWORK TEAM DATA CENTER OPERATIONS

Slide 26

Slide 26 text

UNDER THE HOOD

Slide 27

Slide 27 text

ON PREM YES YES NO OPEN SOURCE NO HOW - TO CLOUD

Slide 28

Slide 28 text

OPEN - SOURCE CLUSTER PROVISIONING CLUSTER API GARDENER OPENSTACK MAGNUM

Slide 29

Slide 29 text

https://docs.openstack.org/security-guide/networking/architecture.html

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

WTF? THE STORAGE PROBLEM ( TRADE - OFFS WHEREVER YOU LOOK )

Slide 32

Slide 32 text

NODE POD LOCAL VOLUME - Fast - ( When used as block device) can be optimized for workloads (e.g. XFS for databases) - Limited scalability - Inefficient resource utilization - No networked access - No HA NODE POD â›” CEPH NETWORK BLOCK DEVICE - Fast(ish) - Can be optimized for workloads (e.g. XFS for databases) - Networked access by a single client - Reasonably scalable (limited by FS ) - Efficient resource utilization - Various HA configurations with different resource efficiencies and performances (replication & erasure coding) â›” CephFS NETWORK FILE SYSTEM - Fast(ish) with few large files - Slow with many small files (tolerable with LOTS of caching) - Networked access by multiple clients - Various HA configurations with different resource efficiencies and performances (replication & erasure coding) NETWORK OBJECT STORE - No filesystem access, only via API - Needs to be considered in architecture on application level - Very high scalability - Networked access by multiple clients RBD ROG THE STORAGE PROBLEM ( TRADE - OFFS WHEREVER YOU LOOK )

Slide 33

Slide 33 text

Gardener BARE METAL SERVERS

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

Lukas Tennie https://unsplash.com/photos/a-close-up-of-a-watch-face-with-the-gears-missing-3dyDozzCORw COMPLEXITY

Slide 36

Slide 36 text

Ralph_PH, CC - BY K I S S EEP T IMPLE, TUPID.

Slide 37

Slide 37 text

WHAT IS YOUR PRODUCT? AND WHAT DO YOU NEED TO RUN IT?

Slide 38

Slide 38 text

Gardener BARE METAL SERVERS

Slide 39

Slide 39 text

BARE METAL SERVERS

Slide 40

Slide 40 text

BARE METAL SERVERS Metallb OUR APPROACH : KUBERNETES - NATIVE EVERYTHING STORAGE VIRTUALIZATION NETWORKING metal-stack 3

Slide 41

Slide 41 text

https://metal-stack.io/ https://github.com/onmetal https://scs.community

Slide 42

Slide 42 text

ROADMAP INDIVIDUALIZED CUSTOMER SOLUTIONS 3RD PARTY EXTENSIBILITY SCALABILITY ELASTICITY + ( STRATEGIC ) CONFIGURABLE STORAGE OPTIONS ... AND WILD IDEAS SCALE - TO - ZERO HOSTING AI MODELS 3RD PARTY INFRASTRUCTURE ...AND MANY MORE

Slide 43

Slide 43 text

ACCEPT COMPLEXITY WHERE YOU NEED IT ( AND MANAGE ACCORDINGLY ) KEEP IT SIMPLE WHERE YOU DON'T KNOW YOUR PRODUCT

Slide 44

Slide 44 text

https://github.com/martin-helmich https://www.mittwald.de https://www.martin-helmich.de https://www.linkedin.com/in/martinhelmich