Kubernetes avec AWS/Kops

Kubernetes est une plateforme open-source, mais il en existe différentes distributions, un peu comme pour Linux. Pour mieux comprendre : une distribution Linux, c’est le noyau Linux accompagné d’outils, de configurations et d’ajouts spécifiques faits par les développeurs. C’est exactement le même principe avec Kubernetes.
Plusieurs entreprises proposent leur propre version de Kubernetes, adaptée à certains usages, avec des outils préinstallés, une configuration facilitée ou un support technique.
On trouve ainsi différentes distributions de Kubernetes comme :
Les distributions Cloud
AWS EKS
Azure AKS
Google GKE
Les distributions Légères/locales
MiniKube
K3s
MicroK8s
Les distributions Entreprise
OpenShift
Rancher
VMware Tanzu
Outils utilisés durant notre apprentissage/ A connaitre
Nous allons utiliser les outils suivants :
kubectl : Il s'agit d'une interface en ligne de commande permettant d'interagir avec un cluster Kubernetes. Grâce à cet outil, il est possible de déployer des applications, d'inspecter les ressources et de gérer l'ensemble du cluster.
Minikube : C'est une solution légère qui permet d'exécuter un cluster Kubernetes sur une machine locale. Idéal pour le développement et l'apprentissage, il élimine la nécessité de recourir à des ressources cloud.
kops (Kubernetes Operations) : Cet outil est utilisé pour créer, mettre à jour et maintenir des clusters Kubernetes hautement disponibles, notamment sur AWS (et Google Cloud aussi :), mais pour le moment, focus sur AWS )
eksctl: Pour créer et gérer un clsuter EKS (géré par AWS)
Comment créer un cluster Kubernetes avec Kops sur AWS (sans DNS public)
Ici nousverrons comment utiliser Kops pour créer des clusters Kubernetes sur AWS.
Même si, en production, on utilise souvent un vrai nom de domaine, il est tout à fait possible de créer un cluster sans DNS externe pour apprendre ou tester. Pour cela, on utilise --dns=none
.
🧰 Ce qu’il nous faut avant de commencer :
✅ Un compte AWS avec les permissions nécessaires
✅ Le CLI AWS installé et configuré (
aws configure
)✅ L’outil
kops
installé✅ L’outil
kubectl
installé✅ Un bucket S3 pour stocker l’état du cluster
✅ Un nom de cluster utilisant un faux domaine interne, par exemple :
cluster.k8s.local
🛠️ Étapes de création du cluster
1. Créer un bucket S3 pour stocker l’état du cluster
aws s3api create-bucket --bucket mon-cluster-k8s-state --region us-east-1
export KOPS_STATE_STORE=s3://mon-cluster-k8s-state
Ce bucket sert à stocker les fichiers de configuration de ton cluster Kubernetes.
2. Décrire le cluster avec un domaine local
kops create cluster \
--name=cluster.k8s.local \
--zones=us-east-1a \
--node-count=2 \
--node-size=t3.medium \
--master-size=t3.medium \
--dns=none
🔍 Ce qu’il faut noter :
Le nom du cluster se termine par
.k8s.local
, car on ne va pas utiliser de DNS public.L’option
--dns=none
indique à Kops de ne pas essayer de créer de records DNS dans Route 53.
3. Créer le cluster réellement
kops update cluster cluster.k8s.local --yes
Cette commande va démarrer la création des instances EC2 et l’installation de Kubernetes.
4. Vérifier que tout fonctionne
Après quelques minutes, vous pouvez exécuter :
kops validate cluster
kubectl get nodes
Nous devrions voir tes nœuds s’afficher. Cela signifie que le cluster fonctionne !
🧠 Bonnes pratiques à garder en tête
Voici quelques conseils utiles pour bien gérer tes environnements Kubernetes, même pendant l’apprentissage :
🧩 Séparation des environnements
Utilisez des Namespaces pour organiser et isoler vos différentes applications dans un même cluster.
Pour aller plus loin, gardez des clusters séparés pour le développement, la pré-production (staging) et la production. Cela limite les risques et permet une meilleure gestion des ressources.
📊 Supervision
Installez Prometheus et Grafana pour surveiller l’état de votre cluster et détecter rapidement les problèmes de performance ou de disponibilité.
🔐 Sécurité
Protégez tes informations sensibles (comme les mots de passe ou clés d’API) en utilisant des outils comme HashiCorp Vault ou AWS KMS pour stocker et gérer vos secrets en toute sécurité.
🔁 Déploiement continu avec GitOps
Utilisez des outils comme ArgoCD pour que l’état de ton cluster suive automatiquement les fichiers de configuration dans ton dépôt Git. Cela rend les déploiements plus fiables et traçables.
🧹 Pensez à nettoyer après les tests !
Une fois que vous avez fini d’expérimenter, n’oubliez pas de supprimer votre cluster pour éviter des frais inutiles sur AWS.
Coût approximatif | |
AWS EKS | ~$73/mois par control plane par cluster + coût des instances EC2 |
Kops (AWS) | Pas de frais pour le control plane. vous payez seulement EC2 + S3 |
Minikube | Gratuit (fonctionne localement sur votre machine) |
AKS | Gratuit pour le control plane, vous paies uniquement les machines |
Pour supprimer le cluster que vous avez précédemment créé, commencez par vérifier que la variable d’environnement KOPS_STATE_STORE
est bien définie et qu’elle pointe vers le bucket S3 utilisé par Kops :
export KOPS_STATE_STORE=s3://mon-cluster-k8s-state
Une fois cela fait, vous pouvez procéder à la suppression du cluster avec la commande suivante :
kops delete cluster --name cluster.k8s.local --yes
Il faut aussi supprimer le bucket S3. Le bucket doit être vide avant d’être supprimé. Nous pouvons utiliser la commande suivante pour tout effacer et supprimer le bucket :
aws s3 rb s3://mon-cluster-k8s-state --force
Subscribe to my newsletter
Read articles from Mario Fadegnon directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
