Créer un Namespace Kubernetes avec Terraform

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.