Add git01 to k8s cluster pool.
This commit is contained in:
13
certs.nix
13
certs.nix
@@ -51,7 +51,7 @@ let
|
|||||||
DNS.3 = kubernetes.default.svc
|
DNS.3 = kubernetes.default.svc
|
||||||
DNS.4 = kubernetes.default.svc.cluster.local
|
DNS.4 = kubernetes.default.svc.cluster.local
|
||||||
DNS.4 = k8s0-0.itpartner.no
|
DNS.4 = k8s0-0.itpartner.no
|
||||||
IP.1 = 10.10.10.1
|
IP.1 = 10.0.0.1
|
||||||
IP.2 = 10.253.18.100
|
IP.2 = 10.253.18.100
|
||||||
'';
|
'';
|
||||||
|
|
||||||
@@ -65,11 +65,12 @@ let
|
|||||||
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
|
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
|
||||||
subjectAltName = @alt_names
|
subjectAltName = @alt_names
|
||||||
[alt_names]
|
[alt_names]
|
||||||
DNS.1 = k8s0-0
|
DNS.1 = *.itpartner.no
|
||||||
DNS.2 = k8s0-1
|
DNS.2 = *.itpartner.intern
|
||||||
DNS.3 = k8s0-2
|
DNS.3 = k8s0-0
|
||||||
DNS.4 = *.itpartner.no
|
DNS.4 = k8s0-1
|
||||||
DNS.5 = *.itpartner.intern
|
DNS.5 = k8s0-2
|
||||||
|
DNS.6 = git01
|
||||||
'';
|
'';
|
||||||
|
|
||||||
ca_key = runWithOpenSSL "ca-key.pem" "openssl genrsa -out $out 2048";
|
ca_key = runWithOpenSSL "ca-key.pem" "openssl genrsa -out $out 2048";
|
||||||
|
|||||||
110
k8s.nix
110
k8s.nix
@@ -2,6 +2,7 @@ with import ./certs.nix;
|
|||||||
let
|
let
|
||||||
pkgs = import <nixpkgs> {};
|
pkgs = import <nixpkgs> {};
|
||||||
|
|
||||||
|
kube_apiserver = "https://10.253.18.100:443";
|
||||||
etcdServers = [ "etcd0" "etcd1" "etcd2" ];
|
etcdServers = [ "etcd0" "etcd1" "etcd2" ];
|
||||||
etcdEndpoints = builtins.map (x: "https://${x}:2379") etcdServers;
|
etcdEndpoints = builtins.map (x: "https://${x}:2379") etcdServers;
|
||||||
etcdCluster = builtins.map (x: "${x}=https://${x}:2380") etcdServers;
|
etcdCluster = builtins.map (x: "${x}=https://${x}:2380") etcdServers;
|
||||||
@@ -30,55 +31,38 @@ let
|
|||||||
systemd.services.flannel.after = [ "etcd.service" ];
|
systemd.services.flannel.after = [ "etcd.service" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
kubeConfig = {
|
kubeconfig = {
|
||||||
systemd.services.kubelet.path = [ pkgs.socat ];
|
caFile = ca_pem;
|
||||||
services.flannel = {
|
keyFile = worker_key;
|
||||||
enable = true;
|
certFile = worker_cert;
|
||||||
network = "10.10.0.0/16";
|
server = kube_apiserver;
|
||||||
iface = "ens32";
|
|
||||||
etcd = {
|
|
||||||
endpoints = etcdEndpoints;
|
|
||||||
keyFile = etcd_client_key;
|
|
||||||
certFile = etcd_client_cert;
|
|
||||||
caFile = ca_pem;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
networking.firewall.allowedUDPPorts = [ 8472 ]; # VXLAN
|
|
||||||
systemd.services.docker = {
|
|
||||||
after = [ "flannel.service" ];
|
|
||||||
serviceConfig.EnvironmentFile = "/run/flannel/subnet.env";
|
|
||||||
};
|
|
||||||
virtualisation.docker.extraOptions = "--iptables=false --ip-masq=false --bip $FLANNEL_SUBNET --mtu $FLANNEL_MTU";
|
|
||||||
services.kubernetes.etcd = {
|
|
||||||
servers = etcdEndpoints;
|
|
||||||
keyFile = etcd_client_key;
|
|
||||||
certFile = etcd_client_cert;
|
|
||||||
caFile = ca_pem;
|
|
||||||
};
|
|
||||||
# services.kubernetes.verbose = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
kubeNode = {
|
kubeNode = {
|
||||||
services.kubernetes = {
|
services.kubernetes = {
|
||||||
roles = [ "node" ];
|
roles = [ "node" ];
|
||||||
kubeconfig = {
|
kubeconfig = {
|
||||||
server = "https://10.253.18.100:4443";
|
server = kube_apiserver;
|
||||||
keyFile = worker_key;
|
keyFile = worker_key;
|
||||||
certFile = worker_cert;
|
certFile = worker_cert;
|
||||||
caFile = ca_pem;
|
caFile = ca_pem;
|
||||||
};
|
};
|
||||||
kubelet = {
|
kubelet = {
|
||||||
tlsKeyFile = worker_key;
|
enable = true;
|
||||||
tlsCertFile = worker_cert;
|
clientCaFile = ca_pem;
|
||||||
|
tlsKeyFile = worker_key;
|
||||||
|
tlsCertFile = worker_cert;
|
||||||
networkPlugin = null;
|
networkPlugin = null;
|
||||||
clusterDns = "10.253.18.100";
|
# clusterDns = "10.253.18.100";
|
||||||
|
clusterDns = "10.0.0.254";
|
||||||
|
inherit kubeconfig;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
networking = {
|
networking = {
|
||||||
firewall = {
|
firewall = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# trustedInterfaces = [ "flannel.1" "docker0" "veth+" ];
|
# trustedInterfaces = [ "flannel.1" "docker0" "veth+" ];
|
||||||
allowedTCPPorts = [ 53 10250 ];
|
allowedTCPPorts = [ 53 4194 10250 ];
|
||||||
allowedUDPPorts = [ 53 ];
|
allowedUDPPorts = [ 53 ];
|
||||||
extraCommands = ''iptables -m comment --comment "pod external access" -t nat -A POSTROUTING ! -d 10.10.0.0/16 -m addrtype ! --dst-type LOCAL -j MASQUERADE'';
|
extraCommands = ''iptables -m comment --comment "pod external access" -t nat -A POSTROUTING ! -d 10.10.0.0/16 -m addrtype ! --dst-type LOCAL -j MASQUERADE'';
|
||||||
};
|
};
|
||||||
@@ -89,11 +73,12 @@ let
|
|||||||
kubeMaster = {
|
kubeMaster = {
|
||||||
services.kubernetes = {
|
services.kubernetes = {
|
||||||
roles = [ "master" ];
|
roles = [ "master" ];
|
||||||
|
kubelet.unschedulable = true;
|
||||||
apiserver = {
|
apiserver = {
|
||||||
address = "0.0.0.0";
|
address = "0.0.0.0";
|
||||||
publicAddress = "0.0.0.0";
|
publicAddress = "0.0.0.0";
|
||||||
advertiseAddress = "10.253.18.100";
|
advertiseAddress = "10.253.18.100";
|
||||||
securePort = 4443;
|
securePort = 443;
|
||||||
tlsKeyFile = apiserver_key;
|
tlsKeyFile = apiserver_key;
|
||||||
tlsCertFile = apiserver_cert;
|
tlsCertFile = apiserver_cert;
|
||||||
clientCaFile = ca_pem;
|
clientCaFile = ca_pem;
|
||||||
@@ -103,19 +88,40 @@ let
|
|||||||
serviceAccountKeyFile = apiserver_key;
|
serviceAccountKeyFile = apiserver_key;
|
||||||
};
|
};
|
||||||
scheduler.leaderElect = true;
|
scheduler.leaderElect = true;
|
||||||
controllerManager.leaderElect = true;
|
controllerManager = {
|
||||||
controllerManager.serviceAccountKeyFile = apiserver_key;
|
leaderElect = true;
|
||||||
controllerManager.rootCaFile = ca_pem;
|
serviceAccountKeyFile = apiserver_key;
|
||||||
dns.enable = true;
|
rootCaFile = ca_pem;
|
||||||
dns.port = 4053;
|
inherit kubeconfig;
|
||||||
|
};
|
||||||
|
addons.dashboard.enable = true;
|
||||||
|
addons.dns.enable = true;
|
||||||
};
|
};
|
||||||
networking.firewall = {
|
networking.firewall = {
|
||||||
allowedTCPPorts = [ 5000 8080 4443 4053 ];
|
allowedTCPPorts = [ 5000 8080 443 ]; #;4053 ];
|
||||||
allowedUDPPorts = [ 4053 ];
|
# allowedUDPPorts = [ 4053 ];
|
||||||
};
|
};
|
||||||
environment.systemPackages = [ pkgs.kubernetes-helm ];
|
environment.systemPackages = [ pkgs.kubernetes-helm ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
kubeConfig = {
|
||||||
|
services.kubernetes = {
|
||||||
|
verbose = false;
|
||||||
|
caFile = ca_pem;
|
||||||
|
flannel.enable = true;
|
||||||
|
clusterCidr = "10.10.0.0/16";
|
||||||
|
etcd = {
|
||||||
|
servers = etcdEndpoints;
|
||||||
|
keyFile = etcd_client_key;
|
||||||
|
certFile = etcd_client_cert;
|
||||||
|
caFile = ca_pem;
|
||||||
|
};
|
||||||
|
proxy = {
|
||||||
|
inherit kubeconfig;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
baseConfig = node: {
|
baseConfig = node: {
|
||||||
imports = [ (./hw + "/${node}.nix") ./base/configuration.nix ];
|
imports = [ (./hw + "/${node}.nix") ./base/configuration.nix ];
|
||||||
networking = {
|
networking = {
|
||||||
@@ -130,7 +136,7 @@ let
|
|||||||
};
|
};
|
||||||
services.dnsmasq.enable = true;
|
services.dnsmasq.enable = true;
|
||||||
services.dnsmasq.servers = [
|
services.dnsmasq.servers = [
|
||||||
"/cluster.local/10.253.18.100#4053"
|
"/cluster.local/10.0.0.254#53"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -142,7 +148,7 @@ let
|
|||||||
{
|
{
|
||||||
deployment.targetHost = ip;
|
deployment.targetHost = ip;
|
||||||
require = [ base kubeConfig kubeNode ];
|
require = [ base kubeConfig kubeNode ];
|
||||||
services.kubernetes.dns.enable = false;
|
services.kubernetes.addons.dns.enable = false;
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@@ -172,7 +178,7 @@ in
|
|||||||
{
|
{
|
||||||
deployment.targetHost = "10.253.18.101";
|
deployment.targetHost = "10.253.18.101";
|
||||||
require = [ base etcd kubeConfig kubeNode ];
|
require = [ base etcd kubeConfig kubeNode ];
|
||||||
services.kubernetes.dns.enable = false;
|
services.kubernetes.addons.dns.enable = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
k8s0-2 = { config, lib, pkgs, ... }:
|
k8s0-2 = { config, lib, pkgs, ... }:
|
||||||
@@ -183,6 +189,24 @@ in
|
|||||||
{
|
{
|
||||||
deployment.targetHost = "10.253.18.102";
|
deployment.targetHost = "10.253.18.102";
|
||||||
require = [ base etcd kubeConfig kubeNode ];
|
require = [ base etcd kubeConfig kubeNode ];
|
||||||
services.kubernetes.dns.enable = false;
|
services.kubernetes.addons.dns.enable = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
git01 = { config, lib, pkgs, ... }:
|
||||||
|
let
|
||||||
|
base = baseConfig "git01";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
deployment.targetHost = "10.253.18.103";
|
||||||
|
require = [ base kubeConfig kubeNode ];
|
||||||
|
services.kubernetes.addons.dns.enable = false;
|
||||||
|
services.nfs.server = {
|
||||||
|
enable=true;
|
||||||
|
exports= ''
|
||||||
|
/vol 10.253.18.0/24(insecure,rw,sync,no_subtree_check,crossmnt,fsid=0,no_root_squash)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
networking.firewall.allowedTCPPorts = [ 111 2049 ];
|
||||||
|
networking.firewall.allowedUDPPorts = [ 111 2049 ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user