Environnement de developpement
Pour éviter d'impacter directement le cluster de production, nous avons créé un cluster de développement. Il nous fallait une méthode déploiement rapide qui se synchronise rapidement avec notre branche de travail.
Les technologies utilisées pour le cluster de développement sont :
[Kind]
[FluxCD]
[Sealed Secrets]
[NixOs]
Nous avons utilisé la fonctionnalité nix shell pour créer l'environnement de développement. Tout d'abord il crée un environnement de développement avec les outils nécessaires pour le cluster de développement. Puis celui-ci s'occupe de néttoyer l'environnement de développement au démarrage. Puis il va déployer le cluster et le synchroniser avec fluxCD.
Voici le flake.nix
{
description = "Auto Kind + Flux dev env";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
flake-utils.url = "github:numtide/flake-utils";
};
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs { inherit system; };
packages = with pkgs; [
kind
kubectl
k9s
fluxcd
kubeval
git
kubernetes-helm
];
in {
devShells.default = pkgs.mkShell {
name = "k8s-auto-dev-env";
buildInputs = packages;
## Démarrage du préshell
shellHook = ''
# Création des variables d'environnement
export CLUSTER_NAME="dev-env"
export KUBECONFIG="$PWD/.kubeconfig"
echo "👉 Resetting Kind cluster '$CLUSTER_NAME'..."
kind delete cluster --name "$CLUSTER_NAME" || true
kind create cluster --name "$CLUSTER_NAME" --kubeconfig "$KUBECONFIG"
echo "✅ Kind cluster '$CLUSTER_NAME' created."
if git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
BRANCH=$(git rev-parse --abbrev-ref HEAD)
echo "📦 Installing Flux on current branch: $BRANCH"
flux bootstrap gitlab \
--hostname="gitlab.innovalia.cc" \
--token-auth \
--owner="pa4" \
--repository="kubernetes-cluster" \
--branch="$BRANCH" \
--path="cluster" \
--kubeconfig="$KUBECONFIG"
echo "🚀 Flux bootstrapped from current branch."
else
echo "⚠️ Not in a Git repo, skipping Flux bootstrap."
fi
echo "🟢 Dev environment ready. Use kubectl, k9s, flux, etc."
'';
};
});
}
Problème recontré
Pour les pc de dev qui ne sont pas en x86_64 toutes les images ne peuvent pas être utilisées.
Il est difficile de faire les tests d'ingress en development
Il est pas possible de déployer et de tester les storage class en développement
Last modified: 13 July 2025