kubernetes: update to 1.10

Changed files
+51 -10
nixos
modules
services
cluster
kubernetes
pkgs
applications
networking
cluster
kubernetes
+1
nixos/modules/rename.nix
···
(mkRenamedOptionModule [ "services" "graphite" "web" "host" ] [ "services" "graphite" "web" "listenAddress" ])
(mkRenamedOptionModule [ "services" "i2pd" "extIp" ] [ "services" "i2pd" "address" ])
(mkRenamedOptionModule [ "services" "kibana" "host" ] [ "services" "kibana" "listenAddress" ])
+
(mkRenamedOptionModule [ "services" "kubernetes" "apiserver" "admissionControl" ] [ "services" "kubernetes" "apiserver" "enableAdmissionPlugins" ])
(mkRenamedOptionModule [ "services" "logstash" "address" ] [ "services" "logstash" "listenAddress" ])
(mkRenamedOptionModule [ "services" "mpd" "network" "host" ] [ "services" "mpd" "network" "listenAddress" ])
(mkRenamedOptionModule [ "services" "neo4j" "host" ] [ "services" "neo4j" "listenAddress" ])
+46 -6
nixos/modules/services/cluster/kubernetes/default.nix
···
let
cfg = config.services.kubernetes;
+
# YAML config; see:
+
# https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/
+
# https://github.com/kubernetes/kubernetes/blob/release-1.10/pkg/kubelet/apis/kubeletconfig/v1beta1/types.go
+
#
+
# TODO: migrate the following flags to this config file
+
#
+
# --pod-manifest-path
+
# --address
+
# --port
+
# --tls-cert-file
+
# --tls-private-key-file
+
# --client-ca-file
+
# --authentication-token-webhook
+
# --authentication-token-webhook-cache-ttl
+
# --authorization-mode
+
# --healthz-bind-address
+
# --healthz-port
+
# --allow-privileged
+
# --cluster-dns
+
# --cluster-domain
+
# --hairpin-mode
+
# --feature-gates
+
kubeletConfig = pkgs.runCommand "kubelet-config.yaml" { } ''
+
echo > $out ${pkgs.lib.escapeShellArg (builtins.toJSON {
+
kind = "KubeletConfiguration";
+
apiVersion = "kubelet.config.k8s.io/v1beta1";
+
${if cfg.kubelet.applyManifests then "staticPodPath" else null} =
+
manifests;
+
})}
+
'';
+
skipAttrs = attrs: map (filterAttrs (k: v: k != "enable"))
(filter (v: !(hasAttr "enable" v) || v.enable) attrs);
···
type = types.str;
};
-
admissionControl = mkOption {
+
enableAdmissionPlugins = mkOption {
description = ''
-
Kubernetes admission control plugins to use. See
+
Kubernetes admission control plugins to enable. See
<link xlink:href="https://kubernetes.io/docs/admin/admission-controllers/"/>
'';
default = ["NamespaceLifecycle" "LimitRanger" "ServiceAccount" "ResourceQuota" "DefaultStorageClass" "DefaultTolerationSeconds" "NodeRestriction"];
···
type = types.listOf types.str;
};
+
disableAdmissionPlugins = mkOption {
+
description = ''
+
Kubernetes admission control plugins to disable. See
+
<link xlink:href="https://kubernetes.io/docs/admin/admission-controllers/"/>
+
'';
+
default = [];
+
type = types.listOf types.str;
+
};
+
serviceAccountKeyFile = mkOption {
description = ''
Kubernetes apiserver PEM-encoded x509 RSA private or public key file,
···
type = types.bool;
};
+
# TODO: remove this deprecated flag
cadvisorPort = mkOption {
description = "Kubernetes kubelet local cadvisor port.";
default = 4194;
···
serviceConfig = {
Slice = "kubernetes.slice";
ExecStart = ''${cfg.package}/bin/kubelet \
-
${optionalString cfg.kubelet.applyManifests
-
"--pod-manifest-path=${manifests}"} \
${optionalString (taints != "")
"--register-with-taints=${taints}"} \
--kubeconfig=${mkKubeConfig "kubelet" cfg.kubelet.kubeconfig} \
-
--require-kubeconfig \
+
--config=${kubeletConfig} \
--address=${cfg.kubelet.address} \
--port=${toString cfg.kubelet.port} \
--register-node=${boolToString cfg.kubelet.registerNode} \
···
--service-cluster-ip-range=${cfg.apiserver.serviceClusterIpRange} \
${optionalString (cfg.apiserver.runtimeConfig != "")
"--runtime-config=${cfg.apiserver.runtimeConfig}"} \
-
--admission_control=${concatStringsSep "," cfg.apiserver.admissionControl} \
+
--enable-admission-plugins=${concatStringsSep "," cfg.apiserver.enableAdmissionPlugins} \
+
--disable-admission-plugins=${concatStringsSep "," cfg.apiserver.disableAdmissionPlugins} \
${optionalString (cfg.apiserver.serviceAccountKeyFile!=null)
"--service-account-key-file=${cfg.apiserver.serviceAccountKeyFile}"} \
${optionalString cfg.verbose "--v=6"} \
+4 -4
pkgs/applications/networking/cluster/kubernetes/default.nix
···
"cmd/kube-apiserver"
"cmd/kube-controller-manager"
"cmd/kube-proxy"
-
"plugin/cmd/kube-scheduler"
+
"cmd/kube-scheduler"
"test/e2e/e2e.test"
]
}:
···
stdenv.mkDerivation rec {
name = "kubernetes-${version}";
-
version = "1.9.7";
+
version = "1.10.0";
src = fetchFromGitHub {
owner = "kubernetes";
repo = "kubernetes";
rev = "v${version}";
-
sha256 = "1dykh48c6bvypg51mlxjdyrggpjq597mjj83xgj1pfadsy6pp9bh";
+
sha256 = "0k6m55p0q8qscg8l7y1ymmp5vc3i07znqk61g4hs1gx0dj3id6mc";
};
-
# go > 1.10 should be fixed by https://github.com/kubernetes/kubernetes/pull/60373
+
# go > 1.10 should be fixed by https://github.com/kubernetes/kubernetes/pull/60597
buildInputs = [ removeReferencesTo makeWrapper which go_1_9 rsync go-bindata ];
outputs = ["out" "man" "pause"];