nixos/kubernetes: use system.path to handle dependency on flannel subnet.env
The current postStart step on flannel causes flannel.service to sometimes hang, even when it's commanded to stop.
This commit is contained in:
parent
466beb0214
commit
7028fac35b
@ -50,16 +50,22 @@ in
|
|||||||
|
|
||||||
systemd.services."mk-docker-opts" = {
|
systemd.services."mk-docker-opts" = {
|
||||||
description = "Pre-Docker Actions";
|
description = "Pre-Docker Actions";
|
||||||
wantedBy = [ "flannel.service" ];
|
|
||||||
before = [ "docker.service" ];
|
|
||||||
after = [ "flannel.service" ];
|
|
||||||
path = with pkgs; [ gawk gnugrep ];
|
path = with pkgs; [ gawk gnugrep ];
|
||||||
script = ''
|
script = ''
|
||||||
mkdir -p /run/flannel
|
|
||||||
${mkDockerOpts}/mk-docker-opts -d /run/flannel/docker
|
${mkDockerOpts}/mk-docker-opts -d /run/flannel/docker
|
||||||
|
systemctl restart docker
|
||||||
'';
|
'';
|
||||||
serviceConfig.Type = "oneshot";
|
serviceConfig.Type = "oneshot";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.paths."flannel-subnet-env" = {
|
||||||
|
wantedBy = [ "flannel.service" ];
|
||||||
|
pathConfig = {
|
||||||
|
PathModified = "/run/flannel/subnet.env";
|
||||||
|
Unit = "mk-docker-opts.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
systemd.services.docker.serviceConfig.EnvironmentFile = "/run/flannel/docker";
|
systemd.services.docker.serviceConfig.EnvironmentFile = "/run/flannel/docker";
|
||||||
|
|
||||||
# read environment variables generated by mk-docker-opts
|
# read environment variables generated by mk-docker-opts
|
||||||
|
@ -161,7 +161,10 @@ in {
|
|||||||
FLANNELD_KUBECONFIG_FILE = cfg.kubeconfig;
|
FLANNELD_KUBECONFIG_FILE = cfg.kubeconfig;
|
||||||
NODE_NAME = cfg.nodeName;
|
NODE_NAME = cfg.nodeName;
|
||||||
};
|
};
|
||||||
preStart = mkIf (cfg.storageBackend == "etcd") ''
|
preStart = ''
|
||||||
|
mkdir -p /run/flannel
|
||||||
|
touch /run/flannel/docker
|
||||||
|
'' + optionalString (cfg.storageBackend == "etcd") ''
|
||||||
echo "setting network configuration"
|
echo "setting network configuration"
|
||||||
until ${pkgs.etcdctl.bin}/bin/etcdctl set /coreos.com/network/config '${builtins.toJSON networkConfig}'
|
until ${pkgs.etcdctl.bin}/bin/etcdctl set /coreos.com/network/config '${builtins.toJSON networkConfig}'
|
||||||
do
|
do
|
||||||
@ -169,13 +172,11 @@ in {
|
|||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
postStart = ''
|
serviceConfig = {
|
||||||
while [ ! -f /run/flannel/subnet.env ]
|
ExecStart = "${cfg.package}/bin/flannel";
|
||||||
do
|
Restart = "always";
|
||||||
sleep 1
|
RestartSec = "10s";
|
||||||
done
|
};
|
||||||
'';
|
|
||||||
serviceConfig.ExecStart = "${cfg.package}/bin/flannel";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
services.etcd.enable = mkDefault (cfg.storageBackend == "etcd" && cfg.etcd.endpoints == ["http://127.0.0.1:2379"]);
|
services.etcd.enable = mkDefault (cfg.storageBackend == "etcd" && cfg.etcd.endpoints == ["http://127.0.0.1:2379"]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user