diff options
author | Jaka Hudoklin <jakahudoklin@gmail.com> | 2017-09-01 12:22:12 +0200 |
---|---|---|
committer | Robin Gloster <mail@glob.in> | 2017-09-24 11:44:25 +0200 |
commit | 2beadcf1818dfeb6aba7b37112c2f409734fee17 (patch) | |
tree | 9e4a4c835f907e87eb5a6978bf67e4922e952790 /nixos/modules/services/cluster/kubernetes | |
parent | 9d97c92d68445aab986916c7214c28f824264cd9 (diff) | |
download | nixlib-2beadcf1818dfeb6aba7b37112c2f409734fee17.tar nixlib-2beadcf1818dfeb6aba7b37112c2f409734fee17.tar.gz nixlib-2beadcf1818dfeb6aba7b37112c2f409734fee17.tar.bz2 nixlib-2beadcf1818dfeb6aba7b37112c2f409734fee17.tar.lz nixlib-2beadcf1818dfeb6aba7b37112c2f409734fee17.tar.xz nixlib-2beadcf1818dfeb6aba7b37112c2f409734fee17.tar.zst nixlib-2beadcf1818dfeb6aba7b37112c2f409734fee17.zip |
kubernetes module: seedDockerImages option for seeding docker images built with nix
Diffstat (limited to 'nixos/modules/services/cluster/kubernetes')
-rw-r--r-- | nixos/modules/services/cluster/kubernetes/default.nix | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/nixos/modules/services/cluster/kubernetes/default.nix b/nixos/modules/services/cluster/kubernetes/default.nix index 3ebd2a086fd0..d799ce292e01 100644 --- a/nixos/modules/services/cluster/kubernetes/default.nix +++ b/nixos/modules/services/cluster/kubernetes/default.nix @@ -505,6 +505,12 @@ in { type = types.listOf types.str; }; + seedDockerImages = mkOption { + description = "List of docker images to preload on system"; + default = []; + type = types.listOf types.package; + }; + registerNode = mkOption { description = "Whether to auto register kubelet with API server."; default = true; @@ -774,16 +780,36 @@ in { config = mkMerge [ (mkIf cfg.kubelet.enable { + services.kubernetes.kubelet.seedDockerImages = [infraContainer]; + + systemd.services.kubelet-bootstrap = { + description = "Boostrap Kubelet"; + wantedBy = ["kubernetes.target"]; + after = ["docker.service" "network.target"]; + path = with pkgs; [ docker ]; + script = '' + ${concatMapStrings (img: '' + echo "Seeding docker image: ${img}" + docker load <${img} + '') cfg.kubelet.seedDockerImages} + + rm /opt/cni/bin/* || true + ${concatMapStrings (package: '' + echo "Linking cni package: ${package}" + ln -fs ${package.plugins}/* /opt/cni/bin + '') cfg.kubelet.cni.packages} + ''; + serviceConfig = { + Slice = "kubernetes.slice"; + Type = "oneshot"; + }; + }; + systemd.services.kubelet = { description = "Kubernetes Kubelet Service"; wantedBy = [ "kubernetes.target" ]; - after = [ "network.target" "docker.service" "kube-apiserver.service" ]; + after = [ "network.target" "docker.service" "kube-apiserver.service" "kubelet-bootstrap.service" ]; path = with pkgs; [ gitMinimal openssh docker utillinux iproute ethtool thin-provisioning-tools iptables socat ] ++ cfg.path; - preStart = '' - docker load < ${infraContainer} - rm /opt/cni/bin/* || true - ${concatMapStringsSep "\n" (p: "ln -fs ${p.plugins}/* /opt/cni/bin") cfg.kubelet.cni.packages} - ''; serviceConfig = { Slice = "kubernetes.slice"; ExecStart = ''${cfg.package}/bin/kubelet \ |