how-to-install-and-manage Help

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