Skip to content
This repository was archived by the owner on Apr 17, 2024. It is now read-only.

Commit 7099a14

Browse files
authored
docs: start documentation for demo system (#14)
* docs: start documentation for demo system * docs: update diagram and answer some questions * docs: clean up and update diagram
1 parent b4e9286 commit 7099a14

File tree

4 files changed

+108
-0
lines changed

4 files changed

+108
-0
lines changed

docs/.vitepress/config.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,19 @@ export default withMermaid(
7878
link: '/development/release-management',
7979
},
8080
{ text: 'Infrastructure', link: '/development/infrastructure' },
81+
{
82+
text: 'Demo System',
83+
items: [
84+
{
85+
text: 'Overview',
86+
link: '/development/demo/',
87+
},
88+
{
89+
text: 'Impl Notes',
90+
link: '/development/demo/impl-notes-take-1',
91+
},
92+
],
93+
},
8194
],
8295
},
8396
],

docs/development/demo/demo-system-design.drawio.svg

Lines changed: 4 additions & 0 deletions
Loading
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
title: Demo system implementation - take 1
3+
---
4+
5+
# Notes
6+
7+
These are notes about the implementation of the demo system, defined by the [overview](index).

docs/development/demo/index.md

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
---
2+
title: Demo System Overview
3+
---
4+
5+
# Demo System Overview
6+
7+
## Purpose
8+
9+
We are creating a demonstration system for three major reasons.
10+
11+
1. We need hands-on experience designing, building, and running distributed K8s environments using Rook Ceph for data storage. Typical "Getting Started" guides are insufficient for gaining experience with what our customers have to support.
12+
2. We need a way to prove out use cases that the KSD supports and to show our work to customers.
13+
3. We need a way to run meaningful experiments in an environment that can be adapted to match what customers do, or at least follow similar patterns.
14+
15+
The environment should support real applications that make use of data. The demo needs to be big enough and configured completely enough that it shows correct patterns -- running 4 or more nodes, spreading pods across nodes, using proper security, etc. On the other hand, we are not trying to discover the outter limits of Ceph or Rook scalability. Cost is still a consideration.
16+
17+
When complete, the demo system should be spun up and down through automation. In fact, the more of this kind of automation we put into KSD, but better our chances of selling to big customers.
18+
19+
20+
## Features we want to showcase
21+
22+
This a list of specific points that the demo system needs to handle. Let's add everything we can think of to the list. If it gets long, we can organize into sublists. In any case, we will group the requirements into development milestones.
23+
24+
1. Include the yaml for setting up the K8s cluster.
25+
1. Start with a minimum for production where things work under light-to-medium loads.
26+
2. Would be nice to pick from a library of configuration patterns that match common use cases.
27+
2. Use the latest KSD release to set up Rook Ceph.
28+
1. Great if installation is automated.
29+
3. Add applications that represent what real users will want to do and the data those applications need.
30+
1. Some kind of database.
31+
2. A CDN serving a static website and its assets: HTML, CSS, Javascript, images.
32+
3. A streaming service for video, sound.
33+
4. Show backup and recovery as one of the features of the environment, with Rook Ceph as the storage for backups.
34+
5. ...and more... please add more ideas
35+
36+
37+
## System design
38+
39+
**Note: This may take many iterations to work out.**
40+
41+
Here's a diagram of the demo system.
42+
43+
![Demo System Design](demo-system-design.drawio.svg)
44+
45+
(This is in draw.io [here](https://app.diagrams.net/#G1Es8ikJ0fN7b4BJiUpxWnaxQPSSkZK5Mg). Ask Dave if you want to collaborate or get a copy.)
46+
47+
Notes about the diagram:
48+
49+
1. The picture shows a minimum of 7 servers, including 4 servers dedicated to Ceph storage. We recommend customer use 4 nodes so that Ceph can recovery gracefully if any one node goes out.
50+
2. Each node will have a minimum of 2 drives for basic redundancy. Most systems will have more, but never fewer.
51+
1. Storage nodes will always have the same number of drives, so if we add 1 drive, we're adding 4 (assuming 4 nodes).
52+
3. What is missing from this diagram?
53+
1. Alex: If we want to use CephFS (filesystem) or RGW (object storage), it would introduce MDS or RGW daemons to the cluster, not necessarily on all the storage nodes as we would need to scale based on the load, though as always minimum 2 per storage type then for HA.
54+
55+
Does anything else need to be added to the diagram? Any corrections?
56+
57+
**Note: We should remember to adjust the picture as the system evolves. In fact, deviations should start as changes to this design. We should also docuemnt the things we try.**
58+
59+
## Implementation details
60+
61+
For short experiments, EC2 on AWS is attractive -- maybe. The per-hour cost is low if you only need the VM for a few hours. However, after a few days, the cost breaks even with the monthly cost of VMs from Hetzner.
62+
63+
From what I could tell without spending any money, Hetzner charges for the full month on provisioning. So using a VM for a few hours (just to practice or if the wrong specs are provisioned) would end up wasting money. Granted, it's a small amount per server. Times 6, times how many drives.
64+
65+
Better to get the design right (as least as much as we can figure out) before building.
66+
67+
And we'll make mistakes, so that's the cost of learning.
68+
69+
Some decisions:
70+
71+
* Provision VMs on Hetzner first.
72+
* We can also try AWS or GCP once things are working on Hetzner if we want to compare the hosting experience. Customers will have their own preference for hosting.
73+
* Pretty sure we don't want to pay for a bare metal system that we self-host.
74+
* Let's use Ubuntu 22.04
75+
* It's available on Hetzner and AWS, which means it's popular.
76+
* It's aligned with Canonical, not RedHat. (I read something about Centos losing support? And other shenanegans.)
77+
* We will use kubeadm, since we are building a production-style system.
78+
* We will use CRI-O for container management because that's what K8s recommends.
79+
* We will run a Postgres database for that part of the system because it rocks!
80+
* For deployment, we will check out [KubeOne](https://github.com/kubermatic/kubeone)
81+
82+
Let's keep notes about what we try. Sort of an inventor's journal.
83+
84+
[Implementation Notes for original build of demo system](impl-notes-take-1)

0 commit comments

Comments
 (0)