Skip to content

Commit 4e8b56e

Browse files
authored
Merge pull request kubernetes#91116 from liggitt/local-up-cluster-rotation
Enable kubelet client-cert bootstrap/rotation in local-up-cluster
2 parents c37837e + 734de1b commit 4e8b56e

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

hack/local-up-cluster.sh

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,8 @@ ENABLE_CONTROLLER_ATTACH_DETACH=${ENABLE_CONTROLLER_ATTACH_DETACH:-"true"} # cur
236236
# which should be able to be used as the CA to verify itself
237237
CERT_DIR=${CERT_DIR:-"/var/run/kubernetes"}
238238
ROOT_CA_FILE=${CERT_DIR}/server-ca.crt
239-
ROOT_CA_KEY=${CERT_DIR}/server-ca.key
240-
CLUSTER_SIGNING_CERT_FILE=${CLUSTER_SIGNING_CERT_FILE:-"${ROOT_CA_FILE}"}
241-
CLUSTER_SIGNING_KEY_FILE=${CLUSTER_SIGNING_KEY_FILE:-"${ROOT_CA_KEY}"}
239+
CLUSTER_SIGNING_CERT_FILE=${CLUSTER_SIGNING_CERT_FILE:-"${CERT_DIR}/client-ca.crt"}
240+
CLUSTER_SIGNING_KEY_FILE=${CLUSTER_SIGNING_KEY_FILE:-"${CERT_DIR}/client-ca.key"}
242241
# Reuse certs will skip generate new ca/cert files under CERT_DIR
243242
# it's useful with PRESERVE_ETCD=true because new ca will make existed service account secrets invalided
244243
REUSE_CERTS=${REUSE_CERTS:-false}
@@ -610,6 +609,9 @@ EOF
610609
# Grant apiserver permission to speak to the kubelet
611610
${KUBECTL} --kubeconfig "${CERT_DIR}/admin.kubeconfig" create clusterrolebinding kube-apiserver-kubelet-admin --clusterrole=system:kubelet-api-admin --user=kube-apiserver
612611

612+
# Grant kubelets permission to request client certificates
613+
${KUBECTL} --kubeconfig "${CERT_DIR}/admin.kubeconfig" create clusterrolebinding kubelet-csr --clusterrole=system:certificates.k8s.io:certificatesigningrequests:selfnodeclient --group=system:nodes
614+
613615
${CONTROLPLANE_SUDO} cp "${CERT_DIR}/admin.kubeconfig" "${CERT_DIR}/admin-kube-aggregator.kubeconfig"
614616
${CONTROLPLANE_SUDO} chown "$(whoami)" "${CERT_DIR}/admin-kube-aggregator.kubeconfig"
615617
${KUBECTL} config set-cluster local-up-cluster --kubeconfig="${CERT_DIR}/admin-kube-aggregator.kubeconfig" --server="https://${API_HOST_IP}:31090"
@@ -686,7 +688,7 @@ function wait_node_ready(){
686688
# check the nodes information after kubelet daemon start
687689
local nodes_stats="${KUBECTL} --kubeconfig '${CERT_DIR}/admin.kubeconfig' get nodes"
688690
local node_name=$HOSTNAME_OVERRIDE
689-
local system_node_wait_time=30
691+
local system_node_wait_time=60
690692
local interval_time=2
691693
kube::util::wait_for_success "$system_node_wait_time" "$interval_time" "$nodes_stats | grep $node_name"
692694
if [ $? == "1" ]; then
@@ -770,7 +772,9 @@ function start_kubelet {
770772
"--hostname-override=${HOSTNAME_OVERRIDE}"
771773
"${cloud_config_arg[@]}"
772774
"--address=${KUBELET_HOST}"
773-
--kubeconfig "${CERT_DIR}"/kubelet.kubeconfig
775+
"--bootstrap-kubeconfig=${CERT_DIR}/kubelet.kubeconfig"
776+
"--kubeconfig=${CERT_DIR}/kubelet-rotated.kubeconfig"
777+
"--rotate-certificates=true"
774778
"--feature-gates=${FEATURE_GATES}"
775779
"--cpu-cfs-quota=${CPU_CFS_QUOTA}"
776780
"--enable-controller-attach-detach=${ENABLE_CONTROLLER_ATTACH_DETACH}"
@@ -800,6 +804,9 @@ function start_kubelet {
800804
fi
801805

802806
if [[ "${REUSE_CERTS}" != true ]]; then
807+
# clear previous dynamic certs
808+
sudo rm -fr "/var/lib/kubelet/pki" "${CERT_DIR}/kubelet-rotated.kubeconfig"
809+
# create new certs
803810
generate_kubelet_certs
804811
fi
805812

0 commit comments

Comments
 (0)