Totally revamp cluster chart configs

This commit is contained in:
Jonas Juselius
2020-11-05 21:06:57 +01:00
parent 3a69e7f1f1
commit f5d8ed6915

View File

@@ -29,55 +29,66 @@ let
''; '';
}; };
kube-system-bootstrap = cluster-scripts = pkgs.stdenv.mkDerivation {
let name = "cluster-scripts";
workerNodes = pkgs.writeText "kube-worker-nodes" ( src = ../scripts;
builtins.foldl' (a: x:
a + " - ${x.address}\n") "" cfg.k8s.nodes);
grafanaLdap = pkgs.writeText "grafana-ldap.toml"
cfg.k8s.bootstrap.grafana_ldap_toml;
in
pkgs.stdenv.mkDerivation {
name = "kube-system-bootstrap";
src = ../bootstrap;
buildCommand = '' buildCommand = ''
share=$out/share/kube-system-bootstrap
mkdir -p $out/bin mkdir -p $out/bin
mkdir -p $share/bin cp $src/* $out/bin
mkdir -p $share/config '';
mkdir -p $share/charts };
export bash="${pkgs.bash}" show-kubernetes-charts-config =
export apiserver="${cfg.k8s.master.name}" let
export apiserverAddress="${cfg.k8s.master.address}" ingressNodes = builtins.foldl' (a: x:
export initca="${pki.initca}" a + ", ${x}") "${cfg.k8s.master.name}"
export cluster="${cfg.clusterName}" cfg.k8s.extraIngressNodes;
export fileserver="${cfg.k8s.fileserver}" ingressReplicas =
export acme_email="${cfg.k8s.bootstrap.acme_email}" builtins.toString (1 + builtins.length cfg.k8s.extraIngressNodes);
export grafana_smtp_user="$(echo -n ${cfg.k8s.bootstrap.grafana_smtp_user} | base64 -w0)" grafanaLdap = pkgs.writeText "grafana-ldap.toml"
export grafana_smtp_password="$(echo -n ${cfg.k8s.bootstrap.grafana_smtp_password} | base64 -w0)" cfg.k8s.charts.grafana_ldap_toml;
export grafana_ldap_toml="$(cat ${grafanaLdap} | base64 -w0)" in
export workers="$(cat ${workerNodes})" pkgs.writeScriptBin "show-kubernetes-charts-config"
''
substituteAll $src/bin/initial-kube-system-bootstrap $share/bin/initial-kube-system-bootstrap #!${pkgs.stdenv.shell}
chmod 755 $share/bin/initial-kube-system-bootstrap cat << EOF
# Generated by show-kubernetes-charts-config
substituteAll $src/copy-kube-system-bootstrap $out/bin/copy-kube-system-bootstrap # $(date)
chmod 755 $out/bin/copy-kube-system-bootstrap
vars=(
cd $src/config initca="${pki.initca}"
for i in *; do apiserver="${cfg.k8s.master.name}"
substituteAll $i $share/config/$i cluster="${cfg.clusterName}"
done ingress_nodes="[ ${ingressNodes} ]"
ingress_replicas="${ingressReplicas}"
cd $src/charts filseserver="${cfg.k8s.fileserver}"
for i in *; do acme_email="${cfg.k8s.charts.acme_email}"
substituteAll $i $share/charts/$i grafana_smtp_user="$(echo -n ${cfg.k8s.charts.grafana_smtp_user} | base64 -w0)"
done grafana_smtp_password="$(echo -n ${cfg.k8s.charts.grafana_smtp_password} | base64 -w0)"
grafana_ldap_toml="$(cat ${grafanaLdap} | base64 -w0)"
cp $src/bin/* $share/bin )
EOF
cat << 'EOF'
make_substitutions () {
read x
for i in "''${vars[@]}"; do
k=$(echo "$i" | cut -d= -f1)
v=$(echo "$i" | cut -d= -f2)
echo "$x" | sed "s/@$k@/$v/g"
done
}
kubectl_apply () {
charts=("$@")
for i in "''${charts[@]}"; do
k=$(echo "$i" | cut -d= -f1)
v=$(echo "$i" | cut -d= -f2)
sed "s/@$k@/$v/g" $i | kubectl apply -f -
done
}
EOF
''; '';
};
install-apitoken = '' install-apitoken = ''
#!${pkgs.bash}/bin/bash #!${pkgs.bash}/bin/bash
@@ -150,7 +161,8 @@ let
environment.systemPackages = [ environment.systemPackages = [
pkgs.kubernetes-helm pkgs.kubernetes-helm
pkgs.kubectl pkgs.kubectl
kube-system-bootstrap cluster-scripts
show-kubernetes-charts-config
]; ];
systemd.services.kube-certmgr-apitoken-bootstrap = { systemd.services.kube-certmgr-apitoken-bootstrap = {
@@ -220,6 +232,11 @@ in {
default = "10.0.0.0/16"; default = "10.0.0.0/16";
}; };
extraIngressNodes = mkOption {
type = types.listOf types.str;
default = [];
};
master = { master = {
enable = mkEnableOption "Enable kubernetes master node"; enable = mkEnableOption "Enable kubernetes master node";
@@ -248,7 +265,7 @@ in {
enable = mkEnableOption "Enable kubernetes"; enable = mkEnableOption "Enable kubernetes";
}; };
bootstrap = { charts = {
acme_email = mkOption { acme_email = mkOption {
type = types.str; type = types.str;
default = ""; default = "";