diff --git a/kubernetes/pki/generate.sh b/kubernetes/pki/generate.sh new file mode 100755 index 0000000..7942c48 --- /dev/null +++ b/kubernetes/pki/generate.sh @@ -0,0 +1,272 @@ +#!/usr/bin/env bash +set -euo pipefail + +MASTER_IP="${MASTER_IP:-192.168.122.10}" +SERVICE_CIDR="${SERVICE_CIDR:-10.96.0.0/12}" +CLUSTER_DOMAIN="${CLUSTER_DOMAIN:-cluster.local}" +OUT_DIR="${OUT_DIR:-./pki/out}" + +SERVICE_IP=$(echo "$SERVICE_CIDR" | cut -d/ -f1 | sed 's/\.[0-9]*$/\.1/') +DNS_IP=$(echo "$SERVICE_CIDR" | cut -d/ -f1 | sed 's/\.[0-9]*$/\.10/') + +mkdir -p "$OUT_DIR" + +# --- CA config (signing profiles) --- +cat > "$OUT_DIR/ca-config.json" < "$OUT_DIR/ca-csr.json" < "$OUT_DIR/apiserver-csr.json" < "$OUT_DIR/sa-csr.json" < etcd client --- +cat > "$OUT_DIR/apiserver-etcd-client-csr.json" < kubelet client --- +cat > "$OUT_DIR/apiserver-kubelet-client-csr.json" < proxy client --- +cat > "$OUT_DIR/apiserver-proxy-client-csr.json" < "${prefix}-csr.json" < "$OUT_DIR/kube-proxy-client-csr.json" < "$OUT_DIR/cm-client-csr.json" < "$OUT_DIR/scheduler-client-csr.json" < "$OUT_DIR/admin-csr.json" <.pem -> kubelet.pem on that node): + kubelet-k8s-master-0.pem -> master + kubelet-k8s-worker-0.pem -> worker-0 + kubelet-k8s-worker-1.pem -> worker-1 + kubelet-k8s-worker-2.pem -> worker-2 + +Workers also need: + kube-proxy-client.pem, kube-proxy-client-key.pem + +Cluster admin (on your workstation): + admin.pem, admin-key.pem, ca.pem + +EOF + +# Cleanup CSR/JSON files +rm -f "$OUT_DIR"/*.csr "$OUT_DIR"/*-csr.json "$OUT_DIR"/ca-config.json +echo "Done. Certs in: $OUT_DIR/"