Generate certificates for the aggregation layer.
This commit is contained in:
@@ -106,21 +106,21 @@ let
|
||||
}
|
||||
{
|
||||
dest_dir = "/vm/${vm_name}/persist/keys/etcd";
|
||||
file = "${k8s.ca}/ca.crt";
|
||||
file = "${k8s.ca.client}/client-ca.crt";
|
||||
owner = 10016;
|
||||
group = 10016;
|
||||
mode = "0640";
|
||||
}
|
||||
{
|
||||
dest_dir = "/vm/${vm_name}/persist/keys/kube";
|
||||
file = "${k8s.ca}/ca.crt";
|
||||
file = "${k8s.ca.client}/client-ca.crt";
|
||||
owner = 10024;
|
||||
group = 10024;
|
||||
mode = "0640";
|
||||
}
|
||||
{
|
||||
dest_dir = "/vm/${vm_name}/persist/keys/kube";
|
||||
file = "${k8s.ca}/ca.key";
|
||||
file = "${k8s.ca.client}/client-ca.key";
|
||||
owner = 10024;
|
||||
group = 10024;
|
||||
mode = "0600";
|
||||
@@ -175,6 +175,33 @@ let
|
||||
group = 10024;
|
||||
mode = "0600";
|
||||
}
|
||||
{
|
||||
dest_dir = "/vm/${vm_name}/persist/keys/kube";
|
||||
file = "${k8s.ca.requestheader-client}/requestheader-client-ca.crt";
|
||||
owner = 10024;
|
||||
group = 10024;
|
||||
mode = "0640";
|
||||
}
|
||||
{
|
||||
dest_dir = "/vm/${vm_name}/persist/keys/kube";
|
||||
file = "${
|
||||
k8s.keys."${vm_name_to_hostname vm_name}-proxy"
|
||||
}/${vm_name_to_hostname vm_name}-proxy.crt";
|
||||
name = "proxy.crt";
|
||||
owner = 10024;
|
||||
group = 10024;
|
||||
mode = "0640";
|
||||
}
|
||||
{
|
||||
dest_dir = "/vm/${vm_name}/persist/keys/kube";
|
||||
file = "${
|
||||
k8s.keys."${vm_name_to_hostname vm_name}-proxy"
|
||||
}/${vm_name_to_hostname vm_name}-proxy.key";
|
||||
name = "proxy.key";
|
||||
owner = 10024;
|
||||
group = 10024;
|
||||
mode = "0600";
|
||||
}
|
||||
])
|
||||
)
|
||||
);
|
||||
@@ -193,7 +220,7 @@ let
|
||||
+ (lib.concatMapStringsSep "\n" deploy_file [
|
||||
{
|
||||
dest_dir = "/vm/${vm_name}/persist/keys/kube";
|
||||
file = "${k8s.ca}/ca.crt";
|
||||
file = "${k8s.ca.client}/client-ca.crt";
|
||||
owner = 10024;
|
||||
group = 10024;
|
||||
mode = "0640";
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
[req]
|
||||
distinguished_name = req_distinguished_name
|
||||
prompt = no
|
||||
x509_extensions = ca_x509_extensions
|
||||
|
||||
[ca_x509_extensions]
|
||||
basicConstraints = CA:TRUE
|
||||
keyUsage = cRLSign, keyCertSign
|
||||
|
||||
[req_distinguished_name]
|
||||
C = US
|
||||
ST = Washington
|
||||
L = Seattle
|
||||
CN = CA
|
||||
|
||||
[controller0-proxy]
|
||||
distinguished_name = controller0_distinguished_name
|
||||
prompt = no
|
||||
req_extensions = controller0_req_extensions
|
||||
|
||||
[controller0_req_extensions]
|
||||
basicConstraints = CA:FALSE
|
||||
extendedKeyUsage = clientAuth, serverAuth
|
||||
keyUsage = critical, digitalSignature, keyEncipherment
|
||||
nsCertType = client
|
||||
nsComment = "controller0 Certificate"
|
||||
subjectAltName = @controller0_alt_names
|
||||
subjectKeyIdentifier = hash
|
||||
|
||||
[controller0_distinguished_name]
|
||||
CN = system:node:controller0
|
||||
O = system:nodes
|
||||
C = US
|
||||
ST = Washington
|
||||
L = Seattle
|
||||
|
||||
[controller0_alt_names]
|
||||
IP.0 = 127.0.0.1
|
||||
IP.4 = 10.215.1.221
|
||||
IP.5 = 2620:11f:7001:7:ffff:ffff:0ad7:01dd
|
||||
DNS.0 = controller0
|
||||
|
||||
[controller1-proxy]
|
||||
distinguished_name = controller1_distinguished_name
|
||||
prompt = no
|
||||
req_extensions = controller1_req_extensions
|
||||
|
||||
[controller1_req_extensions]
|
||||
basicConstraints = CA:FALSE
|
||||
extendedKeyUsage = clientAuth, serverAuth
|
||||
keyUsage = critical, digitalSignature, keyEncipherment
|
||||
nsCertType = client
|
||||
nsComment = "controller1 Certificate"
|
||||
subjectAltName = @controller1_alt_names
|
||||
subjectKeyIdentifier = hash
|
||||
|
||||
[controller1_distinguished_name]
|
||||
CN = system:node:controller1
|
||||
O = system:nodes
|
||||
C = US
|
||||
ST = Washington
|
||||
L = Seattle
|
||||
|
||||
[controller1_alt_names]
|
||||
IP.0 = 127.0.0.1
|
||||
IP.4 = 10.215.1.222
|
||||
IP.5 = 2620:11f:7001:7:ffff:ffff:0ad7:01de
|
||||
DNS.0 = controller1
|
||||
|
||||
[controller2-proxy]
|
||||
distinguished_name = controller2_distinguished_name
|
||||
prompt = no
|
||||
req_extensions = controller2_req_extensions
|
||||
|
||||
[controller2_req_extensions]
|
||||
basicConstraints = CA:FALSE
|
||||
extendedKeyUsage = clientAuth, serverAuth
|
||||
keyUsage = critical, digitalSignature, keyEncipherment
|
||||
nsCertType = client
|
||||
nsComment = "controller2 Certificate"
|
||||
subjectAltName = @controller2_alt_names
|
||||
subjectKeyIdentifier = hash
|
||||
|
||||
[controller2_distinguished_name]
|
||||
CN = system:node:controller2
|
||||
O = system:nodes
|
||||
C = US
|
||||
ST = Washington
|
||||
L = Seattle
|
||||
|
||||
[controller2_alt_names]
|
||||
IP.0 = 127.0.0.1
|
||||
IP.6 = 10.215.1.223
|
||||
IP.7 = 2620:11f:7001:7:ffff:ffff:0ad7:01df
|
||||
DNS.0 = controller2
|
||||
@@ -10,23 +10,28 @@
|
||||
{
|
||||
stdenv,
|
||||
openssl,
|
||||
ca_name,
|
||||
ca_config,
|
||||
...
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
name = "k8s-ca";
|
||||
name = "k8s-ca-${ca_name}";
|
||||
nativeBuildInputs = [ openssl ];
|
||||
buildInputs = [ ];
|
||||
|
||||
unpackPhase = "true";
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p "$out"
|
||||
cd "$out"
|
||||
buildPhase = ''
|
||||
openssl genrsa -out "${ca_name}-ca.key" 4096
|
||||
|
||||
openssl genrsa -out ca.key 4096
|
||||
openssl req -x509 -new -sha512 -noenc \
|
||||
-key ca.key -days 3653 \
|
||||
-config ${./files/ca.conf} \
|
||||
-out ca.crt
|
||||
-key "${ca_name}-ca.key" -days 3653 \
|
||||
-config "${ca_config}" \
|
||||
-out "${ca_name}-ca.crt"
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir "$out"
|
||||
cp "${ca_name}-ca.crt" "${ca_name}-ca.key" $out/
|
||||
'';
|
||||
})
|
||||
|
||||
@@ -26,7 +26,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
buildPhase = ''
|
||||
kubectl config set-cluster kubernetes-the-hard-way \
|
||||
--certificate-authority=${k8s.ca}/ca.crt \
|
||||
--certificate-authority=${k8s.ca.client}/client-ca.crt \
|
||||
--embed-certs=true \
|
||||
--server=${lib.strings.escapeShellArg config_server} \
|
||||
--kubeconfig=${config_name}.kubeconfig
|
||||
|
||||
@@ -15,9 +15,9 @@ symlinkJoin {
|
||||
name = "k8s-keys";
|
||||
paths = [
|
||||
scripts
|
||||
k8s.ca
|
||||
k8s.encryption_config
|
||||
]
|
||||
++ (builtins.attrValues k8s.ca)
|
||||
++ (builtins.attrValues k8s.keys)
|
||||
++ (builtins.attrValues k8s.client-configs)
|
||||
++ (builtins.attrValues k8s.ssh-keys)
|
||||
|
||||
@@ -12,6 +12,8 @@
|
||||
openssl,
|
||||
k8s,
|
||||
key_name,
|
||||
ca_name,
|
||||
ca_config,
|
||||
...
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -22,18 +24,18 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
unpackPhase = "true";
|
||||
|
||||
buildPhase = ''
|
||||
cp ${k8s.ca}/ca.crt ${k8s.ca}/ca.key ./
|
||||
cp ${k8s.ca."${ca_name}"}/${ca_name}-ca.crt ${k8s.ca."${ca_name}"}/${ca_name}-ca.key ./
|
||||
|
||||
openssl genrsa -out "${key_name}.key" 4096
|
||||
|
||||
openssl req -new -key "${key_name}.key" -sha256 \
|
||||
-config "${../k8s-ca/files/ca.conf}" -section ${key_name} \
|
||||
-config "${ca_config}" -section ${key_name} \
|
||||
-out "${key_name}.csr"
|
||||
|
||||
openssl x509 -req -days 3653 -in "${key_name}.csr" \
|
||||
-copy_extensions copyall \
|
||||
-sha256 -CA "./ca.crt" \
|
||||
-CAkey "./ca.key" \
|
||||
-sha256 -CA "./${ca_name}-ca.crt" \
|
||||
-CAkey "./${ca_name}-ca.key" \
|
||||
-CAcreateserial \
|
||||
-out "${key_name}.crt"
|
||||
'';
|
||||
|
||||
Reference in New Issue
Block a user