Aller au contenu

Déploiement Kubernetes

Le pilote Kubernetes est prêt dans le code et testé en intégration continue, activé plus tard en production. Il utilise les mêmes images que Swarm.

Chart deploy/k8s/charts/workspace (un namespace remizo-<slug> par workspace) :

Ressource Rôle
Cluster CloudNativePG PostgreSQL 17, instances = spec.postgres.instances, services -rw / -ro, sauvegardes vers Silo
Deployment engine spec.engines.replicas, sondes /healthz et /readyz sur le port 47501
HorizontalPodAutoscaler montée en charge des moteurs sur la CPU
PodDisruptionBudget au moins un moteur disponible pendant les maintenances
Deployment Valkey cache du workspace
Service / IngressRoute Traefik <slug>.engine.<domaine>
NetworkPolicy seuls Traefik et le hub joignent le workspace ; la base n’est joignable que depuis les moteurs et le hub

Chart deploy/k8s/charts/hub : API et worker du hub, studio, console, documentation.

Fenêtre de terminal
curl -sfL https://get.k3s.io | sh - # k3s inclut Traefik
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl apply --server-side -f https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.27/releases/cnpg-1.27.0.yaml
bash deploy/k8s/sync-migrations.sh # copie db/hub et db/workspace dans les charts
helm install hub deploy/k8s/charts/hub -n remizo-hub --create-namespace
helm install demo deploy/k8s/charts/workspace -n remizo-demo --create-namespace \
--set workspace.slug=demo --set postgres.instances=2 --set engines.replicas=2
kubectl -n remizo-demo get pods

Les instructions détaillées (registre privé 10.0.4.15:5050, secrets, valeurs) sont dans deploy/README.md.

WorkspaceSpec Valeur Helm
engines.replicas, cpu, memory engines.replicas, engines.resources
postgres.instances, storage, version postgres.instances, postgres.storage, postgres.imageVersion
postgres.ha = cnpg toujours le cas sur Kubernetes
valkey.enabled, memory valkey.enabled, valkey.resources
network.publicHost ingress.host

Les manifests rendus sont validés par kubeconform en intégration continue ; un job déploie le chart dans un cluster k3d jetable.