Skip to content

Commit 40aa132

Browse files
committed
build large clusters gradually
1 parent fde4351 commit 40aa132

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

hack/create-dev-cluster.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ make envsubst
2929
export REGISTRY="${REGISTRY:-registry.local/fake}"
3030

3131
export CLUSTER_CREATE_ATTEMPTS="${CLUSTER_CREATE_ATTEMPTS:-3}"
32+
if [[ -n "${EXTRA_NODES}" ]]; then
33+
CLUSTER_CREATE_ATTEMPTS=1
34+
fi
3235

3336
# Cluster settings.
3437
export CLUSTER_NAME="${CLUSTER_NAME:-capz-test}"

scripts/ci-entrypoint.sh

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ KUSTOMIZE="${REPO_ROOT}/hack/tools/bin/kustomize"
3131
make --directory="${REPO_ROOT}" "${KUBECTL##*/}" "${HELM##*/}" "${KIND##*/}" "${KUSTOMIZE##*/}"
3232
KIND_CLUSTER_NAME="${KIND_CLUSTER_NAME:-capz}"
3333
WORKER_MACHINE_COUNT="${WORKER_MACHINE_COUNT:-2}"
34+
EXTRA_NODES="${EXTRA_NODES:-0}"
35+
EXTRA_NODES_PER_SCALEOUT="${EXTRA_NODES_PER_SCALEOUT:-100}"
3436
export KIND_CLUSTER_NAME
3537
# export the variables so they are available in bash -c wait_for_nodes below
3638
export KUBECTL
@@ -214,6 +216,29 @@ wait_for_pods() {
214216
done
215217
}
216218

219+
# wait_for_extra_nodes accommodates building large clusters gradually
220+
wait_for_extra_nodes() {
221+
local existing_nodes="${WORKER_MACHINE_COUNT}"
222+
local remaining_extra_nodes="${EXTRA_NODES}"
223+
local total_nodes="$((CONTROL_PLANE_MACHINE_COUNT + WORKER_MACHINE_COUNT + WINDOWS_WORKER_MACHINE_COUNT))"
224+
while [[ "${remaining_extra_nodes}" -gt "${EXTRA_NODES_PER_SCALEOUT}" ]]; do
225+
NEW_REPLICA_COUNT=$((existing_nodes + "${EXTRA_NODES_PER_SCALEOUT}"))
226+
"${KUBECTL}" --kubeconfig "${REPO_ROOT}/${KIND_CLUSTER_NAME}.kubeconfig" scale machinedeployment/"${CLUSTER_NAME}"-md-0 --replicas="${NEW_REPLICA_COUNT}"
227+
total_nodes=$((total_nodes + EXTRA_NODES_PER_SCALEOUT))
228+
while [[ $("${KUBECTL}" get nodes -ojson | jq '.items | length') -ne "${total_nodes}" ]]; do
229+
sleep 10
230+
done
231+
existing_nodes=$((existing_nodes + EXTRA_NODES_PER_SCALEOUT))
232+
remaining_extra_nodes=$((remaining_extra_nodes - EXTRA_NODES_PER_SCALEOUT))
233+
done
234+
NEW_REPLICA_COUNT=$((existing_nodes + remaining_extra_nodes))
235+
"${KUBECTL}" --kubeconfig "${REPO_ROOT}/${KIND_CLUSTER_NAME}.kubeconfig" scale machinedeployment/"${CLUSTER_NAME}"-md-0 --replicas="${NEW_REPLICA_COUNT}"
236+
total_nodes=$((total_nodes + remaining_extra_nodes))
237+
while [[ $("${KUBECTL}" get nodes -ojson | jq '.items | length') -ne "${total_nodes}" ]]; do
238+
sleep 10
239+
done
240+
}
241+
217242
install_addons() {
218243
export -f copy_kubeadm_config_map wait_for_copy_kubeadm_config_map
219244
timeout --foreground 600 bash -c wait_for_copy_kubeadm_config_map
@@ -224,6 +249,10 @@ install_addons() {
224249
timeout --foreground 1800 bash -c wait_for_nodes
225250
export -f wait_for_pods
226251
timeout --foreground 1800 bash -c wait_for_pods
252+
if [ "${EXTRA_NODES}" -gt "0" ]; then
253+
export -f wait_for_extra_nodes
254+
timeout --foreground 10800 bash -c wait_for_extra_nodes
255+
fi
227256
}
228257

229258
copy_secret() {

0 commit comments

Comments
 (0)