KamoCRM ne s'exécute pas sur une plateforme en tant que service de quelqu'un d'autre, mais sur un cluster RKE2 Kubernetes que nous construisons, exploitons et sur lequel nous nous réveillons, avec notre propre stockage, notre propre entrée, notre propre automatisation des certificats, notre propre virtualisation et notre propre registre d'images. Tout ce que nous savons sur la livraison de logiciels qui restent en service, nous l'avons appris ici, à nos propres frais.
| Mesure | Valeur | Source | Mesurées |
|---|---|---|---|
| Déploiements dans le cluster | 106 | kubectl get deploy --all-namespaces | |
| Pods de course | 267 | kubectl get pods --all-namespaces | |
| Charges de travail stateful | 22 | kubectl get statefulsets --all-namespaces | |
| Namespaces | 19 | kubectl get namespaces | |
| Certificats TLS sous gestion automatisée | 211 | kubectl get certificate --all-namespaces (cert-manager) | |
| Routes d'entrée | 40 | kubectl get ingressroute --all-namespaces (Traefik) | |
| Temps de fonctionnement du nœud du plan de contrôle | 266 days | kubectl get nodes -o wide, AGE column | |
| Version de Kubernetes | v1.35.6+rke2r1 | kubectl get nodes -o wide, VERSION column |
Quel bâtiment il nous a appris
Il aurait été plus facile de louer. Managed Kubernetes existe, c’est une bonne chose, et le choisir aurait éliminé toute une catégorie de problèmes de notre vie. Nous gérons notre propre plateforme parce qu’elle offre des fonctionnalités qu’une offre gérée ne peut pas héberger pour vous à un prix raisonnable – la téléphonie qui nécessite un contrôle réel du réseau, les médias WebRTC qui nécessitent des chemins UDP prévisibles, l’inférence qui nécessite du matériel – et parce qu’une entreprise qui vend des compétences en infrastructure devrait être en mesure de les démontrer plutôt que de les décrire.
Le cluster utilise Longhorn pour le stockage de blocs répliqués, Traefik pour l'entrée, cert-manager pour l'émission de certificats par nom d'hôte, KubeVirt pour les charges de travail qui ont réellement besoin d'une machine virtuelle et un registre privé. Les certificats à eux seuls sont une bonne illustration de la raison pour laquelle l'exploitation enseigne les choses que la lecture ne fait pas : ils sont émis par nom entièrement qualifié et en série, de sorte qu'un client qui ajoute un nom d'hôte et n'attend pas voit un certificat auto-signé sur exactement un hôte et conclut que le système entier est cassé.
Les échecs ont été instructifs dans la mesure où seuls vos propres échecs le sont. Une migration de schéma qui a fait que chaque service a renvoyé des erreurs pendant un quart d'heure parce que les pools de connexion contenaient une version de catalogue plus ancienne. Un nœud dont la deuxième interface réseau corrompt de manière intermittente les gros transferts, ce qui a longtemps semblé être un bogue logiciel. Des limites de mémoire qui étaient correctes jusqu'à ce qu'un collecteur de déchets ne soit pas d'accord. Chacun de ces problèmes est maintenant quelque chose que nous concevons pour le travail client, parce que nous avons déjà payé pour la leçon.
C’est la différence que nous vendons en fait. Une société de développement qui n’a jamais exploité ce qu’elle a construit vous remettra un dépôt et une facture, et le premier incident de production vous appartiendra à vous seul.
Construit avec
- Kubernetes (RKE2)
- Traefik
- cert-manager
- Longhorn
- KubeVirt
- containerd
- Docker registry
- Ubuntu
Dites-nous ce que vous essayez de faire
Une courte conversation est généralement suffisante pour savoir si nous sommes les bonnes personnes, si nous ne le sommes pas, nous le dirons et vous indiquerons quelque part mieux.
