at 25.11-pre 1.2 kB view raw
1{ 2 config, 3 lib, 4 pkgs, 5 ... 6}: 7let 8 cfg = config.services.heapster; 9in 10{ 11 options.services.heapster = { 12 enable = lib.mkEnableOption "Heapster monitoring"; 13 14 source = lib.mkOption { 15 description = "Heapster metric source"; 16 example = "kubernetes:https://kubernetes.default"; 17 type = lib.types.str; 18 }; 19 20 sink = lib.mkOption { 21 description = "Heapster metic sink"; 22 example = "influxdb:http://localhost:8086"; 23 type = lib.types.str; 24 }; 25 26 extraOpts = lib.mkOption { 27 description = "Heapster extra options"; 28 default = ""; 29 type = lib.types.separatedString " "; 30 }; 31 32 package = lib.mkPackageOption pkgs "heapster" { }; 33 }; 34 35 config = lib.mkIf cfg.enable { 36 systemd.services.heapster = { 37 wantedBy = [ "multi-user.target" ]; 38 after = [ 39 "cadvisor.service" 40 "kube-apiserver.service" 41 ]; 42 43 serviceConfig = { 44 ExecStart = "${cfg.package}/bin/heapster --source=${cfg.source} --sink=${cfg.sink} ${cfg.extraOpts}"; 45 User = "heapster"; 46 }; 47 }; 48 49 users.users.heapster = { 50 isSystemUser = true; 51 group = "heapster"; 52 description = "Heapster user"; 53 }; 54 users.groups.heapster = { }; 55 }; 56}