Le Blog Utux

HTTP 200 GET /

Migration de Scaleway à Heztner

Rédigé par uTux Aucun commentaire

Je loue des Virtual Private Server (VPS) chez Scaleway depuis 2016 et j'en ai toujours été globalement satisfait. Les performances sont correctes et c'est un hébergeur qui malgré ses tarifs lowcost a su prendre le virage du Cloud en ajoutant toujours plus de services indépendants, et en proposant une bonne intégration avec Terraform.

Et puis les choses ont changé:

  • L'été 2020, Scaleway a augmenté ses tarifs. Moi qui utilisait les instances DEV1-S, cela se traduisit par +40% !
  • A l'automne 2020, Scaleway a mis fin à la limite mensuelle. De base, la facturation se faisait à l'heure, mais au delà d'un certain seuil le tarif était bloqué à une valeur fixe (comme une sorte de forfait au mois). Ce n'est désormais plus le cas.

Au final, le DEV1-S que je payais 2,99€ HT / mois me coûte maintenant 7,30€ HT / mois soit une augmentation de +144%, aïe.

Puisque mes besoins sont croissants (deux nouveaux VPS à venir) j'ai décidé de regarder ce qui se faisait à côté, et je suis tombé sur Hetzner qui jouit d'une réputation plutôt correcte tout en proposant des tarifs lowcost. Comparons les prix :

  • 2 vcpu, 2GB de RAM, 20GB stockage: Hetzner CX11 (2,96€ / month), Scaleway DEV1-S (7,30€ / month).
  • 4 vcpu, 8GB de RAM, 80GB stockage: Hetzner CPX31 (14,76€ / month), Scaleway DEV1-L (29,20€ / month).

La migration a donc commencé, le blog est maintenant hébergé chez Hetzner (toujours en Kubernetes) à Helsinki.

CSS clair (inspiration Solarized Light)

Rédigé par uTux 5 commentaires

Il est désormais possible de switcher sur un thème clair à l'aide du slider "choix du thème" dans la sidebar à droite (ou tout en bas sur la version mobile). Le thème dark reste par défaut.

Si vous bloquez le JS, vous ne devriez avoir que le thème sombre. Ceux qui lisent à travers un lecteur de flux RSS ne sont pas concernés du tout.

CSS sombre (inspiration Solarized Dark)

Rédigé par uTux Aucun commentaire

Cela fait un moment que j'avais envie d'un thème sombre pour le site car je trouve cela plus reposant pour les yeux. Je travaille à l'ajout d'une variante "light" avec un sélecteur pour pouvoir changer à la volée.

Migration vers Kubernetes

Rédigé par uTux Aucun commentaire

Kubernetes est probablement la technologie la plus complexe sur laquelle j'ai pu travailler cette année, à tel point que j'ai longtemps été réticent à m'y frotter. J'ai tout de même choisi de me faire violence et de persévérer car ce domaine est très valorisant et très valorisé. Utiliser un outil dans le cadre d'un réel besoin est le meilleur moyen pour apprendre, c'est pourquoi j'ai décidé de migrer mon blog et d'autres sites. Voici une vue d'ensemble du fonctionnement du blog dans Kubernetes, en sachant que le pod est composé d'un container OpenSMTPD (pour le formulaire de contact) et bien entendu d'un container Pluxml :

Schema utux Kubernetes

Note : Fait avec Diagrams (schema as code). L'Ingress Controller est Traefik (j'en parle plus bas).

Le changement n'a pas été instantané, loin de là, à vrai dire j'avais ce projet de côté depuis plus de 1 an. Mon idée de départ était de créer un cluster a plusieurs nœuds mais cela ajoute une contrainte au niveau du stockage, en effet il faut des volumes accessibles en réseau. La question des coût s'est posée également car mon blog n'est pas suffisamment important pour justifier 4 serveurs (3 noeuds + 1 NAS). J'ai donc fait des concessions et accepté d'utiliser un cluster Kubernetes à 1 nœud, avec la Storage Class par défaut de k3s (local-path). C'est donc un premier pas timide mais l'objectif est de me familiariser avec Kubernetes.

Logo k3s

J'ai utilisé k3s, le Kubernetes Lightweight de Rancher. Cette distribution a l'avantage d'être facile à installer (une commande curl) et d'avoir une emprunte mémoire assez limitée (même si ça reste beaucoup plus élevé que Docker). Par contre elle n'est pas miraculeuse et le côté "lightweight" s'est fait en excluant ou limitant certaines features. Par exemple pour la gestion des Ingress on a droit à un Traefik built-in en version 1.7 (donc legacy) absolument pas documenté pour la gestion des certificats Let's Encrypt. J'ai donc désactivé cette version et installé le Traefik 2.x de containous grâce à Helm. Cette version de Traefik est implémentée en tant que CustomResourceDefinition (aka CRD) et est documentée sur le site officiel. J'avoue quand même avoir passé 3-4 jours à faire fonctionner ces satanés certificats Let's Encrypt mais j'y suis finalement parvenu et j'ai beaucoup appris.

Un autre point sur lequel k3s est limité est la liste de Storage Classes. Dans Kubernetes, une Storage Class, est en quelques sortes un driver qui peut provisionner à la volée des PersistentVolumes (PV). Dans mon cas je comptais utiliser AzureFiles pour provisionner des partages depuis un Storage account sur Azure mais il semble que k3s ne l'implémente pas. En lisant cette documentation je crois comprendre que k3s ne propose qu'une Storage Class locale, c'est à dire sur le nœud qui exécute le pod. Quand aux backends supportés, je ne trouve pas de liste même si j'ai pu valider que NFS fonctionne bien.

Migrer le blog dans Kubernetes m'a déjà permis d'apprendre beaucoup de choses. Rien de plus gratifiant que le sentiment "j'ai compris !!!" après avoir passé des heures à essayer en vain de faire fonctionner une ressource. J'espère me motiver un jour à ajouter d'autres nœuds dans mon cluster, quand j'aurai résolu le problème du stockage.

Le blog sous Docker (le retour)

Rédigé par uTux 6 commentaires

Juste un petit billet pour indiquer que le blog tourne à nouveau sous Docker. Cette fois-ci je n'utilise plus un unique container apache, mais 3 containers orchestrés par docker-compose :

Et il y a toujours un nginx "en dur" en frontal qui fait reverse proxy et centralise les logs.

logo docker

Le serveur est désormais un Scaleway VC1S aux pays-bas sur lequel tourne une distribution Debian Stretch. Pour les containers j'ai choisi d'utiliser au maximum des images alpine en raison de leur légèreté et de la simplicité du système. Et pour le moment, ça marche plutôt bien.

J'ai essayé d'utiliser un serveur ARM Scaleway, mais outre le fait qu'il est compliqué d'installer Docker (il faut utiliser Ubuntu-server ou alors compiler) les images du Dockerhub ne semblent pas disponibles pour cette architecture. Je me suis donc rabattu sur un VC1S qui n'est rien d'autre qu'une machine virtuelle x86_64.

Fil RSS des articles de cette catégorie