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