Skip to content

Commit 9dee9d3

Browse files
committed
build large clusters gradually
1 parent fde4351 commit 9dee9d3

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-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: 24 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,26 @@ 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+
sleep 120
237+
}
238+
217239
install_addons() {
218240
export -f copy_kubeadm_config_map wait_for_copy_kubeadm_config_map
219241
timeout --foreground 600 bash -c wait_for_copy_kubeadm_config_map
@@ -224,6 +246,8 @@ install_addons() {
224246
timeout --foreground 1800 bash -c wait_for_nodes
225247
export -f wait_for_pods
226248
timeout --foreground 1800 bash -c wait_for_pods
249+
export -f wait_for_extra_nodes
250+
timeout --foreground 10800 bash -c wait_for_extra_nodes
227251
}
228252

229253
copy_secret() {

0 commit comments

Comments
 (0)