← Katalog
E I A C

nixidy

SDLC / Policy-as-Code

GitOps dla Kubernetes budowany na Nix - deklaratywne manifesty jako kod Nix.

nixidy to podejście do GitOps dla Kubernetes, w którym manifesty klastra definiuje się nie w YAML-u, a w języku Nix. Zamiast pisać setki linii deklaracji z ograniczonym templatingiem (jak w Helm czy Kustomize), dostajemy pełnoprawny język programowania - z funkcjami, typami, kompozycją modułów i weryfikacją w czasie ewaluacji. Repozytorium z kodem Nix staje się źródłem prawdy o stanie klastra, a wynikowe manifesty są renderowane deterministycznie i synchronizowane z klastrem tak jak w klasycznym GitOps.

Dla ekosystemu EIAC nixidy jest ciekawym przykładem „manage-infrastructure-as-code” doprowadzonego do skrajności - infrastruktura nie jest opisywana danymi (YAML), tylko wyrażana jako program. Dzięki temu łatwiej reużywać logikę między środowiskami, walidować konfigurację statycznie i unikać powtarzalnych bloków, które w czystym YAML-u trzeba kopiować albo sklejać templatingiem tekstowym.

Kiedy używać

  • Masz już doświadczenie z Nix (NixOS, nixpkgs, home-manager) i chcesz spójny język konfiguracji od systemu po klaster Kubernetes.
  • Helm/Kustomize zaczynają się rozłazić przy dużej liczbie środowisk i potrzebujesz realnej abstrakcji (funkcji, modułów) zamiast templatingu stringów.
  • Zależy Ci na deterministycznym, powtarzalnym renderowaniu manifestów i walidacji konfiguracji jeszcze przed wysłaniem do klastra.
  • Budujesz platformę wewnętrzną i chcesz dać zespołom typowane, kompozycyjne bloki do składania własnych wdrożeń.

Przykład użycia

{
  clusters.production = {
    resources = {
      namespace.eiac-web = { };

      deployment.eiac-web = {
        replicas = 3;
        image = "registry.eiac.dev/eiac-web:1.4.0";
        namespace = "eiac-web";
      };

      service.eiac-web = {
        selector.app = "eiac-web";
        ports = [ { port = 80; targetPort = 8080; } ];
      };
    };
  };
}