Skip to content

Provisionner manuellement un cluster K8S avec Terraform sur des instances EC2

Notifications You must be signed in to change notification settings

gforien/eks-with-ec2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eks-with-ec2

Étapes

  • recréer une instance EC2 complète (40 min)
    • test: voir l'ensemble des ressources provisionnées dans la console AWS
  • améliorations (+ 30 min)
    • extraire KEYNAME dans une variable d'environnement
    • récupérer l'ip publique dans une output value
    • récupérer le DNS public dans une output value
      Voir ces pages documentation Hashicorp sur les instances et sur les VPC
    • augmenter le nombre d'instances avec count
    • test: se connecter en SSH aux multiples instances avec leur DNS
  • installer docker
    • utiliser newgrp pour éviter de se déconnecter après l'installation
      Voir cette réponse sur StackOverflow
    • test: lancer un container → docker run -d hello-world
  • installer k8s
    • utiliser des instances Ubuntu plutôt que Amazon Linux (#1)
    • exposer les ports
    • tests: en tant qu'utilisateur standard (!= root)
      • docker ps -a
      • kubeadm version
      • service kubelet status
      • kubectl version
  • créer le cluster depuis le master node
    • sur quelle adresse IP le master écoute-t-il ?
      • IP publique ? on pourrait avec
          $ public_ip=$(curl http://169.254.169.254/latest/meta-data/public-ipv4)
          $ kubeadm init --apiserver-advertise-address="$public_ip"
      • IP privée ? Plus sécurisé, et ça ne devrait pas poser de problème car nos VM sont toutes dans le même VPC.
    • tests:
      • Vérifier la configuration créée sudo ls -l /etc/kubernetes/admin.conf
  • différencier le master et les worker dans main.tf
  • rejoindre le cluster depuis les worker nodes
    • Tests de connectivité
      • vérifier le firewall sudo ufw status → inactive
      • ajouter manuellement une règle All ICMPv4 et ping entre les différentes VM
      • vérifier que les VM peuvent se pinger sur leur IP publique/privée
    • avoir un token prédéterminé pour pouvoir faire kubeadm join --token=XXX
      Voir l'issue #9
    • quelle stratégie pour que les workers rejoignent le master ?
      Voir l'issue #10
  • accéder au cluster depuis l'extérieur
    Voir l'issue #7
    • comment sécuriser ce point d'entrée avec un certificat ?

Notes

  • Nécessite une clé SSH pré-existante pour se connecter
  • Nécessite une variable d'environnement TF_VAR_AWS_KEYNAME ($env:TF_VAR_AWS_KEYNAME avec Windows Powershell)
$env:TF_VAR_AWS_KEYNAME = 'XXXXXXXX'
terraform apply -var token=$(.\Get-K8sToken.ps1)
Gabriel Forien
INSA Lyon

About

Provisionner manuellement un cluster K8S avec Terraform sur des instances EC2

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published