···
mkKubeConfigOptions = prefix: {
description = "${prefix} kube-apiserver server address.";
+
default = "http://${if cfg.apiserver.advertiseAddress != null
+
then cfg.apiserver.advertiseAddress
+
else "127.0.0.1"}:${toString cfg.apiserver.port}";
···
keyFile = mkDefault cfg.kubeconfig.keyFile;
+
if cfg.kubelet.cni.config != [] && !(isNull cfg.kubelet.cni.configDir) then
+
throw "Verbatim CNI-config and CNI configDir cannot both be set."
+
else if !(isNull cfg.kubelet.cni.configDir) then
+
cfg.kubelet.cni.configDir
+
name = "kubernetes-cni-config";
+
paths = imap (i: entry:
+
pkgs.writeTextDir "${toString (10+i)}-${entry.type}.conf" (builtins.toJSON entry)
+
) cfg.kubelet.cni.config;
manifests = pkgs.buildEnv {
name = "kubernetes-manifests";
···
type = types.listOf types.str;
+
bindAddress = mkOption {
+
The IP address on which to listen for the --secure-port port.
+
The associated interface(s) must be reachable by the rest
+
of the cluster, and by CLI/web clients.
···
+
description = "Path to Kubernetes CNI configuration directory.";
+
type = types.nullOr types.path;
···
(mkIf cfg.apiserver.enable {
systemd.services.kube-apiserver = {
+
description = "Kubernetes APIServer Service";
wantedBy = [ "kubernetes.target" ];
after = [ "network.target" "docker.service" ];
···
${optionalString (cfg.etcd.keyFile != null)
"--etcd-keyfile=${cfg.etcd.keyFile}"} \
--insecure-port=${toString cfg.apiserver.port} \
+
--bind-address=${cfg.apiserver.bindAddress} \
${optionalString (cfg.apiserver.advertiseAddress != null)
"--advertise-address=${cfg.apiserver.advertiseAddress}"} \
--allow-privileged=${boolToString cfg.apiserver.allowPrivileged}\