nixos/kubernetes: Add systemd path units

to protect services from crashing and clobbering the logs when
certificates are not in place yet and make sure services are activated
when certificates are ready.

To prevent errors similar to "kube-controller-manager.path: Failed to
enter waiting state: Too many open files"
fs.inotify.max_user_instances has to be increased.
This commit is contained in:
Christian Albrecht
2019-03-01 07:56:59 +01:00
parent 2d20e8c5f2
commit f9e2f76a59
6 changed files with 168 additions and 11 deletions

View File

@@ -104,7 +104,16 @@ in
};
###### implementation
config = mkIf cfg.enable {
config = mkIf cfg.enable (let
controllerManagerPaths = [
cfg.rootCaFile
cfg.tlsCertFile
cfg.tlsKeyFile
top.pki.certs.controllerManagerClient.cert
top.pki.certs.controllerManagerClient.key
];
in {
systemd.services.kube-controller-manager = {
description = "Kubernetes Controller Manager Service";
wantedBy = [ "kubernetes.target" ];
@@ -142,6 +151,15 @@ in
Group = "kubernetes";
};
path = top.path;
unitConfig.ConditionPathExists = controllerManagerPaths;
};
systemd.paths.kube-controller-manager = {
wantedBy = [ "kube-controller-manager.service" ];
pathConfig = {
PathExists = controllerManagerPaths;
PathChanged = controllerManagerPaths;
};
};
services.kubernetes.pki.certs = with top.lib; {
@@ -158,5 +176,5 @@ in
};
services.kubernetes.controllerManager.kubeconfig.server = mkDefault top.apiserverAddress;
};
});
}