mirror of
https://github.com/khuedoan/homelab.git
synced 2024-12-22 20:14:32 +07:00
docs: move diagrams to Mermaid
This commit is contained in:
parent
132cd58c90
commit
3cedb11ffb
1
docs/.gitignore
vendored
Normal file
1
docs/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
mermaid*.js
|
@ -2,16 +2,9 @@
|
||||
|
||||
default: book
|
||||
|
||||
.PHONY: diagrams
|
||||
diagrams:
|
||||
cd diagrams \
|
||||
&& python3 -m venv .venv \
|
||||
&& source .venv/bin/activate \
|
||||
&& pip3 install -r requirements.txt \
|
||||
&& python3 *.py
|
||||
mkdir -p src/images
|
||||
cp diagrams/*.png src/images/
|
||||
mermaid*.js:
|
||||
mdbook-mermaid install .
|
||||
|
||||
.PHONY: book
|
||||
book: diagrams
|
||||
book: mermaid*.js
|
||||
mdbook build .
|
||||
|
@ -5,7 +5,11 @@ multilingual = false
|
||||
src = "src"
|
||||
title = "Khue's Homelab"
|
||||
|
||||
[preprocessor.mermaid]
|
||||
command = "mdbook-mermaid"
|
||||
|
||||
[output.html]
|
||||
additional-js = ["mermaid.min.js", "mermaid-init.js"]
|
||||
git-repository-url = "https://github.com/khuedoan/homelab"
|
||||
edit-url-template = "https://github.com/khuedoan/homelab/edit/master/docs/{path}"
|
||||
|
||||
|
@ -1,38 +0,0 @@
|
||||
from diagrams import Cluster, Diagram
|
||||
from diagrams.generic.os import LinuxGeneral
|
||||
from diagrams.k8s.ecosystem import Helm
|
||||
from diagrams.k8s.infra import Node
|
||||
from diagrams.onprem.container import Docker
|
||||
from diagrams.onprem.gitops import ArgoCD
|
||||
|
||||
graph_attr = {
|
||||
"pad": "0"
|
||||
}
|
||||
|
||||
with Diagram("Provisioning flow", graph_attr=graph_attr, outformat="png", show=False):
|
||||
with Cluster("./metal"):
|
||||
pxe = Docker("PXE server")
|
||||
os = LinuxGeneral(f"Rocky Linux")
|
||||
cluster = Node("K3s")
|
||||
|
||||
pxe >> os >> cluster
|
||||
|
||||
with Cluster("./bootstrap"):
|
||||
argocd = ArgoCD("ArgoCD")
|
||||
|
||||
cluster >> argocd
|
||||
|
||||
with Cluster("./system"):
|
||||
system_charts = Helm("System charts")
|
||||
|
||||
argocd >> system_charts
|
||||
|
||||
with Cluster("./platform"):
|
||||
platform_charts = Helm("Platform charts")
|
||||
|
||||
argocd >> platform_charts
|
||||
|
||||
with Cluster("./apps"):
|
||||
app_charts = Helm("Application charts")
|
||||
|
||||
argocd >> app_charts
|
@ -1 +0,0 @@
|
||||
diagrams
|
@ -2,23 +2,66 @@
|
||||
|
||||
## Overview
|
||||
|
||||
![Provisioning flow](../images/provisioning_flow.png)
|
||||
|
||||
Everything is automated, after you edit the configuration files, you just need to run a single `make` command and it will:
|
||||
|
||||
- Build the `./metal` layer:
|
||||
- (1) Build the `./metal` layer:
|
||||
- Create an ephemeral, stateless PXE server
|
||||
- Install Linux on all servers in parallel
|
||||
- Build a Kubernetes cluster (based on k3s)
|
||||
- Build the `./bootstrap` layer:
|
||||
- (2) Build the `./bootstrap` layer:
|
||||
- Install ArgoCD
|
||||
- Install ApplicationSet to manage other layers (and also manage itself)
|
||||
- Configure the root app to manage other layers (and also manage itself)
|
||||
|
||||
From now on, ArgoCD will do the rest:
|
||||
|
||||
- Build the `./system` layer (storage, networking, monitoring, etc)
|
||||
- Build the `./platform` layer (Gitea, Vault, SSO, etc)
|
||||
- Build the `./apps` layer: (Syncthing, Jellyfin, etc)
|
||||
- (3) Build the `./system` layer (storage, networking, monitoring, etc)
|
||||
- (4) Build the `./platform` layer (Gitea, Vault, SSO, etc)
|
||||
- (5) Build the `./apps` layer: (Syncthing, Jellyfin, etc)
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
subgraph metal
|
||||
RockyLinux --> k3s
|
||||
end
|
||||
|
||||
subgraph bootstrap
|
||||
ArgoCD --> RootApp
|
||||
end
|
||||
|
||||
subgraph system
|
||||
MetalLB
|
||||
NGINX
|
||||
Longhorn
|
||||
cert-manager
|
||||
ExternalDNS
|
||||
CloudflareTunnel
|
||||
end
|
||||
|
||||
subgraph external
|
||||
LetsEncrypt
|
||||
Cloudflare
|
||||
end
|
||||
|
||||
LetsEncrypt -.-> cert-manager
|
||||
Cloudflare -.-> cert-manager
|
||||
Cloudflare -.-> ExternalDNS
|
||||
Cloudflare -.-> CloudflareTunnel
|
||||
|
||||
subgraph platform
|
||||
Gitea
|
||||
Tekton
|
||||
Vault
|
||||
end
|
||||
|
||||
subgraph apps
|
||||
Jellyfin
|
||||
Matrix
|
||||
Paperless
|
||||
Seafile
|
||||
end
|
||||
|
||||
Hardware -- 1 --> metal -- 2 --> bootstrap -. 3 .-> system -. 4 .-> platform -. 5 .-> apps
|
||||
```
|
||||
|
||||
## Detailed steps
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user