Créer un Namespace Kubernetes avec Terraform
L'infra-as-code avec Terraform couplé avec Kubernetes semble être une bonne idée non ? 🤔 Pouvoir créer ses ressources de manière sécurisée et automatisée avec Terraform ?
C'est ce que nous allons voir dans cet article !
Prérequis
Afin de pouvoir interagir avec votre cluster Kubernetes, il faut préciser à Terraform le le chemin vers le fichier .kubeconfig en important le provider kubernetes
Créons un fichier nommé provider.tf comme ceci :
provider "kubernetes" {
config_path = "~/.kube/config"
}Il est aussi possible d'utiliser la variable d'environnement KUBE_CONFIG_PATH ayant pour valeur le chemin vers le fichier .kubeconfig
Les ressources
Maintenant que notre provider kubernetes est importé, créons notre namespace Kubernetes avec un fichier nommé namespace.tf
resource "kubernetes_namespace" "exemple" {
metadata {
name = "namespace-exemple"
}
}Nous créons une ressource Kubernetes de type kubernetes_namespace nommée namespace-exemple.
Initialisation
Initialisons la création de la ressource Terraform que nous allons créer avec la commande suivante :
terraform initCette commande va venir importer le provider que nous venons de créer précédemment, initialiser l'état de l'infrastructure (le "state").
Planification
Avant d'effectuer la création des ressources, il est toujours intéressant de prévisualiser ce que Terrraform va créer avec la commande suivante :
terraform planCette commande va venir lire tous les fichiers *.tf de notre projet et simuler sa bonne exécution.
Application
Et enfin appliquons nos changements et ainsi la création de notre namespace Kubernetes avec la commande suivante :
terraform applyVérification
Vérifions maintenant avec la commande kubectl suivante si notre namespace Kubernetes namespace-exemple a bien été crée :
kubectl get nsRetour :
NAME STATUS AGE
default Active 72d
namespace-exemple Active 1dAprès avoir crée des ressources Kubernetes avec Ansible, voilà une bonne initiation à l'infra-as-code avec Terraform et Kubernetes. Il est possible de créer des ressources Kubernetes de manière automatisée de plusieurs manières différentes, et Terraform en est un bon exemple.