- Add language switcher to navbar for bilingual site (FR/EN) - Remove intro page, use presentation as entry point - Add example pages to all documentation categories - Configure categories with generated-index for page listings - Update footer and homepage links to reference presentation - Enhance configuration with best practices: - Add metadata and SEO keywords - Enable RSS/Atom feeds for blog - Configure sitemap generation - Add syntax highlighting for YAML, HCL, Docker - Enable Mermaid diagram support - Configure table of contents settings - Respect user color scheme preferences - Add last update metadata to docs - Fix deprecated onBrokenMarkdownLinks configuration - Create bilingual example pages with practical code examples - Update all i18n translations for consistency This update brings the site in line with Docusaurus 3.x best practices and provides a solid foundation for documentation growth.
2.6 KiB
2.6 KiB
| sidebar_position |
|---|
| 2 |
Example
This is an example page in the Future Homelab category.
Description
This page demonstrates how to document Kubernetes configurations and deployments for the future homelab.
Kubernetes Deployment
Example deployment manifest:
apiVersion: apps/v1
kind: Deployment
metadata:
name: example-app
namespace: production
spec:
replicas: 3
selector:
matchLabels:
app: example
template:
metadata:
labels:
app: example
spec:
containers:
- name: app
image: nginx:latest
ports:
- containerPort: 80
resources:
limits:
cpu: 100m
memory: 128Mi
requests:
cpu: 50m
memory: 64Mi
---
apiVersion: v1
kind: Service
metadata:
name: example-service
namespace: production
spec:
selector:
app: example
ports:
- port: 80
targetPort: 80
type: ClusterIP
OpenTofu Configuration
Example infrastructure resource:
resource "kubernetes_namespace" "production" {
metadata {
name = "production"
labels = {
environment = "production"
managed-by = "opentofu"
}
}
}
resource "kubernetes_deployment" "example" {
metadata {
name = "example-app"
namespace = kubernetes_namespace.production.metadata[0].name
}
spec {
replicas = 3
selector {
match_labels = {
app = "example"
}
}
template {
metadata {
labels = {
app = "example"
}
}
spec {
container {
image = "nginx:latest"
name = "app"
resources {
limits = {
cpu = "100m"
memory = "128Mi"
}
requests = {
cpu = "50m"
memory = "64Mi"
}
}
}
}
}
}
}
GitOps with ArgoCD
ArgoCD Application configuration:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: example-app
namespace: argocd
spec:
project: default
source:
repoURL: https://forgejo.tellserv.fr/Tellsanguis/k8s-manifests.git
targetRevision: HEAD
path: apps/example
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
Observability
Monitoring points for this service:
- Prometheus metrics exposed on
/metrics - Logs aggregated in Loki
- Distributed traces with Tempo
- Alerts configured in Prometheus AlertManager