diff options
author | Christian Albrecht <christian.albrecht@mayflower.de> | 2019-03-06 16:44:38 +0100 |
---|---|---|
committer | Christian Albrecht <christian.albrecht@mayflower.de> | 2019-03-06 16:54:50 +0100 |
commit | 6e9037fed0ce0b55ef37188ec1a58e18e196a780 (patch) | |
tree | 81dc9f365252a4d2810521f1bcbbaf0979025646 /nixos/modules/services/cluster/kubernetes/addon-manager.nix | |
parent | ff91d5818cf4703e01670251096da301cc2c7c54 (diff) | |
download | nixpkgs-6e9037fed0ce0b55ef37188ec1a58e18e196a780.tar nixpkgs-6e9037fed0ce0b55ef37188ec1a58e18e196a780.tar.gz nixpkgs-6e9037fed0ce0b55ef37188ec1a58e18e196a780.tar.bz2 nixpkgs-6e9037fed0ce0b55ef37188ec1a58e18e196a780.tar.lz nixpkgs-6e9037fed0ce0b55ef37188ec1a58e18e196a780.tar.xz nixpkgs-6e9037fed0ce0b55ef37188ec1a58e18e196a780.tar.zst nixpkgs-6e9037fed0ce0b55ef37188ec1a58e18e196a780.zip |
nixos/kubernetes: Address review: Move bootstrapping addons into own service
Diffstat (limited to 'nixos/modules/services/cluster/kubernetes/addon-manager.nix')
-rw-r--r-- | nixos/modules/services/cluster/kubernetes/addon-manager.nix | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/nixos/modules/services/cluster/kubernetes/addon-manager.nix b/nixos/modules/services/cluster/kubernetes/addon-manager.nix index 46f5b68b2a5..406b20b0d8d 100644 --- a/nixos/modules/services/cluster/kubernetes/addon-manager.nix +++ b/nixos/modules/services/cluster/kubernetes/addon-manager.nix @@ -72,9 +72,16 @@ in systemd.services.kube-addon-manager = { description = "Kubernetes addon manager"; wantedBy = [ "kube-control-plane-online.target" ]; + after = [ "kube-addon-manager-bootstrap.service" ]; before = [ "kube-control-plane-online.target" ]; environment.ADDON_PATH = "/etc/kubernetes/addons/"; path = [ pkgs.gawk ]; + preStart = '' + ${top.lib.mkWaitCurl ( with config.systemd.services.kube-addon-manager; { + path = "/api/v1/namespaces/kube-system/serviceaccounts/default"; + cacert = top.caFile; + } // optionalAttrs (environment ? cert) { inherit (environment) cert key; })} + ''; serviceConfig = { Slice = "kubernetes.slice"; ExecStart = "${top.package}/bin/kube-addons"; @@ -86,6 +93,25 @@ in }; }; + systemd.services.kube-addon-manager-bootstrap = mkIf (top.apiserver.enable && top.addonManager.bootstrapAddons != {}) { + wantedBy = [ "kube-control-plane-online.target" ]; + after = [ "kube-apiserver.service" ]; + before = [ "kube-control-plane-online.target" ]; + path = [ pkgs.kubectl ]; + preStart = with pkgs; let + files = mapAttrsToList (n: v: writeText "${n}.json" (builtins.toJSON v)) + cfg.bootstrapAddons; + in '' + ${top.lib.mkWaitCurl ( with config.systemd.services.kube-addon-manager-bootstrap; { + path = "/api"; + cacert = top.caFile; + } // optionalAttrs (environment ? cert) { inherit (environment) cert key; })} + + kubectl apply -f ${concatStringsSep " \\\n -f " files} + ''; + script = "echo Ok"; + }; + services.kubernetes.addonManager.bootstrapAddons = mkIf isRBACEnabled (let name = system:kube-addon-manager; |