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 init
Cette 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 plan
Cette 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 apply
Vérification
Vérifions maintenant avec la commande kubectl
suivante si notre namespace Kubernetes namespace-exemple
a bien été crée :
kubectl get ns
Retour :
NAME STATUS AGE
default Active 72d
namespace-exemple Active 1d
Aprè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.