mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 19:56:01 +00:00
Merge pull request #91116 from liggitt/local-up-cluster-rotation
Enable kubelet client-cert bootstrap/rotation in local-up-cluster
This commit is contained in:
commit
4e8b56e667
@ -236,9 +236,8 @@ ENABLE_CONTROLLER_ATTACH_DETACH=${ENABLE_CONTROLLER_ATTACH_DETACH:-"true"} # cur
|
|||||||
# which should be able to be used as the CA to verify itself
|
# which should be able to be used as the CA to verify itself
|
||||||
CERT_DIR=${CERT_DIR:-"/var/run/kubernetes"}
|
CERT_DIR=${CERT_DIR:-"/var/run/kubernetes"}
|
||||||
ROOT_CA_FILE=${CERT_DIR}/server-ca.crt
|
ROOT_CA_FILE=${CERT_DIR}/server-ca.crt
|
||||||
ROOT_CA_KEY=${CERT_DIR}/server-ca.key
|
CLUSTER_SIGNING_CERT_FILE=${CLUSTER_SIGNING_CERT_FILE:-"${CERT_DIR}/client-ca.crt"}
|
||||||
CLUSTER_SIGNING_CERT_FILE=${CLUSTER_SIGNING_CERT_FILE:-"${ROOT_CA_FILE}"}
|
CLUSTER_SIGNING_KEY_FILE=${CLUSTER_SIGNING_KEY_FILE:-"${CERT_DIR}/client-ca.key"}
|
||||||
CLUSTER_SIGNING_KEY_FILE=${CLUSTER_SIGNING_KEY_FILE:-"${ROOT_CA_KEY}"}
|
|
||||||
# Reuse certs will skip generate new ca/cert files under CERT_DIR
|
# Reuse certs will skip generate new ca/cert files under CERT_DIR
|
||||||
# it's useful with PRESERVE_ETCD=true because new ca will make existed service account secrets invalided
|
# it's useful with PRESERVE_ETCD=true because new ca will make existed service account secrets invalided
|
||||||
REUSE_CERTS=${REUSE_CERTS:-false}
|
REUSE_CERTS=${REUSE_CERTS:-false}
|
||||||
@ -610,6 +609,9 @@ EOF
|
|||||||
# Grant apiserver permission to speak to the kubelet
|
# Grant apiserver permission to speak to the kubelet
|
||||||
${KUBECTL} --kubeconfig "${CERT_DIR}/admin.kubeconfig" create clusterrolebinding kube-apiserver-kubelet-admin --clusterrole=system:kubelet-api-admin --user=kube-apiserver
|
${KUBECTL} --kubeconfig "${CERT_DIR}/admin.kubeconfig" create clusterrolebinding kube-apiserver-kubelet-admin --clusterrole=system:kubelet-api-admin --user=kube-apiserver
|
||||||
|
|
||||||
|
# Grant kubelets permission to request client certificates
|
||||||
|
${KUBECTL} --kubeconfig "${CERT_DIR}/admin.kubeconfig" create clusterrolebinding kubelet-csr --clusterrole=system:certificates.k8s.io:certificatesigningrequests:selfnodeclient --group=system:nodes
|
||||||
|
|
||||||
${CONTROLPLANE_SUDO} cp "${CERT_DIR}/admin.kubeconfig" "${CERT_DIR}/admin-kube-aggregator.kubeconfig"
|
${CONTROLPLANE_SUDO} cp "${CERT_DIR}/admin.kubeconfig" "${CERT_DIR}/admin-kube-aggregator.kubeconfig"
|
||||||
${CONTROLPLANE_SUDO} chown "$(whoami)" "${CERT_DIR}/admin-kube-aggregator.kubeconfig"
|
${CONTROLPLANE_SUDO} chown "$(whoami)" "${CERT_DIR}/admin-kube-aggregator.kubeconfig"
|
||||||
${KUBECTL} config set-cluster local-up-cluster --kubeconfig="${CERT_DIR}/admin-kube-aggregator.kubeconfig" --server="https://${API_HOST_IP}:31090"
|
${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(){
|
|||||||
# check the nodes information after kubelet daemon start
|
# check the nodes information after kubelet daemon start
|
||||||
local nodes_stats="${KUBECTL} --kubeconfig '${CERT_DIR}/admin.kubeconfig' get nodes"
|
local nodes_stats="${KUBECTL} --kubeconfig '${CERT_DIR}/admin.kubeconfig' get nodes"
|
||||||
local node_name=$HOSTNAME_OVERRIDE
|
local node_name=$HOSTNAME_OVERRIDE
|
||||||
local system_node_wait_time=30
|
local system_node_wait_time=60
|
||||||
local interval_time=2
|
local interval_time=2
|
||||||
kube::util::wait_for_success "$system_node_wait_time" "$interval_time" "$nodes_stats | grep $node_name"
|
kube::util::wait_for_success "$system_node_wait_time" "$interval_time" "$nodes_stats | grep $node_name"
|
||||||
if [ $? == "1" ]; then
|
if [ $? == "1" ]; then
|
||||||
@ -770,7 +772,9 @@ function start_kubelet {
|
|||||||
"--hostname-override=${HOSTNAME_OVERRIDE}"
|
"--hostname-override=${HOSTNAME_OVERRIDE}"
|
||||||
"${cloud_config_arg[@]}"
|
"${cloud_config_arg[@]}"
|
||||||
"--address=${KUBELET_HOST}"
|
"--address=${KUBELET_HOST}"
|
||||||
--kubeconfig "${CERT_DIR}"/kubelet.kubeconfig
|
"--bootstrap-kubeconfig=${CERT_DIR}/kubelet.kubeconfig"
|
||||||
|
"--kubeconfig=${CERT_DIR}/kubelet-rotated.kubeconfig"
|
||||||
|
"--rotate-certificates=true"
|
||||||
"--feature-gates=${FEATURE_GATES}"
|
"--feature-gates=${FEATURE_GATES}"
|
||||||
"--cpu-cfs-quota=${CPU_CFS_QUOTA}"
|
"--cpu-cfs-quota=${CPU_CFS_QUOTA}"
|
||||||
"--enable-controller-attach-detach=${ENABLE_CONTROLLER_ATTACH_DETACH}"
|
"--enable-controller-attach-detach=${ENABLE_CONTROLLER_ATTACH_DETACH}"
|
||||||
@ -800,6 +804,9 @@ function start_kubelet {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "${REUSE_CERTS}" != true ]]; then
|
if [[ "${REUSE_CERTS}" != true ]]; then
|
||||||
|
# clear previous dynamic certs
|
||||||
|
sudo rm -fr "/var/lib/kubelet/pki" "${CERT_DIR}/kubelet-rotated.kubeconfig"
|
||||||
|
# create new certs
|
||||||
generate_kubelet_certs
|
generate_kubelet_certs
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user