Skip to content
Snippets Groups Projects
user avatar
Nicolas Pernoud authored
6c7a4c9f
History
Name Last commit Last update
demo
README.md

Création et utilisation d'un cluster Kubernetes "Kapsule" sur Scaleway

L'objet de ce document est de présenter la création et l'utilisation d'un cluster kubernetes managé fonctionnel chez Scaleway, en donnant un exemple adaptable et reproductible de déploiement d'application avec stockage (stateful) et accès externe via un certificat TLS automatiquement et dynamiquement généré par Let's Encrypt.

Pré requis

Cloner ce dépôt pour avoir les fichiers yaml nécessaires à son utilisation.

Création du cluster

Aller sur https://console.scaleway.com/kapsule/clusters, créer un cluster avec 2 noeuds "Development" (DEV1-M). Ne pas installer de contrôleur "ingress".

Connexion et manipulation du cluster

Installer kubectl sur votre poste de travail : https://kubernetes.io/fr/docs/tasks/tools/install-kubectl . Il faut également installer sur votre poste l'outil helm pour déployer les helm charts : https://helm.sh/docs/intro/install .

Enregistrer le fichier "Kubeconfig" propre à votre cluster avec le chemin $HOME/.kube/config (config est le nom du fichier, pas un dossier), ainsi les commandes kubectl et helm permettront de manipuler votre cluster directement.

Installation de traefik et création d'une application de démo

Traefik doit être installé à part, à partir de sa "helm chart" afin de garantir la stabilité de la configuration dans le temps. Installer traefik avec la configuration permettant d'utiliser Let's Encrypt :

helm install traefik traefik/traefik
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.10.1/cert-manager.yaml

Source : https://traefik.io/blog/secure-web-applications-with-traefik-proxy-cert-manager-and-lets-encrypt/

Exposition du cluster via une ressource de type "load balancer" et le gestionnaire de certificat Let's Encrypt

L'installation de Traefik crée automatiquement une ressource "load balancer" sur le cluster.

Obtenir l'adresse IP publique du load balancer (EXTERNAL-IP sur la ligne de type LoadBalancer) :

kubectl get svc -n kube-system

... ou regarder l'IP associée au load balancer dans la console scaleway.

Enregistrer cette IP dans le DNS Scaleway :

Name Type Data TTL Priority
<sous_domaine_du_cluster> A IP publique du cluster 3600 0
*.<sous_domaine_du_cluster> A IP publique du cluster 3600 0

Déploiement complet d'une application de test

Modifier le nom d'hôte "whoami.air.alpha.grandlyon.com" dans le fichier "demo/whoami.yml".

kubectl apply -f demo/whoami.yml