Introduction

Dans ce tutoriel, nous allons commencer par créer un cluster Kubernetes sur Scaleway avec Terraform puis nous verrons comment configurer et installer cert-manager, ingress-nginx et external DNS pour pouvoir héberger une application sur Kubernetes.

Terraform ayant des limitations dans la création de modules avec des providers dynamique, nous allons donc séparer dans deux dossiers la partie création de cluster et la partie configuration du cluster.

Présentation ingress-nginx

L'ingress Nginx Kubernetes est un contrôleur Ingress qui permet aux utilisateurs de déployer facilement des applications sur un cluster Kubernetes. Il permet aux utilisateurs de configurer des règles de routage et des mappings de ports pour leurs applications, et donne aux utilisateurs un point d'entrée unique pour leurs applications. En outre, ingress-nginx est configurable et extensible, ce qui permet aux utilisateurs d'ajouter des fonctionnalités supplémentaires à leur cluster Kubernetes.

Présentation External DNS

External DNS est un outil qui vous permet de configurer automatiquement vos enregistrements DNS pour vos services Kubernetes. Il est capable de configurer des enregistrements DNS pour des services telles que Load Balancers, Ingresses et Services externes. Cela permet à votre application d'être accessible depuis l'extérieur en utilisant un nom de domaine.

Présentation cert-manager

Cert-Manager est un outil qui vous permet de gérer facilement les certificats SSL pour vos applications sur Kubernetes. Il peut automatiquement gérer la demande et le renouvellement des certificats, et vous donne un moyen simple de configurer une variété de stratégies pour la gestion des certificats. Cert-Manager est un outil utile pour les développeurs qui souhaitent mettre en œuvre un certificat SSL sur leur application Kubernetes.

Prérequis pour créer et configurer le cluster Kubernetes

Créer une paire de clés d’accès Scaleway pour permettre à Terraform de créer les ressources, puis l’exporter dans en variable d’environnement comme ci-dessous :

export SCW_ACCESS_KEY="my-access-key"
export SCW_SECRET_KEY="my-secret-key"

Création du cluster Kubernetes sur Scaleway

Créez un dossier scaleway_cluster puis y ajouter un fichier nommé cluster.tf qui ressemble à la configuration ci dessous :

# Plus d'option de configuration du cluster ici : <https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/resources/k8s_cluster>
resource "scaleway_k8s_cluster" "cluster" {
  name    = "scaleway_cluster"  
  version = "1.24.7"
  cni     = "cilium"
}

# Plus d'option de configuration du cluster ici : <https://registry.terraform.io/providers/scaleway/scaleway/latest/docs/resources/k8s_pool>
resource "scaleway_k8s_pool" "pool" {
  cluster_id  = scaleway_k8s_cluster.cluster.id
  name        = "pool"
  node_type   = "PLAY2-NANO"
  size        = 1
  min_size    = 1
  max_size    = 5
  autoscaling = true
  autohealing = true
}

resource "local_file" "kubeconfig" {
  content  = scaleway_k8s_cluster.cluster.kubeconfig[0].config_file
  filename = "../configuration/kubeconfig"
}

Cette configuration crée :