aboutsummaryrefslogtreecommitdiff
path: root/nixos/modules/services/cluster/kubernetes/controller-manager.nix
diff options
context:
space:
mode:
authorChristian Albrecht <christian.albrecht@mayflower.de>2019-03-01 07:56:59 +0100
committerChristian Albrecht <christian.albrecht@mayflower.de>2019-03-03 19:34:57 +0100
commitf9e2f76a590d11cbeaa10e3953ddc96110bf1b3b (patch)
tree6cb5d4117495ab4fc37a42a6eb02044471730eb5 /nixos/modules/services/cluster/kubernetes/controller-manager.nix
parent2d20e8c5f2e029606e65d2e480b5d1d961c69f50 (diff)
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.
Diffstat (limited to 'nixos/modules/services/cluster/kubernetes/controller-manager.nix')
-rw-r--r--nixos/modules/services/cluster/kubernetes/controller-manager.nix22
1 files changed, 20 insertions, 2 deletions
diff --git a/nixos/modules/services/cluster/kubernetes/controller-manager.nix b/nixos/modules/services/cluster/kubernetes/controller-manager.nix
index dff97f144d55..27b28311adbc 100644
--- a/nixos/modules/services/cluster/kubernetes/controller-manager.nix
+++ b/nixos/modules/services/cluster/kubernetes/controller-manager.nix
@@ -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;
- };
+ });
}