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.
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.
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.
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.
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é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 :
1.24.7
avec comme CNI cilium
NANO
pouvant scale entre 1 à 5 noeud