2017-09-09 00:00:35 +00:00
|
|
|
{ roles, config, pkgs, certs }:
|
|
|
|
with pkgs.lib;
|
2017-05-02 23:20:32 +00:00
|
|
|
let
|
2017-09-09 00:00:35 +00:00
|
|
|
base = {
|
|
|
|
inherit roles;
|
|
|
|
featureGates = ["AllAlpha"];
|
|
|
|
flannel.enable = true;
|
|
|
|
addons.dashboard.enable = true;
|
|
|
|
|
|
|
|
caFile = "${certs.master}/ca.pem";
|
|
|
|
apiserver = {
|
|
|
|
tlsCertFile = "${certs.master}/kube-apiserver.pem";
|
|
|
|
tlsKeyFile = "${certs.master}/kube-apiserver-key.pem";
|
|
|
|
kubeletClientCertFile = "${certs.master}/kubelet-client.pem";
|
|
|
|
kubeletClientKeyFile = "${certs.master}/kubelet-client-key.pem";
|
|
|
|
serviceAccountKeyFile = "${certs.master}/kube-service-accounts.pem";
|
2017-05-02 23:20:32 +00:00
|
|
|
};
|
|
|
|
etcd = {
|
2017-09-09 00:00:35 +00:00
|
|
|
servers = ["https://etcd.${config.networking.domain}:2379"];
|
|
|
|
certFile = "${certs.worker}/etcd-client.pem";
|
|
|
|
keyFile = "${certs.worker}/etcd-client-key.pem";
|
2017-05-02 23:20:32 +00:00
|
|
|
};
|
|
|
|
kubeconfig = {
|
2017-09-09 00:00:35 +00:00
|
|
|
server = "https://api.${config.networking.domain}";
|
|
|
|
};
|
|
|
|
kubelet = {
|
|
|
|
tlsCertFile = "${certs.worker}/kubelet.pem";
|
|
|
|
tlsKeyFile = "${certs.worker}/kubelet-key.pem";
|
|
|
|
hostname = "${config.networking.hostName}.${config.networking.domain}";
|
|
|
|
kubeconfig = {
|
2018-02-04 20:23:36 +00:00
|
|
|
certFile = "${certs.worker}/apiserver-client-kubelet-${config.networking.hostName}.pem";
|
|
|
|
keyFile = "${certs.worker}/apiserver-client-kubelet-${config.networking.hostName}-key.pem";
|
2017-09-09 00:00:35 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
controllerManager = {
|
|
|
|
serviceAccountKeyFile = "${certs.master}/kube-service-accounts-key.pem";
|
|
|
|
kubeconfig = {
|
|
|
|
certFile = "${certs.master}/apiserver-client-kube-controller-manager.pem";
|
|
|
|
keyFile = "${certs.master}/apiserver-client-kube-controller-manager-key.pem";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
scheduler = {
|
|
|
|
kubeconfig = {
|
|
|
|
certFile = "${certs.master}/apiserver-client-kube-scheduler.pem";
|
|
|
|
keyFile = "${certs.master}/apiserver-client-kube-scheduler-key.pem";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
proxy = {
|
|
|
|
kubeconfig = {
|
|
|
|
certFile = "${certs.worker}/apiserver-client-kube-proxy.pem";
|
|
|
|
keyFile = "${certs.worker}//apiserver-client-kube-proxy-key.pem";
|
|
|
|
};
|
2017-05-02 23:20:32 +00:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2017-09-09 00:00:35 +00:00
|
|
|
in {
|
|
|
|
services.kubernetes = base;
|
2017-05-02 23:20:32 +00:00
|
|
|
}
|