blog_tech/docs/homelab-futur/exemple.md

154 lines
2.6 KiB
Markdown
Raw Normal View History

---
sidebar_position: 2
---
# Exemple
Ceci est une page d'exemple dans la catégorie Futur Homelab.
## Description
Cette page démontre comment documenter les configurations et déploiements Kubernetes du futur homelab.
## Déploiement Kubernetes
Exemple de manifeste pour un déploiement :
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: exemple-app
namespace: production
spec:
replicas: 3
selector:
matchLabels:
app: exemple
template:
metadata:
labels:
app: exemple
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: exemple-service
namespace: production
spec:
selector:
app: exemple
ports:
- port: 80
targetPort: 80
type: ClusterIP
```
## Configuration OpenTofu
Exemple de ressource infrastructure :
```hcl
resource "kubernetes_namespace" "production" {
metadata {
name = "production"
labels = {
environment = "production"
managed-by = "opentofu"
}
}
}
resource "kubernetes_deployment" "exemple" {
metadata {
name = "exemple-app"
namespace = kubernetes_namespace.production.metadata[0].name
}
spec {
replicas = 3
selector {
match_labels = {
app = "exemple"
}
}
template {
metadata {
labels = {
app = "exemple"
}
}
spec {
container {
image = "nginx:latest"
name = "app"
resources {
limits = {
cpu = "100m"
memory = "128Mi"
}
requests = {
cpu = "50m"
memory = "64Mi"
}
}
}
}
}
}
}
```
## GitOps avec ArgoCD
Configuration ArgoCD Application :
```yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: exemple-app
namespace: argocd
spec:
project: default
source:
repoURL: https://forgejo.tellserv.fr/Tellsanguis/k8s-manifests.git
targetRevision: HEAD
path: apps/exemple
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=true
```
## Observabilité
Points de surveillance pour ce service :
- Métriques Prometheus exposées sur `/metrics`
- Logs agrégés dans Loki
- Traces distribuées avec Tempo
- Alertes configurées dans Prometheus AlertManager