Bootstrap cluster manually

This commit is contained in:
Jonas Juselius
2019-10-17 20:56:32 +02:00
parent 81717fe223
commit d347727c4f
2 changed files with 44 additions and 28 deletions

View File

@@ -15,12 +15,24 @@ let
kube-system-bootstrap = pkgs.stdenv.mkDerivation { kube-system-bootstrap = pkgs.stdenv.mkDerivation {
name = "kube-system-bootstrap"; name = "kube-system-bootstrap";
src = ./kube-system-bootstrap; src = ./kube-system-bootstrap;
buildCommand = ''
mkdir -p $out
cp -r $src/* $out
'';
};
bootstrap-kube-system-sh = pkgs.writeScriptBin "bootstrap-kube-system.sh" ''
#!${pkgs.bash}/bin/bash
cd ${kube-system-bootstrap}
${pkgs.bash}/bin/bash ./kube-system-bootstrap ${cluster-ca} ${settings.clusterName}
'';
kube-scripts = pkgs.stdenv.mkDerivation {
name = "kube-scripts";
buildCommand = '' buildCommand = ''
mkdir -p $out/bin mkdir -p $out/bin
mkdir -p $out/share/kube-system-bootstrap
cp -r $src/* $out/share/kube-system-bootstrap/
cd $out/bin cd $out/bin
ln -s $out/share/kube-system-bootstrap/bin/* . ln -s ${kube-system-bootstrap}/bin/* .
''; '';
}; };
@@ -84,7 +96,8 @@ rec {
environment.systemPackages = [ environment.systemPackages = [
pkgs.kubernetes-helm pkgs.kubernetes-helm
pkgs.kubectl pkgs.kubectl
kube-system-bootstrap kube-scripts
bootstrap-kube-system-sh
]; ];
systemd.services.kube-certmgr-apitoken-bootstrap = { systemd.services.kube-certmgr-apitoken-bootstrap = {
@@ -98,29 +111,29 @@ rec {
}; };
}; };
systemd.services.kube-system-bootstrap = { # systemd.services.kube-system-bootstrap = {
description = "Kubernetes certmgr bootstrapper"; # description = "Kubernetes certmgr bootstrapper";
wantedBy = [ "multi-user.target" ]; # wantedBy = [ "multi-user.target" ];
after = [ "kubernetes.target" ]; # after = [ "kubernetes.target" ];
serviceConfig = { # serviceConfig = {
Type = "oneshot"; # Type = "oneshot";
RemainAfterExit = false; # RemainAfterExit = false;
Environment = '' # Environment = ''
PATH=$PATH:/run/current-system/sw/bin # PATH=$PATH:/run/current-system/sw/bin
''; # '';
ExecStart = pkgs.writeScript "kube-system-bootstrap" '' # ExecStart = pkgs.writeScript "kube-system-bootstrap" ''
#!${pkgs.bash}/bin/bash # #!${pkgs.bash}/bin/bash
set -e # set -e
if [ ! -f /var/lib/kubernetes/.kube-system-bootstrap.done ]; then # if [ ! -f /var/lib/kubernetes/.kube-system-bootstrap.done ]; then
${pkgs.bash}/bin/bash # sh=${pkgs.bash}/bin/bash
d=${kube-system-bootstrap}/share/kube-system-bootstrap # d=${kube-system-bootstrap}/share/kube-system-bootstrap
cd $d # cd $d
$d/kube-system-bootstrap ${cluster-ca} ${settings.clusterName} # $sh $d/kube-system-bootstrap ${cluster-ca} ${settings.clusterName}
touch /var/lib/kubernetes/.kube-system-bootstrap.done # touch /var/lib/kubernetes/.kube-system-bootstrap.done
fi # fi
''; # '';
}; # };
}; # };
}; };
kubeWorker = { kubeWorker = {
@@ -184,6 +197,9 @@ rec {
firewall.allowedTCPPorts = [ 80 443 111 ]; firewall.allowedTCPPorts = [ 80 443 111 ];
firewall.allowedUDPPorts = [ 111 24007 24008 ]; firewall.allowedUDPPorts = [ 111 24007 24008 ];
}; };
environment.systemPackages = with pkgs; [
nfs-utils
];
}; };
apiserver = ip: name: self: apiserver = ip: name: self: